Refactor vpp job names to align with jenkins labels 60/28960/7
authorDave Wallace <dwallacelf@gmail.com>
Sat, 19 Sep 2020 02:31:07 +0000 (02:31 +0000)
committerDave Wallace <dwallacelf@gmail.com>
Tue, 22 Sep 2020 18:36:55 +0000 (18:36 +0000)
- Switch to using fdiotools docker repos using
  associated jenkins labels.
- Align vpp job names with docker repos and tags.
- Normalize project attributes (including order)
  across vpp project definitions.
- Add branch-head-refspec attribute for testing.
- Refactor projects to allow finer granularity
  definition of {stream}-{os}-{executor-arch}
  based jobs.
- Add 2009 stream to vpp-csit-verify-api-crc.
- Add vpp-verify-gcc job for gcov testing.

New list of VPP jobs:

$ jjsb-test vpp-* 2>&1 | grep -e'Number of jobs' -e'Job name' | sed -e 's/INFO:jenkins_jobs.builder://g'
Number of jobs generated:  126
Job name:  vpp-beta-merge-master-centos8-aarch64
Job name:  vpp-beta-merge-master-centos8-x86_64
Job name:  vpp-beta-merge-master-debian9-x86_64
Job name:  vpp-beta-merge-master-debian10-x86_64
Job name:  vpp-beta-verify-master-centos8-aarch64
Job name:  vpp-beta-verify-master-centos8-x86_64
Job name:  vpp-beta-verify-master-debian9-x86_64
Job name:  vpp-beta-verify-master-debian10-x86_64
Job name:  vpp-checkstyle-verify-1908-x86_64
Job name:  vpp-checkstyle-verify-2001-x86_64
Job name:  vpp-checkstyle-verify-2005-x86_64
Job name:  vpp-checkstyle-verify-2009-x86_64
Job name:  vpp-checkstyle-verify-master-x86_64
Job name:  vpp-csit-verify-api-crc-1908
Job name:  vpp-csit-verify-api-crc-2009
Job name:  vpp-csit-verify-api-crc-master
Job name:  vpp-csit-verify-device-1908-1n-skx
Job name:  vpp-csit-verify-device-1908-1n-tx2
Job name:  vpp-csit-verify-device-2001-1n-skx
Job name:  vpp-csit-verify-device-2001-1n-tx2
Job name:  vpp-csit-verify-device-2005-1n-skx
Job name:  vpp-csit-verify-device-2005-1n-tx2
Job name:  vpp-csit-verify-device-2009-1n-skx
Job name:  vpp-csit-verify-device-2009-1n-tx2
Job name:  vpp-csit-verify-device-master-1n-skx
Job name:  vpp-csit-verify-device-master-1n-tx2
Job name:  vpp-csit-verify-perf-1908-2n-clx
Job name:  vpp-csit-verify-perf-1908-2n-dnv
Job name:  vpp-csit-verify-perf-1908-2n-skx
Job name:  vpp-csit-verify-perf-1908-3n-dnv
Job name:  vpp-csit-verify-perf-1908-3n-hsw
Job name:  vpp-csit-verify-perf-1908-3n-skx
Job name:  vpp-csit-verify-perf-1908-3n-tsh
Job name:  vpp-csit-verify-perf-2001-2n-clx
Job name:  vpp-csit-verify-perf-2001-2n-dnv
Job name:  vpp-csit-verify-perf-2001-2n-skx
Job name:  vpp-csit-verify-perf-2001-3n-dnv
Job name:  vpp-csit-verify-perf-2001-3n-hsw
Job name:  vpp-csit-verify-perf-2001-3n-skx
Job name:  vpp-csit-verify-perf-2001-3n-tsh
Job name:  vpp-csit-verify-perf-2005-2n-clx
Job name:  vpp-csit-verify-perf-2005-2n-dnv
Job name:  vpp-csit-verify-perf-2005-2n-skx
Job name:  vpp-csit-verify-perf-2005-3n-dnv
Job name:  vpp-csit-verify-perf-2005-3n-hsw
Job name:  vpp-csit-verify-perf-2005-3n-skx
Job name:  vpp-csit-verify-perf-2005-3n-tsh
Job name:  vpp-csit-verify-perf-2009-2n-clx
Job name:  vpp-csit-verify-perf-2009-2n-dnv
Job name:  vpp-csit-verify-perf-2009-2n-skx
Job name:  vpp-csit-verify-perf-2009-3n-dnv
Job name:  vpp-csit-verify-perf-2009-3n-hsw
Job name:  vpp-csit-verify-perf-2009-3n-skx
Job name:  vpp-csit-verify-perf-2009-3n-tsh
Job name:  vpp-csit-verify-perf-master-2n-clx
Job name:  vpp-csit-verify-perf-master-2n-dnv
Job name:  vpp-csit-verify-perf-master-2n-skx
Job name:  vpp-csit-verify-perf-master-3n-dnv
Job name:  vpp-csit-verify-perf-master-3n-hsw
Job name:  vpp-csit-verify-perf-master-3n-skx
Job name:  vpp-csit-verify-perf-master-3n-tsh
Job name:  vpp-debug-verify-2009-ubuntu1804-x86_64
Job name:  vpp-debug-verify-master-ubuntu1804-x86_64
Job name:  vpp-docs-merge-1908
Job name:  vpp-docs-merge-2001
Job name:  vpp-docs-merge-2005
Job name:  vpp-docs-merge-2009
Job name:  vpp-docs-merge-master
Job name:  vpp-docs-verify-1908
Job name:  vpp-docs-verify-2001
Job name:  vpp-docs-verify-2005
Job name:  vpp-docs-verify-2009
Job name:  vpp-docs-verify-master
Job name:  vpp-gcc-verify-2009-ubuntu2004-x86_64
Job name:  vpp-gcc-verify-master-ubuntu2004-x86_64
Job name:  vpp-info-yaml-verify
Job name:  vpp-make-test-docs-merge-1908
Job name:  vpp-make-test-docs-merge-2001
Job name:  vpp-make-test-docs-merge-2005
Job name:  vpp-make-test-docs-merge-2009
Job name:  vpp-make-test-docs-merge-master
Job name:  vpp-make-test-docs-verify-1908
Job name:  vpp-make-test-docs-verify-2001
Job name:  vpp-make-test-docs-verify-2005
Job name:  vpp-make-test-docs-verify-2009
Job name:  vpp-make-test-docs-verify-master
Job name:  vpp-merge-1908-centos7-x86_64
Job name:  vpp-merge-1908-ubuntu1804-aarch64
Job name:  vpp-merge-1908-ubuntu1804-x86_64
Job name:  vpp-merge-2001-centos7-x86_64
Job name:  vpp-merge-2001-ubuntu1804-aarch64
Job name:  vpp-merge-2001-ubuntu1804-x86_64
Job name:  vpp-merge-2005-centos7-x86_64
Job name:  vpp-merge-2005-ubuntu1804-aarch64
Job name:  vpp-merge-2005-ubuntu1804-x86_64
Job name:  vpp-merge-2009-centos7-x86_64
Job name:  vpp-merge-2009-ubuntu1804-aarch64
Job name:  vpp-merge-2009-ubuntu1804-x86_64
Job name:  vpp-merge-2009-ubuntu2004-aarch64
Job name:  vpp-merge-2009-ubuntu2004-x86_64
Job name:  vpp-merge-master-centos7-x86_64
Job name:  vpp-merge-master-ubuntu1804-aarch64
Job name:  vpp-merge-master-ubuntu1804-x86_64
Job name:  vpp-merge-master-ubuntu2004-aarch64
Job name:  vpp-merge-master-ubuntu2004-x86_64
Job name:  vpp-sphinx-docs-merge-master
Job name:  vpp-sphinx-docs-verify-master
Job name:  vpp-verify-1908-centos7-x86_64
Job name:  vpp-verify-1908-ubuntu1804-aarch64
Job name:  vpp-verify-1908-ubuntu1804-x86_64
Job name:  vpp-verify-2001-centos7-x86_64
Job name:  vpp-verify-2001-ubuntu1804-aarch64
Job name:  vpp-verify-2001-ubuntu1804-x86_64
Job name:  vpp-verify-2005-centos7-x86_64
Job name:  vpp-verify-2005-ubuntu1804-aarch64
Job name:  vpp-verify-2005-ubuntu1804-x86_64
Job name:  vpp-verify-2009-centos7-x86_64
Job name:  vpp-verify-2009-ubuntu1804-aarch64
Job name:  vpp-verify-2009-ubuntu1804-x86_64
Job name:  vpp-verify-2009-ubuntu2004-aarch64
Job name:  vpp-verify-2009-ubuntu2004-x86_64
Job name:  vpp-verify-master-centos7-x86_64
Job name:  vpp-verify-master-ubuntu1804-aarch64
Job name:  vpp-verify-master-ubuntu1804-x86_64
Job name:  vpp-verify-master-ubuntu2004-aarch64
Job name:  vpp-verify-master-ubuntu2004-x86_64

