Change 'make test' os on VPP/master to ubuntu-20.04
[ci-management.git] / jjb / vpp / vpp.yaml
index 908ef7c..c44a4e0 100644 (file)
@@ -1,3 +1,16 @@
+# 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.
+
 ---
 # PROJECT DEFINITIONS
 #
 #     vpp-x86_64, vpp-aarch64, vpp-csit
 #
 # NOTES:
-#   - The 'branch-head-refspec' attribute is used for sandbox testing.
+#   - The 'branch-refspec' attribute is used for sandbox testing.
 #         Use the get_gerrit_refspec() bash function in
-#         .../ci-management/docker/scripts/lib_common.sh
+#         .../ci-management/extras/bash/sandbox_test_functions.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
     stream:
       - master:
           branch: 'master'
+          branch-refspec: ''
+          os: 'ubuntu2004'
           repo-stream-part: 'master'
-          branch-head-refspec: ''
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
-          branch-head-refspec: ''
-      - '2005':
-          branch: 'stable/2005'
-          repo-stream-part: 'stable.2005'
-          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
+          os: 'ubuntu1804'
           repo-stream-part: 'stable.2009'
-          branch-head-refspec: ''
-    os: 'ubuntu1804'
+          os: 'ubuntu1804'
+      - '2101':
+          branch: 'stable/2101'
+          branch-refspec: ''
+          os: 'ubuntu1804'
+          repo-stream-part: 'stable.2101'
     executor-arch: 'x86_64'
 # [end] VPP-CHECKSTYLE-X86_64 PROJECT
 
 # VPP-X86_64 PROJECT
+#
+# NOTE: The list of supported branches for each OS are maintained
+#       in .../ci-management/docker/scripts/lib_vpp.sh
+#       The job configuration must be derived from that list, thus
+#       modifications to both should be made at the same time.
+#       Since x86_64 is the primary development architecture, this
+#       project definition should be identical to the docker image
+#       build scripts.  Other architectures may be a subset.
 - project:
     name: vpp-x86_64
     jobs:
       - 'vpp-merge-{stream}-{os}-{executor-arch}'
     project: 'vpp'
     make-parallel-jobs: '4'
+    make-test-os: 'ubuntu-20.04'
+    archive-artifacts: '/tmp/vpp-failed-unittests/*/*'
     stream:
       - master:
           branch: 'master'
+          branch-refspec: ''
           repo-stream-part: 'master'
-          branch-head-refspec: ''
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
-          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'
-    executor-arch: 'x86_64'
-# [end] VPP-X86_64 PROJECT
-
-# VPP-OS-EOL-X86_64 PROJECT
-- project:
-    name: vpp-os-eol-x86_64
-    jobs:
-      - 'vpp-verify-{stream}-{os}-{executor-arch}'
-      - 'vpp-merge-{stream}-{os}-{executor-arch}'
-    project: 'vpp'
-    make-parallel-jobs: '4'
-    stream:
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
-          branch-head-refspec: ''
-      - '2005':
-          branch: 'stable/2005'
-          repo-stream-part: 'stable.2005'
-          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
+          make-test-os: 'ubuntu-18.04'
           repo-stream-part: 'stable.2009'
-          branch-head-refspec: ''
+      - '2101':
+          branch: 'stable/2101'
+          branch-refspec: ''
+          make-test-os: 'ubuntu-18.04'
+          repo-stream-part: 'stable.2101'
     os:
       - centos7:
           repo-os-part: 'centos7'
-    executor-arch: 'x86_64'
-# [end] VPP-OS-EOL-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:
       - centos8:
           repo-os-part: 'centos8'
       - debian9:
           repo-os-part: 'stretch'
       - debian10:
           repo-os-part: 'buster'
+      - ubuntu1804:
+          repo-os-part: 'ubuntu.bionic.main'
       - ubuntu2004:
           repo-os-part: 'ubuntu.focal.main'
     executor-arch: 'x86_64'
-# [end] VPP-OS-IN-2009-X86_64 PROJECT
+    exclude:
+      # OS deprecated in master
+      - stream: 'master'
+        os: 'centos7'
+      - stream: 'master'
+        os: 'debian9'
+      # 2009 LTS supports all OS variants
+      # OS deprecated in 2101
+      - stream: '2101'
+        os: 'centos7'
+      - stream: '2101'
+        os: 'debian9'
+# [end] VPP-X86_64 PROJECT
 
 # VPP-DEBUG-X86_64 PROJECT
 #
-# Currently a Non-Voting job due to intermittent failures.
+# Currently a periodic job due to intermittent failures.
 # Limiting branches to master and 2009, since other branches
 # may not get fixes for the intermittent failures.
 #
       - 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
     project: 'vpp'
     make-parallel-jobs: '4'
