blob: e5484b02e9afff0c202a24555f9020f0a5086fad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# Copyright (c) 2021 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#!/bin/bash
set -euxo pipefail
APT_PATH=$(which apt-get) || true
apt_get=${APT_PATH:-"/usr/local/bin/apt-get"}
# Cmake executable
CMAKE_INSTALL_DIR="/opt/cmake"
export PATH=:${CMAKE_INSTALL_DIR}/bin:${PATH}
# Figure out what system we are running on
if [ -f /etc/os-release ]; then
. /etc/os-release
else
echo "ERROR: System configuration not recognized. Build failed"
exit 1
fi
COLLECTD_SOURCE="https://github.com/collectd/collectd/releases/download/collectd-5.12.0/collectd-5.12.0.tar.bz2"
function install_collectd_headers() {
curl -OL ${COLLECTD_SOURCE}
tar -xf collectd-5.12.0.tar.bz2
pushd collectd-5.12.0
./configure && make -j$(nproc)
popd
export COLLECTD_HOME=${PWD}/collectd-5.12.0/src
}
# Call a function once
function call_once() {
# OP_NAME is the name of the function
OP_NAME=${1}
# If function was already called return
[[ -f /tmp/${OP_NAME} ]] && return 0
# Otherwise call the function
${@}
# And mark the function as called if no error occurred
echo ${OP_NAME} >/tmp/${OP_NAME}
}
# Install dependencies
function install_deps() {
make -C ${SCRIPT_PATH}/.. deps
}
function setup() {
echo DISTRIBUTION: ${PRETTY_NAME}
# export variables depending on the platform we are running
call_once install_deps
call_once install_collectd_headers
}
function setup_extras() {
echo DISTRIBUTION: ${PRETTY_NAME}
# export variables depending on the platform we are running
call_once install_deps
call_once install_collectd_headers
}
# Download artifacts of this patchset from jenkins
function download_artifacts() {
if [[ -n ${GERRIT_HOST:-} ]] &&
[[ -n ${GERRIT_CHANGE_NUMBER:-} ]] &&
[[ -n ${GERRIT_PATCHSET_NUMBER:-} ]]; then
# Retrieve the Jenkins URL of the build relative to this PATCHSET
JENKINS_URL=$(
curl -s "https://${GERRIT_HOST}/r/changes/${GERRIT_CHANGE_NUMBER}/detail" |
tail -n +2 | jq '.messages[].message?' |
grep -E "Patch Set ${GERRIT_PATCHSET_NUMBER}:.*hicn-verify-build.*build_success-hicn-ubuntu2004-$(uname -m)" |
grep -Eo "https?://jenkins.fd.io/job/hicn-verify-build-hicn-ubuntu2004-$(uname -m)[^ ]+"
)
ARTIFACTS_URL="${JENKINS_URL}/artifact/packages/*zip*/packages.zip"
# Download artifacts
curl -o "${SCRIPT_PATH}/../packages.zip" -L "${ARTIFACTS_URL}"
# Unzip them
unzip "${SCRIPT_PATH}/../packages.zip" -d "${SCRIPT_PATH}/.."
return 0
fi
# Fall back to image re-build if artifacts cannot be downloaded
echo "GERRIT_* environment is not set. Image will be rebuilt from scratch" >&2
return 1
}
# Run functional tests
function functional_test() {
echo "*******************************************************************"
echo "********************* STARTING FUNCTIONAL TESTS *******************"
echo "*******************************************************************"
if download_artifacts; then
local build_sw=0
local dockerfile_path="tests/Dockerfile.ci"
else
local build_sw=1
local dockerfile_path="Dockerfile.dev"
fi
# Run functional tests
pushd ${SCRIPT_PATH}/../tests
BUILD_SOFTWARE=${build_sw} DOCKERFILE=${dockerfile_path} bash ./run-functional.sh
popd
echo "*******************************************************************"
echo "********** FUNCTIONAL TESTS COMPLETED SUCCESSFULLY ***************"
echo "*******************************************************************"
}
|