Change-Id: I46e786a2092043aa95baa12a24ea9531683f7d6f
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
jjb/scripts/vpp/gcc-build.sh [new file with mode: 0644]
jjb/vpp/vpp.yaml

diff --git a/jjb/scripts/vpp/gcc-build.sh b/jjb/scripts/vpp/gcc-build.sh
new file mode 100644 (file)
index 0000000..6f8b8f6
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+# basic build script example
+set -xe -o pipefail
+
+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')
+
+echo OS_ID: $OS_ID
+echo OS_VERSION_ID: $OS_VERSION_ID
+
+# do nothing but print the current slave hostname
+hostname
+
+echo "cat /etc/bootstrap.sha"
+if [ -f /etc/bootstrap.sha ];then
+    cat /etc/bootstrap.sha
+else
+    echo "Cannot find cat /etc/bootstrap.sha"
+fi
+
+echo "cat /etc/bootstrap-functions.sha"
+if [ -f /etc/bootstrap-functions.sha ];then
+    cat /etc/bootstrap-functions.sha
+else
+    echo "Cannot find cat /etc/bootstrap-functions.sha"
+fi
+
+echo "sha1sum of this script: ${0}"
+sha1sum $0
+export CC=gcc
+
+make UNATTENDED=yes install-dep
+make UNATTENDED=yes install-ext-deps
+make UNATTENDED=yes build
+# 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 vom bihash"
+for suite in $MAKE_TEST_SUITES ; do
+    make UNATTENDED=yes GCOV_TESTS=1 TEST_JOBS=auto TEST=$suite test
+    make UNATTENDED=yes GCOV_TESTS=1 TEST_JOBS=auto TEST=$suite test-debug
+done
+
+echo "*******************************************************************"
+echo "* VPP GCC BUILD SUCCESSFULLY COMPLETED"
+echo "*******************************************************************"
index b761f39..ebdbadc 100644 (file)
 ---