+    make-test-os: 'ubuntu-20.04'
+    archive-artifacts: '/tmp/vpp-failed-unittests/*/*'
+    comment-trigger-value: 'debug-verify'
     stream:
       - master:
           branch: 'master'
+          branch-refspec: ''
+          # Once per hour
+          periodicity: 'H * * * *'
           repo-stream-part: 'master'
-          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
+          make-test-os: 'ubuntu-18.04'
+          # Once per day
+          periodicity: 'H H * * *'
           repo-stream-part: 'stable.2009'
-          branch-head-refspec: ''
     os:
-      - ubuntu1804:
-          repo-os-part: 'ubuntu.bionic.main'
+      - ubuntu2004:
+          repo-os-part: 'ubuntu.focal.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:
-#      - 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
     stream:
       - master:
           branch: 'master'
+          branch-refspec: ''
           repo-stream-part: 'master'
-          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
           repo-stream-part: 'stable.2009'
-          branch-head-refspec: ''
+      - '2101':
+          branch: 'stable/2101'
+          branch-refspec: ''
+          repo-stream-part: 'stable.2101'
 # [end] VPP-GCC-X86_64 PROJECT
 
 # VPP-AARCH64 PROJECT
+#
+# NOTE: The list of supported branches for each OS are maintained
+#       in .../ci-management/docker/scripts/lib_vpp.sh
+#       The job configuration must be derived from that list, thus
+#       modifications to both should be made at the same time.
+#       The AARCH64 architecture is in the process of catching up
+#       with X86_64 in terms of OS coverage.  Thus the jobs are
+#       a subset of those defined in the docker image build script.
 - project:
     name: vpp-aarch64
     jobs:
       - 'vpp-merge-{stream}-{os}-{executor-arch}'
     project: 'vpp'
     make-parallel-jobs: '16'
+    make-test-os: 'ubuntu-20.04'
+    archive-artifacts: '/tmp/vpp-failed-unittests/*/*'
     stream:
       - master:
           branch: 'master'
+          branch-refspec: ''
           repo-stream-part: 'master'
-          branch-head-refspec: ''
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
-          branch-head-refspec: ''
-      - '2005':
-          branch: 'stable/2005'
-          repo-stream-part: 'stable.2005'
-          branch-head-refspec: ''
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
+          make-test-os: 'ubuntu-18.04'
           repo-stream-part: 'stable.2009'
-          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-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: ''
+      - '2101':
+          branch: 'stable/2101'
+          branch-refspec: ''
+          make-test-os: 'ubuntu-18.04'
+          repo-stream-part: 'stable.2101'
     os:
       - centos8:
           repo-os-part: 'centos8'
+      - ubuntu1804:
+          repo-os-part: 'ubuntu-arm.bionic.main'
       - ubuntu2004:
           repo-os-part: 'ubuntu.focal.main'
-    executor-arch: aarch64
-# [end] VPP-BETA-AARCH64 PROJECT
+    executor-arch: 'aarch64'
+    exclude:
+      # OS introduced after 2009
+      - stream: '2009'
+        os: 'centos8'
+      - stream: '2009'
+        os: 'ubuntu2004'
+      # OS introduced after 2101
+      - stream: '2101'
+        os: 'centos8'
+      - stream: '2101'
+        os: 'ubuntu2004'
+# [end] VPP-AARCH64 PROJECT
 
-# VPP-CSIT-PERPATCH PROJECT
+# VPP-CSIT-VERIFY PROJECT
 - project:
-    name: vpp-csit-perpatch
+    name: vpp-csit-verify
     jobs:
-      - 'vpp-csit-verify-device-{stream}-{device-node-arch}':
+      - 'vpp-csit-verify-device-perpatch':
+          make-parallel-jobs: '32'
+          exclude:
+            - device-node-arch: '1n-tx2'
+      - 'vpp-csit-verify-device-periodic':
           make-parallel-jobs: '32'
+          periodicity: 'H * * * *'
+          skip-vote: 'true'
+          comment-trigger-value: 'devicetest-periodic'
+          exclude:
+            - stream: '2009'
+            - stream: '2101'
+            - device-node-arch: '1n-skx'
       - 'vpp-csit-verify-perf-{stream}-{node-arch}'
     project: 'vpp'
     os: ubuntu1804
     stream:
       - master:
           branch: 'master'
+          branch-refspec: ''
           repo-stream-part: 'master'
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
-      - '2005':
-          branch: 'stable/2005'
-          repo-stream-part: 'stable.2005'
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
           repo-stream-part: 'stable.2009'
