diff options
Diffstat (limited to 'jjb/scripts')
-rw-r--r-- | jjb/scripts/publish_cov.sh | 51 | ||||
-rw-r--r-- | jjb/scripts/vpp/cov-build.sh | 106 | ||||
-rw-r--r-- | jjb/scripts/vpp/gcc-build.sh | 78 |
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 |