+# PROJECT DEFINITIONS
+#
+# Please keep projects grouped in this order:
+#     vpp-x86_64, vpp-aarch64, vpp-csit
+#
+# NOTES:
+#   - The 'branch-head-refspec' attribute is used for sandbox testing.
+#         Use the get_gerrit_refspec() bash function in
+#         .../ci-management/docker/scripts/lib_common.sh
+#         to query gerrit for the refspec of HEAD in a branch.
+#         TODO: see if there is a refspec that works without requiring
+#               use of get_gerrit_refspec and hand entering the result
+#               in the WebUI 'Build With Parameters' gerrit refspec field.
+#   - Use the following to import get_gerrit_refspec into a bash shell 
+#         from the ci-management directory:
+#         $ eval "$(grep -A12 get_gerrit ./docker/scripts/lib_common.sh)"
+# [end] NOTES
+
+# VPP-CHECKSTYLE-X86_64 PROJECT
 - project:
-    name: vpp
+    name: vpp-checkstyle-x86_64
     jobs:
-      - 'vpp-verify-{stream}-{os}'
-      - 'vpp-verify-{stream}-debug'
-      - 'vpp-merge-{stream}-{os}'
-
+      - 'vpp-checkstyle-verify-{stream}-{executor-arch}'
     project: 'vpp'
-    executor-arch: 'x86_64'
-    executor-os: 'ubuntu1804'
-    os:
-      - ubuntu1804:
-          repo-os-part: 'ubuntu.bionic.main'
-      - centos7:
-          repo-os-part: 'centos7'
-
     stream:
       - master:
           branch: 'master'
           repo-stream-part: 'master'
+          branch-head-refspec: ''
       - '1908':
           branch: 'stable/1908'
           repo-stream-part: 'stable.1908'
+          branch-head-refspec: ''
       - '2001':
           branch: 'stable/2001'
           repo-stream-part: 'stable.2001'
+          branch-head-refspec: ''
       - '2005':
           branch: 'stable/2005'
           repo-stream-part: 'stable.2005'
+          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
           repo-stream-part: 'stable.2009'
+          branch-head-refspec: ''
+    os: 'ubuntu1804'
+    executor-arch: 'x86_64'
+# [end] VPP-CHECKSTYLE-X86_64 PROJECT
 
+# VPP-X86_64 PROJECT
 - project:
-    name: vpp-beta
+    name: vpp-x86_64
     jobs:
-      - 'vpp-beta-verify-{stream}-{os}'
-      - 'vpp-beta-merge-{stream}-{os}'
-
+      - 'vpp-verify-{stream}-{os}-{executor-arch}'
+      - 'vpp-merge-{stream}-{os}-{executor-arch}'
     project: 'vpp'
+    make-parallel-jobs: '4'
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+          branch-head-refspec: ''
+      - '1908':
+          branch: 'stable/1908'
+          repo-stream-part: 'stable.1908'
+          branch-head-refspec: ''
+      - '2001':
+          branch: 'stable/2001'
+          repo-stream-part: 'stable.2001'
+          branch-head-refspec: ''
+      - '2005':
+          branch: 'stable/2005'
+          repo-stream-part: 'stable.2005'
+          branch-head-refspec: ''
+      - '2009':
+          branch: 'stable/2009'
+          repo-stream-part: 'stable.2009'
+          branch-head-refspec: ''
+    os:
+      - ubuntu1804:
+          repo-os-part: 'ubuntu.bionic.main'
+      - centos7:
+          repo-os-part: 'centos7'
     executor-arch: 'x86_64'
+# [end] VPP-X86_64 PROJECT
+
+# VPP-OS-IN-2009-X86_64 PROJECT
+#
+# This project is used to separate streams which are only
+# supported on the OS in the release in which it was added
+# or later releases.
+#
+# For each 'os-in-XXXX', the stream for the release is
+# added here in addition to the 'vpp-x86_64' project.
+# Each subsequent release is also added to both.
+#
+# When all of the streams older than the 'os-in-XXXX" have
+# been removed from the 'vpp-x86_64' project, then the OSes
+# in this project get moved to the 'vpp-x86_64' project and
+# this project gets deleted or commented out if it is only
+# 'os-in-XXXX' project.
+#
+- project:
+    name: vpp-os-in-2009-x86_64
+    jobs:
+      - 'vpp-verify-{stream}-{os}-{executor-arch}'
+      - 'vpp-merge-{stream}-{os}-{executor-arch}'
+    project: 'vpp'
+    make-parallel-jobs: '4'
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+          branch-head-refspec: ''
+      - '2009':
+          branch: 'stable/2009'
+          repo-stream-part: 'stable.2009'
+          branch-head-refspec: ''
     os:
       - ubuntu2004:
           repo-os-part: 'ubuntu.focal.main'
