From 75fdf175f9ac2af2b13853df22451ff9f0d0606b Mon Sep 17 00:00:00 2001 From: Vratko Polak Date: Wed, 13 Dec 2023 18:11:20 +0100 Subject: feat(vpp): add a new job for bisecting Change-Id: I8856e5cde4b85edd01a2c10af88823890c3afcb1 Signed-off-by: Vratko Polak --- jjb/scripts/vpp/copy_archives.sh | 10 ++-- jjb/scripts/vpp/csit-bisect.sh | 38 +++++++++++++++ jjb/vpp/vpp.yaml | 99 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+), 5 deletions(-) create mode 100644 jjb/scripts/vpp/csit-bisect.sh (limited to 'jjb') diff --git a/jjb/scripts/vpp/copy_archives.sh b/jjb/scripts/vpp/copy_archives.sh index d69ca7e48..dafcd4aef 100644 --- a/jjb/scripts/vpp/copy_archives.sh +++ b/jjb/scripts/vpp/copy_archives.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021 Cisco and/or its affiliates. +# 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: @@ -30,9 +30,9 @@ set +e # Variables read: # - WORKSPACE - Jenkins workspace to create csit subdirectory in. # Directories updated: -# - ${WORKSPACE}/archives/csit_current - Current patch results are copied here. -# - ${WORKSPACE}/archives/csit_parent - Parent patch results are copied here. +# - ${WORKSPACE}/archives/csit_* - Test results for various VPP builds are here. +# e.g. csit_current and csit_parent for vpp per-patch perf job. mkdir -p "${WORKSPACE}/archives" -cp -Rv "${WORKSPACE}/csit_current" "${WORKSPACE}/archives" -cp -Rv "${WORKSPACE}/csit_parent" "${WORKSPACE}/archives" +# Using asterisk as bisect job creates variable number of directories. +cp -Rv "${WORKSPACE}/csit_"* "${WORKSPACE}/archives" diff --git a/jjb/scripts/vpp/csit-bisect.sh b/jjb/scripts/vpp/csit-bisect.sh new file mode 100644 index 000000000..0a264dbc8 --- /dev/null +++ b/jjb/scripts/vpp/csit-bisect.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env 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. + +set -exuo pipefail + +# Clone CSIT git repository and proceed with entry script located there. +# +# Variables read: +# - WORKSPACE - Jenkins workspace to create csit subdirectory in. +# - CSIT_REF - Override ref of CSIT git repository to checkout. +# Directories updated: +# - ${WORKSPACE}/csit - Created, holding a checked out CSIT repository. +# - Multiple other side effects by entry script(s), see CSIT repository. + +cd "${WORKSPACE}" +git clone https://gerrit.fd.io/r/csit --depth=1 --no-single-branch --no-checkout +pushd "${WORKSPACE}/csit" +if [[ -n "${CSIT_REF-}" ]]; then + git fetch --depth=1 https://gerrit.fd.io/r/csit "${CSIT_REF}" + git checkout FETCH_HEAD +else + git checkout HEAD +fi +popd +csit_entry_dir="${WORKSPACE}/csit/resources/libraries/bash/entry" +source "${csit_entry_dir}/with_oper_for_vpp.sh" "bisect.sh" diff --git a/jjb/vpp/vpp.yaml b/jjb/vpp/vpp.yaml index 03e3cbb30..fde054200 100644 --- a/jjb/vpp/vpp.yaml +++ b/jjb/vpp/vpp.yaml @@ -256,6 +256,7 @@ name: vpp-csit-verify-perf jobs: - 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}' + - 'vpp-csit-bisect-{stream}-{os}-{executor-arch}-{testbed-arch}' project: 'vpp' skip-vote: 'false' stream: @@ -1021,6 +1022,104 @@ - fdio-infra-publish # [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE +# VPP-CSIT-BISECT JOB TEMPLATE +- job-template: + name: 'vpp-csit-bisect-{stream}-{os}-{executor-arch}-{testbed-arch}' + description: | + + + project-type: freestyle + node: 'builder-{os}-prod-{executor-arch}' + concurrent: true + latest-only: false + + properties: + - lf-infra-properties: + build-days-to-keep: "{build-days-to-keep}" + + # Please keep parameters in alphabetical order + parameters: + - csit-perf-trial-duration-parameter: + csit-perf-trial-duration: "1.0" + - csit-perf-trial-multiplicity-parameter: + csit-perf-trial-multiplicity: "60" + - gerrit-csit-refspec-parameter + - gerrit-event-comment-text-parameter + - gerrit-event-type-parameter + - gerrit-refspec-parameter: + refspec: '{branch-refspec}' + - gerrit-parameter: + branch: '{branch}' + - make-parallel-jobs-parameter: + make-parallel-jobs: '{make-parallel-jobs}' + - os-parameter: + os: '{os}' + - project-parameter: + project: '{project}' + - stream-parameter: + stream: '{stream}' + + scm: + - gerrit-trigger-scm: + credentials-id: 'jenkins-gerrit-credentials' + refspec: '$GERRIT_REFSPEC' + choosing-strategy: 'gerrit' + + wrappers: + - fdio-infra-wrappers-non-activity-timeout: + build-timeout: 300 + + triggers: + - gerrit-trigger-csit-perftest: + project: '{project}' + branch: '{branch}' + trigger-word: 'bisecttest-{testbed-arch}' + skip-vote: true + + builders: + - shell: + !include-raw-escape: + - ../scripts/setup_executor_env.sh + - shell: + !include-raw-escape: + - ../scripts/setup_vpp_ubuntu_docker_test.sh + - shell: + !include-raw-escape: + - ../scripts/setup_vpp_ext_deps.sh + - shell: + !include-raw-escape: + - ../scripts/vpp/csit-bisect.sh + + publishers: + - postbuildscript: + # Can be removed when all CSIT branches use correct archive directory. + builders: + - build-on: + - ABORTED + - FAILURE + - NOT_BUILT + - SUCCESS + - UNSTABLE + build-steps: + - shell: + !include-raw-escape: + - ../scripts/vpp/copy_archives.sh + - fdio-infra-publish +# [end] VPP-CSIT-BISECT JOB TEMPLATE + # VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE - job-template: name: 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}' -- cgit 1.2.3-korg