+      - '2101':
+          branch: 'stable/2101'
+          branch-refspec: ''
+          repo-stream-part: 'stable.2101'
     device-node-arch:
       - 1n-skx
       - 1n-tx2:
           device-executor: 'vpp-csit-arm-ubuntu18'
-          skip-vote: 'true'
     node-arch:
       - 2n-clx
       - 2n-skx
       - 3n-tsh:
           executor: 'ubuntu1804arm-s'
           make-parallel-jobs: '16'
-    exclude:
-      - stream: '1908'
-        device-node-arch: '1n-tx2'
-      - stream: '2001'
-        device-node-arch: '1n-tx2'
-      - stream: '2005'
-        device-node-arch: '1n-tx2'
+      - 2n-tx2:
+          executor: 'ubuntu1804arm-s'
+          make-parallel-jobs: '16'
 
-# [end] VPP-CSIT-PERPATCH PROJECT
+# [end] VPP-CSIT-VERIFY PROJECT
 
 # VPP-CSIT-API-CRC PROJECT
 #
     executor: 'vpp-csit-device'
     skip-vote: 'false'
     stream:
-      - '1908':
-          branch: 'stable/1908'
-          repo-stream-part: 'stable.1908'
+      - master:
+          branch: 'master'
+          branch-refspec: ''
       - '2009':
           branch: 'stable/2009'
+          branch-refspec: ''
           repo-stream-part: 'stable.2009'
-      - master:
-          branch: 'master'
+      - '2101':
+          branch: 'stable/2101'
+          branch-refspec: ''
+          repo-stream-part: 'stable.2101'
     os: ubuntu1804
 # [end] VPP-CSIT-API-CRC PROJECT
 
     project-type: freestyle
     node: 'builder-{os}-prod-{executor-arch}'
     concurrent: true
-    archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
       - gerrit-parameter:
           branch: '{branch}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
       - os-parameter:
           os: '{os}'
+      - project-parameter:
+          project: '{project}'
       - repo-name-parameter:
           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
-      - gerrit-refspec-parameter:
-          refspec: '{branch-head-refspec}'
+      - workspace-archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
 
     scm:
       - gerrit-trigger-scm:
           - ../scripts/vpp/commitmsg.sh
 
     publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
+      - fdio-infra-publish
+
 # [end] VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
 
 # VPP-VERIFY JOB TEMPLATE
     project-type: freestyle
     node: 'builder-{os}-prod-{executor-arch}'
     concurrent: true
-    archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
       - gerrit-parameter:
           branch: '{branch}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
+      - make-parallel-jobs-parameter:
+          make-parallel-jobs: '{make-parallel-jobs}'
+      - make-test-os-parameter:
+          make-test-os: '{make-test-os}'
       - os-parameter:
           os: '{os}'
+      - project-parameter:
+          project: '{project}'
       - 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:
-          refspec: '{branch-head-refspec}'
+      - workspace-archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
 
     scm:
       - gerrit-trigger-scm:
           - ../scripts/vpp/build.sh
 
     publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
+      - fdio-infra-publish
 # [end] VPP-VERIFY JOB TEMPLATE
 
 # VPP-DEBUG-VERIFY JOB TEMPLATE
     project-type: freestyle
     node: 'builder-{os}-prod-{executor-arch}'
     concurrent: true
-    archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
       - gerrit-parameter:
           branch: '{branch}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
+      - make-parallel-jobs-parameter:
+          make-parallel-jobs: '{make-parallel-jobs}'
+      - make-test-os-parameter:
+          make-test-os: '{make-test-os}'
       - os-parameter:
           os: 'ubuntu1804'
+      - project-parameter:
+          project: '{project}'
       - 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}'
+      - workspace-archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
 
     scm:
       - gerrit-trigger-scm:
           build-timeout: '{build-timeout}'
 
     triggers:
-      # TODO: Ensure all supported jobs pass reliably before
-      #       enabling voting.
-      - gerrit-trigger-checkstyle-nonvoting:
+      - timed: '{periodicity}'
+      - gerrit-trigger-manually-triggered:
+          comment-trigger-value: '{comment-trigger-value}'
           name: '{project}'
           branch: '{branch}'
 
           - ../scripts/vpp/debug-build.sh
 
     publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
-# [end] VPP-DEBUG-VERIFY JOB TEMPLATE
+      - fdio-infra-publish
+# [end] VPP-DEBUG-VERIFY-PERIODIC JOB TEMPLATE
 
 # VPP-MERGE JOB TEMPLATE
 - job-template:
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
       - gerrit-parameter:
           branch: '{branch}'