+    executor-arch: 'x86_64'
+# [end] VPP-OS-IN-2009-X86_64 PROJECT
+
+# VPP-DEBUG-X86_64 PROJECT
+#
+# Currently a Non-Voting job due to intermittent failures.
+# Limiting branches to master and 2009, since other branches
+# may not get fixes for the intermittent failures.
+#
+- project:
+    name: vpp-debug-x86_64
+    jobs:
+      - 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
+    project: 'vpp'
+    make-parallel-jobs: '4'
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+          branch-head-refspec: ''
+      - '2009':
+          branch: 'stable/2009'
+          repo-stream-part: 'stable.2009'
+          branch-head-refspec: ''
+    os:
+      - ubuntu1804:
+          repo-os-part: 'ubuntu.bionic.main'
+    executor-arch: 'x86_64'
+# [end] VPP-DEBUG-X86_64 PROJECT
+
+# VPP-BETA-X86_64 PROJECT
+#
+# Beta jobs are experimental jobs for testing new OS versions on master.
+#
+# They are only manually triggered.  Either using the Jenkins WebUI
+# 'Build with Parameters' to run a single job or adding 'vpp-beta-verify'
+# or 'vpp-beta-merge' as a comment to run all beta verify or merge jobs.
+#
+# Once testing  is complete, the os is moved to the current
+# 'vpp-os-in-XXXX-x86_64' project. If no OSes are being
+# tested then this project should be commented out.
+#
+- project:
+    name: vpp-beta-x86_64
+    jobs:
+      - 'vpp-beta-verify-{stream}-{os}-{executor-arch}':
+          comment-trigger-value: 'vpp-beta-verify'
+      - 'vpp-beta-merge-{stream}-{os}-{executor-arch}':
+          comment-trigger-value: 'vpp-beta-merge'
+    project: 'vpp'
+    make-parallel-jobs: '4'
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+          branch-head-refspec: ''
+    os:
       - centos8:
           repo-os-part: 'centos8'
-
+      - debian9:
+          repo-os-part: 'stretch'
+      - debian10:
+          repo-os-part: 'buster'
+    executor-arch: x86_64
+# [end] VPP-BETA-X86_64 PROJECT
+
+# VPP-GCC-X86_64 PROJECT
+- project:
+    name: vpp-gcc-x86_64
+    jobs:
+      - 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
+    project: 'vpp'
+    executor-arch: 'x86_64'
+    os:
+      - ubuntu2004:
+          repo-os-part: 'ubuntu.focal.main'
     stream:
       - master:
           branch: 'master'
       - '2009':
           branch: 'stable/2009'
           repo-stream-part: 'stable.2009'
+# [end] VPP-GCC-X86_64 PROJECT
 
+# VPP-AARCH64 PROJECT
 - project:
-    name: vpp-misc
+    name: vpp-aarch64
     jobs:
-      - 'vpp-checkstyle-verify-{stream}'
+      - 'vpp-verify-{stream}-{os}-{executor-arch}'
+      - 'vpp-merge-{stream}-{os}-{executor-arch}'
     project: 'vpp'
-    executor-arch: 'x86_64'
+    make-parallel-jobs: '16'
     stream:
       - master:
           branch: 'master'
           repo-stream-part: 'master'
+          branch-head-refspec: ''
       - '1908':
           branch: 'stable/1908'
           repo-stream-part: 'stable.1908'
+          branch-head-refspec: ''
       - '2001':
           branch: 'stable/2001'
           repo-stream-part: 'stable.2001'
+          branch-head-refspec: ''
       - '2005':
           branch: 'stable/2005'
           repo-stream-part: 'stable.2005'
+          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
           repo-stream-part: 'stable.2009'
-    os: 'ubuntu1804'
+          branch-head-refspec: ''
+    os:
+      - ubuntu1804:
+          repo-os-part: 'ubuntu-arm.bionic.main'
+    executor-arch: 'aarch64'
+# [end] VPP-AARCH64 PROJECT
+
+# VPP-OS-IN-2009-AARCH64 PROJECT
+#
+# This project is used to separate streams which are only
+# supported on the OS in the release in which it was added
+# or later releases.
+#
+# For each 'os-in-XXXX', the stream for the release is
+# added here in addition to the 'vpp-aarch64' project.
+# Each subsequent release is also added to both.
+#
+# When all of the streams older than the 'os-in-XXXX" have
+# been removed from the 'vpp-aarch64' project, then the OSes
+# in this project get moved to the 'vpp-aarch64' project and
+# this project gets deleted or commented out if it is only
+# 'os-in-XXXX' project.
+#
+- project:
+    name: vpp-os-in-2009-aarch64
+    jobs:
+      - 'vpp-verify-{stream}-{os}-{executor-arch}'
+      - 'vpp-merge-{stream}-{os}-{executor-arch}'
 
