summaryrefslogtreecommitdiffstats
path: root/jjb/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'jjb/scripts')
-rw-r--r--jjb/scripts/publish_cov.sh51
-rw-r--r--jjb/scripts/vpp/cov-build.sh106
-rw-r--r--jjb/scripts/vpp/gcc-build.sh78
3 files changed, 157 insertions, 78 deletions
diff --git a/jjb/scripts/publish_cov.sh b/jjb/scripts/publish_cov.sh
new file mode 100644
index 000000000..cdbbcdd86
--- /dev/null
+++ b/jjb/scripts/publish_cov.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# Copyright (c) 2023 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 "---> publish_cov.sh"
+
+set -exuo pipefail
+
+CDN_URL="s3-docs-7day.fd.io"
+bucket="vpp-docs-7day-retention"
+# Use the same bucket path as logs so that the code coverage report can be viewed by
+# s/s3-logs/s3-docs-7day/ in the URL after selecting the logs URL from
+# the jenkins job page.
+bucket_path="$JENKINS_HOSTNAME/$JOB_NAME/$BUILD_NUMBER/"
+
+if [[ ${JOB_NAME} == *verify* ]]; then
+ case "${JOB_NAME}" in
+ *"vpp-cov"*)
+ workspace_dir="${WORKSPACE}/build-root/test-coverage/html"
+ ;;
+ *)
+ die "Unknown job: ${JOB_NAME}"
+ esac
+else
+ die "Unknown job: ${JOB_NAME}"
+fi
+
+export TF_VAR_workspace_dir="$workspace_dir"
+export TF_VAR_bucket_path="$bucket_path"
+export TF_VAR_bucket="$bucket"
+export AWS_SHARED_CREDENTIALS_FILE=$HOME/.aws/credentials
+export AWS_DEFAULT_REGION="us-east-1"
+
+echo "INFO: archiving test coverage to S3 bucket '$bucket'"
+pushd ..
+terraform init -no-color
+terraform apply -no-color -auto-approve
+popd
+
+echo "S3 Test Coverage: <a href=\"https://${CDN_URL}/${bucket_path}\">https://${CDN_URL}/${bucket_path}</a>"
diff --git a/jjb/scripts/vpp/cov-build.sh b/jjb/scripts/vpp/cov-build.sh
new file mode 100644
index 000000000..b5fdeb597
--- /dev/null
+++ b/jjb/scripts/vpp/cov-build.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# Copyright (c) 2023 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/cov-build.sh"
+
+set -euxo pipefail
+
+line="*************************************************************************"
+# Don't build anything if this is a merge job.
+if [[ ${JOB_NAME} == *merge* ]] ; then
+ echo -e "\n$line\nSkipping build."
+ 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_test_coverage_report() {
+ 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 grep -q "${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 grep -q "${OS_ID}-${OS_VERSION_ID}" <<< "${MAKE_TEST_OS}"; then
+ if ! make COMPRESS_FAILED_TEST_LOGS=yes TEST_JOBS="$TEST_JOBS" RETRIES=3 test-cov ; then
+ BUILD_ERROR="FAILED 'make test-cov'"
+ return
+ fi
+ else
+ echo "Skip running 'make test-cov' on ${OS_ID}-${OS_VERSION_ID}"
+ fi
+}
+
+if [ "${DRYRUN,,}" != "true" ] ; then
+ make_test_coverage_report
+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^^}" \
+ "TEST COVERAGE REPORT $BUILD_RESULT\n$line\n"
+exit $RETVAL
diff --git a/jjb/scripts/vpp/gcc-build.sh b/jjb/scripts/vpp/gcc-build.sh
deleted file mode 100644
index 1d8160047..000000000
--- a/jjb/scripts/vpp/gcc-build.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-
-# Copyright (c) 2022 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/gcc-build.sh"
-
-set -euxo pipefail
-
-line="*************************************************************************"
-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:-}"
-BUILD_RESULT="SUCCESSFULLY COMPLETED"
-BUILD_ERROR=""
-RETVAL="0"
-export CC=gcc
-
-make_build_release_build_test_gcov_sanity() {
- 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 build-release ; then
- BUILD_ERROR="FAILED 'make build'"
- return
- fi
- if ! make UNATTENDED=yes build ; then
- BUILD_ERROR="FAILED 'make build'"
- 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
- # TODO: Add 'smoke test' env var to select smoke test cases
- # then update this accordingly. For now pick a few basic suites...
- MAKE_TEST_SUITES="vlib vppinfra vpe_api vapi cli bihash"
- for suite in $MAKE_TEST_SUITES ; do
- if ! make UNATTENDED=yes TESTS_GCOV=1 TEST_JOBS="$TEST_JOBS" TEST=$suite test ; then
- BUILD_ERROR="FAILED 'make TESTS_GCOV=1 TEST_JOBS=$TEST_JOBS TEST=$suite test'!"
- return
- fi
- if ! make UNATTENDED=yes TESTS_GCOV=1 TEST_JOBS="$TEST_JOBS" TEST=$suite test-debug ; then
- BUILD_ERROR="FAILED 'make TESTS_GCOV=1 TEST_JOBS=$TEST_JOBS TEST=$suite test-debug'!"
- return
- fi
- done
-}
-
-if [ "${DRYRUN,,}" != "true" ] ; then
- make_build_release_build_test_gcov_sanity
-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^^} GCC BUILD $BUILD_RESULT\n$line\n"
-exit $RETVAL