+      - make-parallel-jobs-parameter:
+          make-parallel-jobs: '{make-parallel-jobs}'
+      - make-test-os-parameter:
+          make-test-os: '{make-test-os}'
       - os-parameter:
           os: '{os}'
-      - maven-project-parameter:
-          maven: 'mvn33-new'
-      - maven-exec:
-          maven-version: 'mvn33-new'
-      - stream-parameter:
-          stream: '{stream}'
+      - project-parameter:
+          project: '{project}'
       - 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}'
+      - stream-parameter:
+          stream: '{stream}'
+      - workspace-archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
 
     scm:
       - gerrit-trigger-scm:
           - ../scripts/packagecloud_push.sh
 
     publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
+      - fdio-infra-publish
 # [end] VPP-MERGE JOB TEMPLATE
 
-# VPP-BETA-VERIFY JOB TEMPLATE
+# VPP-GCC-VERIFY JOB TEMPLATE
 - job-template:
-    name: 'vpp-beta-verify-{stream}-{os}-{executor-arch}'
+    name: 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
 
     project-type: freestyle
     node: 'builder-{os}-prod-{executor-arch}'
     concurrent: true
-    archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
       - gerrit-parameter:
           branch: '{branch}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
+      - make-parallel-jobs-parameter:
+          make-parallel-jobs: '{make-parallel-jobs}'
       - os-parameter:
           os: '{os}'
+      - project-parameter:
+          project: '{project}'
       - 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:
-          refspec: '{branch-head-refspec}'
+      - workspace-archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
 
     scm:
       - gerrit-trigger-scm:
           build-timeout: 120
 
     triggers:
-      - gerrit-trigger-manually-triggered:
-          comment-trigger-value: '{comment-trigger-value}'
+      - gerrit-trigger-checkstyle:
           name: '{project}'
           branch: '{branch}'
 
           - ../scripts/setup_vpp_dpdk_dev_env.sh
       - shell:
           !include-raw-escape:
-          - ../scripts/vpp/build.sh
+          - ../scripts/vpp/gcc-build.sh
 
     publishers:
-      - fdio-infra-shiplogs:
-          maven-version: 'mvn36'
-# [end] VPP-BETA-VERIFY JOB TEMPLATE
+      - fdio-infra-publish
+# [end] VPP-GCC-VERIFY JOB TEMPLATE
 
-# VPP-BETA-MERGE JOB TEMPLATE
+# VPP-CSIT-VERIFY-DEVICE-PERIODIC JOB TEMPLATE
 - job-template:
-    name: 'vpp-beta-merge-{stream}-{os}-{executor-arch}'
+    name: 'vpp-csit-verify-device-{stream}-{device-node-arch}'
+    id: 'vpp-csit-verify-device-periodic'
+    description: |
+      <ul>
+          <li>executor
+              <ul>
+                  <li>{device-executor}
+              </ul>
+      </ul>
 
     project-type: freestyle
-    node: 'builder-{os}-prod-{executor-arch}'
+    node: '{device-executor}'
+    concurrent: true
+    archive-artifacts: '**/csit_current/**/*.*'
+    latest-only: false
 
     build-discarder:
       daysToKeep: '{build-days-to-keep}'
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
+      - archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
+      - gerrit-csit-refspec-parameter
+      - gerrit-event-comment-text-parameter
+      - gerrit-event-type-parameter
       - 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.
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
       - make-parallel-jobs-parameter:
           make-parallel-jobs: '{make-parallel-jobs}'
-
-    scm:
-      - gerrit-trigger-scm:
-          credentials-id: 'jenkins-gerrit-credentials'
-          refspec: ''
-          choosing-strategy: 'default'
-
-    wrappers:
-      - fdio-infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-manually-triggered:
-          comment-trigger-value: '{comment-trigger-value}'
-          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/setup_executor_env.sh
-      - 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'
-# [end] VPP-BETA-MERGE JOB TEMPLATE
-
-# VPP-GCC-VERIFY JOB TEMPLATE
-- job-template:
-    name: 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
-
-    project-type: freestyle
-    node: 'builder-{os}-prod-{executor-arch}'
-    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}'
+      - project-parameter:
+          project: '{project}'
       - repo-name-parameter:
-          repo-name: '{repo-stream-part}.{repo-os-part}'
+          repo-name: '{repo-stream-part}.ubuntu.bionic.main'
       - 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:
-          refspec: '{branch-head-refspec}'
 
     scm:
       - gerrit-trigger-scm:
           credentials-id: 'jenkins-gerrit-credentials'
           refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