+    project: 'vpp'
+    make-parallel-jobs: '16'
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+          branch-head-refspec: ''
+      - '2009':
+          branch: 'stable/2009'
+          repo-stream-part: 'stable.2009'
+          branch-head-refspec: ''
+    os:
+      - ubuntu2004:
+          repo-os-part: 'ubuntu.focal.main'
+    executor-arch: 'aarch64'
+# [end] VPP-OS-IN-2009-AARCH64 PROJECT
+
+# VPP-BETA-AARCH64 PROJECT
+#
+# Beta jobs are experimental jobs for testing new OS versions on master.
+#
+# They are only manually triggered.  Either using the Jenkins WebUI
+# 'Build with Parameters' to run a single job or adding 'vpp-beta-verify'
+# or 'vpp-beta-merge' as a comment to run all beta verify or merge jobs.
+#
+# Once testing  is complete, the os is moved to the current
+# 'vpp-os-in-XXXX-aarch64' project. If no OSes are being
+# tested then this project should be commented out.
+#
 - project:
-    name: vpp-perpatch
+    name: vpp-beta-aarch64
+    jobs:
+      - 'vpp-beta-verify-{stream}-{os}-{executor-arch}':
+          comment-trigger-value: 'beta-verify'
+      - 'vpp-beta-merge-{stream}-{os}-{executor-arch}':
+          comment-trigger-value: 'beta-merge'
+    project: 'vpp'
+    make-parallel-jobs: '16'
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+          branch-head-refspec: ''
+    os:
+      - centos8:
+          repo-os-part: 'centos8'
+    executor-arch: aarch64
+# [end] VPP-BETA-AARCH64 PROJECT
+
+# VPP-CSIT-PERPATCH PROJECT
+- project:
+    name: vpp-csit-perpatch
     jobs:
       - 'vpp-csit-verify-device-{stream}-{device-node-arch}':
           make-parallel-jobs: '32'
       - 3n-tsh:
           executor: 'ubuntu1804arm-s'
           make-parallel-jobs: '16'
+# [end] VPP-CSIT-PERPATCH PROJECT
 
+# VPP-CSIT-API-CRC PROJECT
+#
+# Only master and LTS branches are supported.
+#
 - project:
-    name: vpp-arm
-    jobs:
-      - 'vpp-arm-verify-{stream}-{os}'
-      - 'vpp-arm-merge-{stream}-{os}'
-    project: 'vpp'
-    executor-arch: 'aarch64'
-    stream:
-      - master:
-          branch: 'master'
-          repo-stream-part: 'master'
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
-      - '2001':
-          branch: 'stable/2001'
-          repo-stream-part: 'stable.2001'
-      - '2005':
-          branch: 'stable/2005'
-          repo-stream-part: 'stable.2005'
-      - '2009':
-          branch: 'stable/2009'
-          repo-stream-part: 'stable.2009'
-    os:
-      - ubuntu1804:
-          repo-os-part: 'ubuntu-arm.bionic.main'
-    make-parallel-jobs: '16'
-
-# TODO: Merge with (e.g.) vpp-perpatch or similar,
-# when number of stable branches supported matches.
-- project:
-    name: vpp-api-crc
+    name: vpp-csit-api-crc
     jobs:
       - 'vpp-csit-verify-api-crc-{stream}'
     project: 'vpp'
     executor: 'vpp-csit-device'
     skip-vote: 'false'
     stream:
-      # Only master and LTS branches.
       - '1908':
           branch: 'stable/1908'
           repo-stream-part: 'stable.1908'
+      - '2009':
+          branch: 'stable/2009'
+          repo-stream-part: 'stable.2009'
       - master:
           branch: 'master'
     os: ubuntu1804
+# [end] VPP-CSIT-API-CRC PROJECT
 
+# LF RELENG VPP PROJECTS
 - project:
     name: vpp-info
     project-name: vpp
     views:
       - project-view
     project-name: vpp
+# [end] LF RELENG VPP PROJECTS
+# [end] PROJECT DEFINITIONS
 
-- job-template:
-    name: 'vpp-arm-verify-{stream}-{os}'
-
-    project-type: freestyle
-    node: '{os}arm-us'
-    concurrent: true
-    archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
-
-    build-discarder:
-      daysToKeep: '{build-days-to-keep}'
-      numToKeep: 100
-      artifactDaysToKeep: '{build-artifact-days-to-keep}'
-      artifactNumToKeep: '{build-artifact-num-to-keep}'
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-      - gerrit-parameter:
-          branch: '{branch}'
-      - os-parameter:
-          os: '{os}'
-      - repo-name-parameter:
-          repo-name: '{repo-stream-part}.{repo-os-part}'
-      - stream-parameter:
-          stream: '{stream}'
-      - string:
-          name: ARCHIVE_ARTIFACTS
-          default: '{archive-artifacts}'
-          description: Artifacts to archive to the logs server.
-      - make-parallel-jobs-parameter:
-          make-parallel-jobs: '{make-parallel-jobs}'
-      - gerrit-refspec-parameter
-
-    scm:
-      - gerrit-trigger-scm:
-          credentials-id: 'jenkins-gerrit-credentials'
-          refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
-
-    wrappers:
-      - fdio-infra-wrappers:
-          build-timeout: 120
-
-    triggers:
-      - gerrit-trigger-checkstyle:
-          name: '{project}'
-          branch: '{branch}'
-
-    builders:
-      - shell:
-          !include-raw-escape:
-          - ../scripts/setup_vpp_ubuntu_docker_test.sh
-      - shell:
-          !include-raw-escape:
-          - ../scripts/setup_vpp_dpdk_dev_env.sh
-      - shell:
-          !include-raw-escape:
-          - ../scripts/vpp/build.sh
-
-    publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
+# JOB TEMPLATE DEFINITIONS
+#
+# Please keep job templates in the same order as they are referenced
+# in the project definitions above.
 
+# VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
 - job-template:
-    name: 'vpp-arm-merge-{stream}-{os}'
-
-    project-type: freestyle
-    node: '{os}arm-us'
-
-    build-discarder:
-      daysToKeep: '{build-days-to-keep}'
-      numToKeep: 100
-      artifactDaysToKeep: '{build-artifact-days-to-keep}'
-      artifactNumToKeep: '{build-artifact-num-to-keep}'
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-      - gerrit-parameter:
-          branch: '{branch}'
-      - os-parameter:
-          os: '{os}'
-      - maven-project-parameter:
-          maven: 'mvn33-new'
-      - maven-exec:
-          maven-version: 'mvn33-new'
-      - stream-parameter:
-          stream: '{stream}'
-      - repo-name-parameter:
-          repo-name: '{repo-stream-part}.{repo-os-part}'
-      - string:
-          name: ARCHIVE_ARTIFACTS
-          default: '{archive-artifacts}'
-          description: Artifacts to archive to the logs server.
-      - make-parallel-jobs-parameter:
-          make-parallel-jobs: '{make-parallel-jobs}'
-      - gerrit-refspec-parameter
-
-    scm:
-      - gerrit-trigger-scm:
-          credentials-id: 'jenkins-gerrit-credentials'
-          refspec: ''
-          choosing-strategy: 'default'
-
-    wrappers:
-      - fdio-infra-wrappers:
-          build-timeout: 120
-
-    triggers:
-      - gerrit-trigger-patch-merged:
-          name: '{project}'
-          branch: '{branch}'
-
-    builders:
-      - config-file-provider:
-          files:
-            - file-id: '.packagecloud'
-              target: '/root'
-      - config-file-provider:
-          files:
-            - file-id: 'packagecloud_api'
-              target: '/root'
-      - shell:
-          !include-raw-escape:
-          - ../scripts/vpp/checkstyle.sh
-      - shell:
-          !include-raw-escape:
-          - ../scripts/setup_vpp_ubuntu_docker_test.sh
-      - shell:
-          !include-raw-escape:
-          - ../scripts/setup_vpp_dpdk_dev_env.sh
-      - shell:
-          !include-raw-escape:
-          - ../scripts/vpp/build.sh
-
-      - provide-maven-settings:
-          settings-file: 'vpp-settings'
-          global-settings-file: 'global-settings'
-      - shell:
-          !include-raw-escape:
-          - ../scripts/packagecloud_push.sh
-
-    publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
-
-- job-template:
-    name: 'vpp-checkstyle-verify-{stream}'
+    name: 'vpp-checkstyle-verify-{stream}-{executor-arch}'
 
     project-type: freestyle
     node: 'builder-{os}-prod-{executor-arch}'
           os: '{os}'
       - repo-name-parameter:
           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
-      - gerrit-refspec-parameter
+      - gerrit-refspec-parameter:
+          refspec: '{branch-head-refspec}'
 
     scm:
       - gerrit-trigger-scm:
                 comment-contains-value: 'recheck'
             - comment-added-contains-event:
                 comment-contains-value: 'reverify'
-            # Following two are to cover missing functions of drafts going to review status
+            # Following two are to cover missing functions of drafts
+            # going to review status
             - comment-added-contains-event:
                 comment-contains-value: 'runtest'
             - comment-added-contains-event:
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
 
+# VPP-VERIFY JOB TEMPLATE
 - job-template:
-    name: 'vpp-beta-verify-{stream}-{os}'
+    name: 'vpp-verify-{stream}-{os}-{executor-arch}'
 
     project-type: freestyle
     node: 'builder-{os}-prod-{executor-arch}'
           description: Artifacts to archive to the logs server.
       - make-parallel-jobs-parameter:
           make-parallel-jobs: '{make-parallel-jobs}'
-      - gerrit-refspec-parameter
+      - gerrit-refspec-parameter:
+          refspec: '{branch-head-refspec}'
 
     scm:
       - gerrit-trigger-scm:
           build-timeout: 120
 
     triggers:
-      - gerrit-trigger-manually-triggered:
-          comment-trigger-value: 'betacheck'
+      - gerrit-trigger-checkstyle:
           name: '{project}'
           branch: '{branch}'
 
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-VERIFY JOB TEMPLATE
 
+# VPP-DEBUG-VERIFY JOB TEMPLATE
 - job-template:
-    name: 'vpp-verify-{stream}-{os}'
+    name: 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
 
     project-type: freestyle
-    node: '{os}-us'
+    node: 'builder-{os}-prod-{executor-arch}'
     concurrent: true
     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
