blob: 34d16d4941ce3cbdf607ed4f1fd92400d1beb082 (
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
129
130
131
|
#!/bin/bash
# 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.
echo "---> jjb/scripts/vpp/build.sh"
set -euxo pipefail
line="*************************************************************************"
# Don't build anything if this is a merge job being run when
# the git HEAD id is not the same as the Gerrit New Revision id.
if [[ ${JOB_NAME} == *merge* ]] && [ -n "${GERRIT_NEWREV:-}" ] &&
[ "$GERRIT_NEWREV" != "$GIT_COMMIT" ] ; then
echo -e "\n$line\nSkipping build. A newer patch has been merged.\n$line\n"
exit 0
fi
OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
OS_ARCH=$(uname -m)
DRYRUN="${DRYRUN:-}"
IS_CSIT_VPP_JOB="${IS_CSIT_VPP_JOB:-}"
MAKE_PARALLEL_FLAGS="${MAKE_PARALLEL_FLAGS:-}"
MAKE_PARALLEL_JOBS="${MAKE_PARALLEL_JOBS:-}"
MAKE_TEST_OS="${MAKE_TEST_OS:-ubuntu-22.04}"
MAKE_TEST_MULTIWORKER_OS="${MAKE_TEST_MULTIWORKER_OS:-debian-11}"
VPPAPIGEN_TEST_OS="${VPPAPIGEN_TEST_OS:-${MAKE_TEST_OS}}"
BUILD_RESULT="SUCCESSFULLY COMPLETED"
BUILD_ERROR=""
RETVAL="0"
if [ -n "${MAKE_PARALLEL_FLAGS}" ] ; then
echo "Building VPP. Number of cores for build set with" \
"MAKE_PARALLEL_FLAGS='${MAKE_PARALLEL_FLAGS}'."
elif [ -n "${MAKE_PARALLEL_JOBS}" ] ; then
echo "Building VPP. Number of cores for build set with" \
"MAKE_PARALLEL_JOBS='${MAKE_PARALLEL_JOBS}'."
else
echo "Building VPP. Number of cores not set," \
"using build default ($(grep -c ^processor /proc/cpuinfo))."
fi
make_build_test() {
if ! make UNATTENDED=yes install-dep ; then
BUILD_ERROR="FAILED 'make install-dep'"
return
fi
if ! make UNATTENDED=yes install-ext-deps ; then
BUILD_ERROR="FAILED 'make install-ext-deps'"
return
fi
if ! make UNATTENDED=yes test-dep ; then
BUILD_ERROR="FAILED 'make test-dep'"
return
fi
if ! make UNATTENDED=yes pkg-verify ; then
BUILD_ERROR="FAILED 'make pkg-verify'"
return
fi
if [ "${IS_CSIT_VPP_JOB,,}" == "true" ] ; then
# CSIT jobs don't need to run make test
return
fi
if [ -n "${MAKE_PARALLEL_JOBS}" ] ; then
TEST_JOBS="${MAKE_PARALLEL_JOBS}"
echo "Testing VPP with ${TEST_JOBS} cores."
else
TEST_JOBS="auto"
echo "Testing VPP with automatically calculated number of cores. " \
"See test logs for the exact number."
fi
if [ "${OS_ID}-${OS_VERSION_ID}" == "${VPPAPIGEN_TEST_OS}" ] ; then
if ! src/tools/vppapigen/test_vppapigen.py ; then
BUILD_ERROR="FAILED src/tools/vppapigen/test_vppapigen.py"
return
fi
fi
if [ "${OS_ID}-${OS_VERSION_ID}" == "${MAKE_TEST_OS}" ] ; then
if ! make COMPRESS_FAILED_TEST_LOGS=yes TEST_JOBS="$TEST_JOBS" RETRIES=3 test ; then
BUILD_ERROR="FAILED 'make test'"
return
fi
else
echo "Skip running 'make test' on ${OS_ID}-${OS_VERSION_ID}"
fi
if [ "${OS_ID}-${OS_VERSION_ID}" == "${MAKE_TEST_MULTIWORKER_OS}" ] ; then
if git grep -q VPP_WORKER_CONFIG ; then
if ! make VPP_WORKER_CONFIG="workers 2" COMPRESS_FAILED_TEST_LOGS=yes \
RETRIES=3 TEST_JOBS="$TEST_JOBS" test ; then
BUILD_ERROR="FAILED 'make test' with VPP_WORKER_CONFIG='workers 2'"
return
else
echo -e "\n* VPP ${OS_ID^^}-${OS_VERSION_ID}-${OS_ARCH^^}" \
"MULTIWORKER MAKE TEST SUCCESSFULLY COMPLETED\n"
fi
elif git grep -q VPP_WORKER_COUNT ; then
if ! make VPP_WORKER_COUNT="2" COMPRESS_FAILED_TEST_LOGS=yes \
RETRIES=3 TEST_JOBS="$TEST_JOBS" test ; then
BUILD_ERROR="FAILED 'make test' with VPP_WORKER_CONFIG='workers 2'"
return
else
echo -e "\n* VPP ${OS_ID^^}-${OS_VERSION_ID}-${OS_ARCH^^}" \
"MULTIWORKER MAKE TEST SUCCESSFULLY COMPLETED\n"
fi
else
echo "Skip running MULTIWORKER MAKE TEST on ${OS_ID}-${OS_VERSION_ID}"
fi
fi
}
if [ "${DRYRUN,,}" != "true" ] ; then
make_build_test
fi
if [ -n "$BUILD_ERROR" ] ; then
BUILD_RESULT="$BUILD_ERROR"
RETVAL="1"
fi
echo -e "\n$line\n* VPP ${OS_ID^^}-${OS_VERSION_ID}-${OS_ARCH^^}" \
"BUILD $BUILD_RESULT\n$line\n"
exit $RETVAL
|