+          choosing-strategy: 'default'
 
     wrappers:
       - fdio-infra-wrappers:
-          build-timeout: 120
+          build-timeout: '90'
 
     triggers:
-      - gerrit-trigger-checkstyle:
+      - timed: '{periodicity}'
+      - 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/gcc-build.sh
+          - ../scripts/vpp/csit-device.sh
 
     publishers:
+      - robot-report:
+          output-path: 'archives'
+
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
-# [end] VPP-GCC-VERIFY JOB TEMPLATE
+# [end] VPP-CSIT-VERIFY-DEVICE-PERIODIC JOB TEMPLATE
 
-# VPP-CSIT-VERIFY-DEVICE JOB TEMPLATE
+# VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
 - job-template:
     name: 'vpp-csit-verify-device-{stream}-{device-node-arch}'
+    id: 'vpp-csit-verify-device-perpatch'
     description: |
       <ul>
           <li>executor
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
+      - archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
+      - gerrit-csit-refspec-parameter
+      - gerrit-event-comment-text-parameter
+      - gerrit-event-type-parameter
       - gerrit-parameter:
           branch: '{branch}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
+      - make-parallel-jobs-parameter:
+          make-parallel-jobs: '{make-parallel-jobs}'
       - os-parameter:
           os: '{os}'
+      - project-parameter:
+          project: '{project}'
       - repo-name-parameter:
           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
-      - gerrit-refspec-parameter
-      - gerrit-event-type-parameter
-      - gerrit-event-comment-text-parameter
-      - gerrit-csit-refspec-parameter
       - 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}'
 
     scm:
       - gerrit-trigger-scm:
 
     publishers:
       - robot-report:
-          output-path: 'csit_current/'
+          output-path: 'archives'
 
       - fdio-infra-shiplogs:
           maven-version: 'mvn36'
-# [end] VPP-CSIT-VERIFY-DEVICE JOB TEMPLATE
+# [end] VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
 
 # VPP-CSIT-VERIFY-PERF JOB TEMPLATE
 - job-template:
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
+      - archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
+      - csit-perf-trial-duration-parameter:
+          csit-perf-trial-duration: "10.0"
+      - csit-perf-trial-multiplicity-parameter:
+          csit-perf-trial-multiplicity: "5"
+      - 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}'
       - repo-name-parameter:
           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
-      - gerrit-refspec-parameter
-      - gerrit-event-type-parameter
-      - gerrit-event-comment-text-parameter
-      - gerrit-csit-refspec-parameter
-      - csit-perf-trial-duration-parameter:
-          csit-perf-trial-duration: "10.0"
-      - csit-perf-trial-multiplicity-parameter:
-          csit-perf-trial-multiplicity: "5"
       - 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}'
 
     scm:
       - gerrit-trigger-scm:
       - robot-report:
           output-path: 'csit_current/0/'
 
-      - lf-infra-publish
+      - fdio-infra-shiplogs:
+          maven-version: 'mvn36'
 # [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE
 
 # VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
     project-type: freestyle
     node: '{os}-us'
     concurrent: true
-    archive-artifacts: ''
     latest-only: false
 
     build-discarder:
       artifactDaysToKeep: '{build-artifact-days-to-keep}'
       artifactNumToKeep: '{build-artifact-num-to-keep}'
 
+    # Please keep parameters in alphabetical order
     parameters:
-      - project-parameter:
-          project: '{project}'
-      - gerrit-parameter:
-          branch: '{branch}'
-      - gerrit-refspec-parameter
-      - gerrit-csit-refspec-parameter
-      - stream-parameter:
-          stream: '{stream}'
-      - string:
-          name: ARCHIVE_ARTIFACTS
-          default: '{archive-artifacts}'
-          description: Artifacts to archive to the logs server.
+      - archive-artifacts-parameter:
+          artifacts: '{archive-artifacts}'
       # Not sure whether not failing has any useful usage,
       # but it does not hurt to have some flexibility for future.
       - csit-fail-on-crc-mismatch-parameter:
           fail-on-crc-mismatch: 'True'
+      - gerrit-csit-refspec-parameter
+      - gerrit-parameter:
+          branch: '{branch}'
+      - gerrit-refspec-parameter:
+          refspec: '{branch-refspec}'
+      - project-parameter:
+          project: '{project}'
+      - stream-parameter:
+          stream: '{stream}'
 
     scm:
       - gerrit-trigger-scm:
           build-timeout: 300
 
     triggers:
-      # TODO: Make other verify jobs trigger on success of this one,
-      # without breaking verification for VPP branches before stable/1908.
       - gerrit-trigger-checkstyle:
           name: '{project}'
           branch: '{branch}'