+    build-discarder:
+      daysToKeep: '{build-days-to-keep}'
+      numToKeep: '{build-num-to-keep}'
+      artifactDaysToKeep: '{build-artifact-days-to-keep}'
+      artifactNumToKeep: '{build-artifact-num-to-keep}'
+
+    parameters:
+      - project-parameter:
+          project: '{project}'
+      - gerrit-parameter:
+          branch: '{branch}'
+      - os-parameter:
+          os: 'ubuntu1804'
+      - repo-name-parameter:
+          repo-name: '{repo-stream-part}.ubuntu.bionic.main'
+      - stream-parameter:
+          stream: '{stream}'
+      - make-parallel-jobs-parameter:
+          make-parallel-jobs: '{make-parallel-jobs}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-head-refspec}'
+
+    scm:
+      - gerrit-trigger-scm:
+          credentials-id: 'jenkins-gerrit-credentials'
+          refspec: '$GERRIT_REFSPEC'
+          choosing-strategy: 'gerrit'
+
+    wrappers:
+      - fdio-infra-wrappers:
+          build-timeout: '{build-timeout}'
+
+    triggers:
+      # TODO: Ensure all supported jobs pass reliably before
+      #       enabling voting.
+      - gerrit-trigger-checkstyle-nonvoting:
+          name: '{project}'
+          branch: '{branch}'
+
+    builders:
+      - shell:
+          !include-raw-escape:
+          - ../scripts/setup_vpp_ubuntu_docker_test.sh
+      - shell:
+          !include-raw-escape:
+          - ../scripts/setup_vpp_dpdk_dev_env.sh
+      - shell:
+          !include-raw-escape:
+          - ../scripts/vpp/debug-build.sh
+
+    publishers:
+      - fdio-infra-shiplogs:
+          maven-version: 'mvn36'
+# [end] VPP-DEBUG-VERIFY JOB TEMPLATE
+
+# VPP-MERGE JOB TEMPLATE
+- job-template:
+    name: 'vpp-merge-{stream}-{os}-{executor-arch}'
+
+    project-type: freestyle
+    node: 'builder-{os}-prod-{executor-arch}'
+
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
       numToKeep: 100
           branch: '{branch}'
       - os-parameter:
           os: '{os}'
-      - repo-name-parameter:
-          repo-name: '{repo-stream-part}.{repo-os-part}'
+      - maven-project-parameter:
+          maven: 'mvn33-new'
+      - maven-exec:
+          maven-version: 'mvn33-new'
       - stream-parameter:
           stream: '{stream}'
+      - repo-name-parameter:
+          repo-name: '{repo-stream-part}.{repo-os-part}'
       - string:
           name: ARCHIVE_ARTIFACTS
           default: '{archive-artifacts}'
           description: Artifacts to archive to the logs server.
       - make-parallel-jobs-parameter:
           make-parallel-jobs: '{make-parallel-jobs}'
-      - gerrit-refspec-parameter
 
     scm:
       - gerrit-trigger-scm:
           credentials-id: 'jenkins-gerrit-credentials'
-          refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
+          refspec: ''
+          choosing-strategy: 'default'
 
     wrappers:
       - fdio-infra-wrappers:
           build-timeout: 120
 
     triggers:
-      - gerrit-trigger-checkstyle:
+      - gerrit-trigger-patch-merged:
           name: '{project}'
           branch: '{branch}'
 
     builders:
+      - config-file-provider:
+          files:
+            - file-id: '.packagecloud'
+              target: '/root'
+      - config-file-provider:
+          files:
+            - file-id: 'packagecloud_api'
+              target: '/root'
+      - shell:
+          !include-raw-escape:
+          - ../scripts/vpp/checkstyle.sh
       - shell:
           !include-raw-escape:
           - ../scripts/setup_vpp_ubuntu_docker_test.sh
           !include-raw-escape:
           - ../scripts/vpp/build.sh
 
+      - provide-maven-settings:
+          settings-file: 'vpp-settings'
+          global-settings-file: 'global-settings'
+      - shell:
+          !include-raw-escape:
+          - ../scripts/packagecloud_push.sh
+
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-MERGE JOB TEMPLATE
 
+# VPP-BETA-VERIFY JOB TEMPLATE
 - job-template:
-    name: 'vpp-verify-{stream}-debug'
+    name: 'vpp-beta-verify-{stream}-{os}-{executor-arch}'
 
     project-type: freestyle
-    node: 'builder-{executor-os}-prod-{executor-arch}'
+    node: 'builder-{os}-prod-{executor-arch}'
     concurrent: true
     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
-      numToKeep: '{build-num-to-keep}'
+      numToKeep: 100
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
       - gerrit-parameter:
           branch: '{branch}'
       - os-parameter:
-          os: 'ubuntu1804'
+          os: '{os}'
       - repo-name-parameter:
-          repo-name: '{repo-stream-part}.ubuntu.bionic.main'
+          repo-name: '{repo-stream-part}.{repo-os-part}'
       - stream-parameter:
           stream: '{stream}'
+      - string:
+          name: ARCHIVE_ARTIFACTS
+          default: '{archive-artifacts}'
+          description: Artifacts to archive to the logs server.
       - make-parallel-jobs-parameter:
           make-parallel-jobs: '{make-parallel-jobs}'
-      - gerrit-refspec-parameter
+      - gerrit-refspec-parameter:
+          refspec: '{branch-head-refspec}'
 
     scm:
       - gerrit-trigger-scm:
 
     wrappers:
       - fdio-infra-wrappers:
-          build-timeout: '{build-timeout}'
+          build-timeout: 120
 
     triggers:
-      - gerrit-trigger-checkstyle-nonvoting:
+      - gerrit-trigger-manually-triggered:
+          comment-trigger-value: '{comment-trigger-value}'
           name: '{project}'
           branch: '{branch}'
 
           - ../scripts/setup_vpp_dpdk_dev_env.sh
       - shell:
           !include-raw-escape:
-          - ../scripts/vpp/debug-build.sh
+          - ../scripts/vpp/build.sh
 
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-BETA-VERIFY JOB TEMPLATE
 
+# VPP-BETA-MERGE JOB TEMPLATE
 - job-template:
-    name: 'vpp-merge-{stream}-{os}'
+    name: 'vpp-beta-merge-{stream}-{os}-{executor-arch}'
 
     project-type: freestyle
-    node: '{os}-us'
+    node: 'builder-{os}-prod-{executor-arch}'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
           description: Artifacts to archive to the logs server.
       - make-parallel-jobs-parameter:
           make-parallel-jobs: '{make-parallel-jobs}'
-      - gerrit-refspec-parameter
 
     scm:
       - gerrit-trigger-scm:
           build-timeout: '{build-timeout}'
 
     triggers:
-      - gerrit-trigger-patch-merged:
+      - gerrit-trigger-manually-triggered:
+          comment-trigger-value: '{comment-trigger-value}'
           name: '{project}'
           branch: '{branch}'
 
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-BETA-MERGE JOB TEMPLATE
 
+# VPP-GCC-VERIFY JOB TEMPLATE
 - job-template:
-    name: 'vpp-beta-merge-{stream}-{os}'
+    name: 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
 
     project-type: freestyle
-    node: 'builder-{os}-prod-{executor-arch}'
+    node: 'builder-{os}-sandbox-{executor-arch}'
+    concurrent: true
+    archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
           branch: '{branch}'
       - os-parameter:
           os: '{os}'
-      - maven-project-parameter:
-          maven: 'mvn33-new'
-      - maven-exec:
-          maven-version: 'mvn33-new'
-      - stream-parameter:
-          stream: '{stream}'
       - repo-name-parameter:
           repo-name: '{repo-stream-part}.{repo-os-part}'
+      - stream-parameter:
+          stream: '{stream}'
       - string:
           name: ARCHIVE_ARTIFACTS
           default: '{archive-artifacts}'
           description: Artifacts to archive to the logs server.
       - make-parallel-jobs-parameter:
           make-parallel-jobs: '{make-parallel-jobs}'
+      - gerrit-refspec-parameter
 
     scm:
       - gerrit-trigger-scm:
           credentials-id: 'jenkins-gerrit-credentials'
-          refspec: ''
-          choosing-strategy: 'default'
+          refspec: '$GERRIT_REFSPEC'
+          choosing-strategy: 'gerrit'
 
     wrappers:
       - fdio-infra-wrappers:
-          build-timeout: '{build-timeout}'
+          build-timeout: 120
 
     triggers:
-      - gerrit-trigger-manually-triggered:
-          comment-trigger-value: 'betamerge'
+      - gerrit-trigger-checkstyle:
           name: '{project}'
           branch: '{branch}'
 
     builders:
-      - config-file-provider:
-          files:
-            - file-id: '.packagecloud'
-              target: '/root'
-      - config-file-provider:
-          files:
-            - file-id: 'packagecloud_api'
-              target: '/root'
-      - shell:
-          !include-raw-escape:
-          - ../scripts/vpp/checkstyle.sh
       - shell:
           !include-raw-escape:
           - ../scripts/setup_vpp_ubuntu_docker_test.sh
           - ../scripts/setup_vpp_dpdk_dev_env.sh
       - shell:
           !include-raw-escape:
-          - ../scripts/vpp/build.sh
-      - provide-maven-settings:
-          settings-file: 'vpp-settings'
-          global-settings-file: 'global-settings'
-      - shell:
-          !include-raw-escape:
-          - ../scripts/packagecloud_push.sh
+          - ../scripts/vpp/gcc-build.sh
 
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-GCC-VERIFY JOB TEMPLATE
 
+# VPP-CSIT-VERIFY-DEVICE JOB TEMPLATE
 - job-template:
     name: 'vpp-csit-verify-device-{stream}-{device-node-arch}'
     description: |
 
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-CSIT-VERIFY-DEVICE JOB TEMPLATE
 
+# VPP-CSIT-VERIFY-PERF JOB TEMPLATE
 - job-template:
     name: 'vpp-csit-verify-perf-{stream}-{node-arch}'
     description: |
           output-path: 'csit_current/0/'
 
       - lf-infra-publish
+# [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE
 
+# VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
 - job-template:
     name: 'vpp-csit-verify-api-crc-{stream}'
 
     publishers:
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
+# [end] VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
+# [end] JOB TEMPLATE DEFINITIONS