1 # Copyright (c) 2023 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
17 # Please keep projects grouped in this order:
18 # vpp-x86_64, vpp-aarch64, vpp-csit
21 # - The 'branch-refspec' attribute is used for sandbox testing.
22 # Use the get_gerrit_refspec() bash function in
23 # .../ci-management/extras/bash/sandbox_test_functions.sh
24 # to query gerrit for the refspec of HEAD in a branch.
25 # TODO: see if there is a refspec that works without requiring
26 # use of get_gerrit_refspec and hand entering the result
27 # in the WebUI 'Build With Parameters' gerrit refspec field.
30 # VPP-CHECKSTYLE-X86_64 PROJECT
32 name: vpp-checkstyle-x86_64
34 - 'vpp-checkstyle-verify-{stream}-{os}-{executor-arch}'
52 executor-arch: 'x86_64'
54 # os deprecated in 23.06
57 # os deprecated in 23.02
60 # os deprecated in 22.10
63 # os deprecated in master
67 # [end] VPP-CHECKSTYLE-X86_64 PROJECT
71 # NOTE: The list of supported branches for each OS are maintained
72 # in .../ci-management/docker/scripts/lib_vpp.sh
73 # The job configuration must be derived from that list, thus
74 # modifications to both should be made at the same time.
75 # Since x86_64 is the primary development architecture, this
76 # project definition should be identical to the docker image
77 # build scripts. Other architectures may be a subset.
81 - 'vpp-verify-{stream}-{os}-{executor-arch}'
82 - 'vpp-merge-{stream}-{os}-{executor-arch}'
84 make-parallel-jobs: '4'
89 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
90 make-test-multiworker-os: 'debian-11'
94 make-test-os: 'ubuntu-20.04'
95 make-test-multiworker-os: 'debian-11'
99 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
100 make-test-multiworker-os: 'debian-11'
102 branch: 'stable/2306'
104 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
105 make-test-multiworker-os: 'debian-11'
110 executor-arch: 'x86_64'
111 # [end] VPP-X86_64 PROJECT
113 # [end] VPP-COV-X86_64 PROJECT
115 # VPP-DEBUG-X86_64 PROJECT
117 # Currently a periodic job due to intermittent failures.
118 # Limiting branches to master, since other branches
119 # may not get fixes for the intermittent failures.
122 name: vpp-debug-x86_64
124 - 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
126 make-parallel-jobs: '4'
127 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
128 comment-trigger-value: 'debug-verify'
133 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
135 executor-arch: 'x86_64'
137 # [end] VPP-DEBUG-X86_64 PROJECT
139 # VPP-DPDK-RDMA-VERSION-MISMATCH-X86_64 PROJECT
141 # Currently a periodic job due to intermittent failures.
142 # Limiting branches to master, since other branches
143 # may not get fixes for the intermittent failures.
146 name: vpp-dpdk-rdma-version-mismatch-x86_64
148 - 'vpp-dpdk-rdma-version-mismatch-{stream}-{os}-{executor-arch}'
150 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
151 comment-trigger-value: 'dpdk-rdma-version-mismatch'
155 # Once per day at 00:15
156 periodicity: '15 0 * * 0-6'
158 executor-arch: 'x86_64'
160 # [end] VPP-DPDK-RDMA-VERSION-MISMATCH-X86_64 PROJECT
162 # VPP-COV-X86_64 PROJECT
164 # A per-patch job to produce code coverage.
166 # TODO: switch OS to ubuntu-22.04 once the skipping of intermittently failing
172 - 'vpp-cov-verify-{stream}-{os}-{executor-arch}'
174 make-parallel-jobs: '4'
175 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
176 comment-trigger-value: 'cov-verify'
182 executor-arch: 'x86_64'
184 # VPP-AARCH64 PROJECT
186 # NOTE: The list of supported branches for each OS are maintained
187 # in .../ci-management/docker/scripts/lib_vpp.sh
188 # The job configuration must be derived from that list, thus
189 # modifications to both should be made at the same time.
190 # The AARCH64 architecture is in the process of catching up
191 # with X86_64 in terms of OS coverage. Thus the jobs are
192 # a subset of those defined in the docker image build script.
196 - 'vpp-verify-{stream}-{os}-{executor-arch}'
197 - 'vpp-merge-{stream}-{os}-{executor-arch}'
199 make-parallel-jobs: '4'
204 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
205 make-test-multiworker-os: ''
207 branch: 'stable/2210'
209 make-test-os: 'ubuntu-20.04'
210 make-test-multiworker-os: ''
212 branch: 'stable/2302'
214 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
215 make-test-multiworker-os: ''
217 branch: 'stable/2306'
219 make-test-os: 'ubuntu-20.04 ubuntu-22.04'
220 make-test-multiworker-os: ''
224 executor-arch: 'aarch64'
225 # [end] VPP-AARCH64 PROJECT
227 # VPP-CSIT-VERIFY-DEVICE PROJECT
229 name: vpp-csit-verify-device
231 - 'vpp-csit-verify-device-{stream}-{os}-{executor-arch}-{testbed-arch}':
232 make-parallel-jobs: '32'
240 branch: 'stable/2302'
243 branch: 'stable/2306'
248 executor-arch: 'x86_64'
251 executor-arch: 'aarch64'
253 # [end] VPP-CSIT-VERIFY-DEVICE PROJECT
255 # VPP-CSIT-VERIFY-PERF PROJECT
257 name: vpp-csit-verify-perf
259 - 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}'
269 executor-arch: 'x86_64'
272 executor-arch: 'x86_64'
275 executor-arch: 'x86_64'
278 executor-arch: 'x86_64'
281 executor-arch: 'x86_64'
284 executor-arch: 'aarch64'
285 make-parallel-jobs: '16'
288 executor-arch: 'aarch64'
289 make-parallel-jobs: '16'
292 executor-arch: 'aarch64'
293 make-parallel-jobs: '16'
296 executor-arch: 'x86_64'
297 # [end] VPP-CSIT-VERIFY-PERF PROJECT
299 # VPP-CSIT-API-CRC PROJECT
301 # Only master and LTS branches are supported.
304 name: vpp-csit-api-crc
306 - 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}'
308 executor-arch: 'x86_64'
315 branch: 'stable/2302'
318 branch: 'stable/2306'
322 # [end] VPP-CSIT-API-CRC PROJECT
324 # LF RELENG VPP PROJECTS
329 - gerrit-info-yaml-verify
330 build-node: centos7-builder-2c-2g
339 # [end] LF RELENG VPP PROJECTS
340 # [end] PROJECT DEFINITIONS
342 # JOB TEMPLATE DEFINITIONS
344 # Please keep job templates in the same order as they are referenced
345 # in the project definitions above.
347 # VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
349 name: 'vpp-checkstyle-verify-{stream}-{os}-{executor-arch}'
351 project-type: freestyle
352 node: 'builder-{os}-prod-{executor-arch}'
356 - lf-infra-properties:
357 build-days-to-keep: "{build-days-to-keep}"
359 # Please keep parameters in alphabetical order
363 - gerrit-refspec-parameter:
364 refspec: '{branch-refspec}'
371 - gerrit-trigger-scm:
372 credentials-id: 'jenkins-gerrit-credentials'
373 refspec: '$GERRIT_REFSPEC'
374 choosing-strategy: 'gerrit'
377 - fdio-infra-wrappers:
378 build-timeout: '{build-timeout}'
379 - credentials-binding:
381 credential-id: VppApiCompatNotify
382 variable: SECRET_WEBEX_TEAMS_ACCESS_TOKEN
386 server-name: 'Primary'
388 - patchset-created-event:
389 exclude-drafts: 'true'
390 exclude-trivial-rebase: 'false'
391 exclude-no-code-change: 'false'
392 - draft-published-event
393 - comment-added-contains-event:
394 comment-contains-value: 'checkstylecheck'
395 - comment-added-contains-event:
396 comment-contains-value: 'recheck'
397 - comment-added-contains-event:
398 comment-contains-value: 'reverify'
399 # Following two are to cover missing functions of drafts
400 # going to review status
401 - comment-added-contains-event:
402 comment-contains-value: 'runtest'
403 - comment-added-contains-event:
404 comment-contains-value: 'This change is ready for review'
406 - project-compare-type: 'ANT'
407 project-pattern: '{project}'
409 - branch-compare-type: 'ANT'
410 branch-pattern: '**/{branch}'
412 - compare-type: REG_EXP
413 pattern: ^((?!\/COMMIT_MSG|docs|_abc|_def[\/\.]).)*$
414 forbidden-file-paths:
415 - compare-type: REG_EXP
416 pattern: .*extras\/emacs\/.*
417 disable-strict-forbidden-file-verification: 'true'
419 gerrit-build-notbuilt-verified-value: 0
420 gerrit-build-successful-verified-value: 1
421 # yamllint disable-line rule:line-length
422 notbuilt-message: 'Automatic retry of failed jobs may be in process. A proper vote should be set when retry completes.'
423 # yamllint disable-line rule:line-length
424 failed-message: 'Checkstyle failed. No further verify jobs will be started.'
425 successful-message: 'checkstyle_success'
435 - ../scripts/setup_executor_env.sh
438 - ../scripts/vpp/checkstyle.sh
441 - ../scripts/vpp/test-checkstyle.sh
444 - ../scripts/vpp/api-checkstyle.sh
447 - ../scripts/vpp/commitmsg.sh
450 - ../scripts/vpp/docs_spell.sh
455 # [end] VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
457 # VPP-VERIFY JOB TEMPLATE
459 name: 'vpp-verify-{stream}-{os}-{executor-arch}'
461 project-type: freestyle
462 node: 'builder-{os}-prod-{executor-arch}'
466 - lf-infra-properties:
467 build-days-to-keep: "{build-days-to-keep}"
469 # Please keep parameters in alphabetical order
473 - gerrit-refspec-parameter:
474 refspec: '{branch-refspec}'
475 - make-parallel-jobs-parameter:
476 make-parallel-jobs: '{make-parallel-jobs}'
477 - make-test-os-parameter:
478 make-test-os: '{make-test-os}'
479 - make-test-multiworker-os-parameter:
480 make-test-multiworker-os: '{make-test-multiworker-os}'
489 - gerrit-trigger-scm:
490 credentials-id: 'jenkins-gerrit-credentials'
491 refspec: '$GERRIT_REFSPEC'
492 choosing-strategy: 'gerrit'
495 - fdio-infra-wrappers:
499 - gerrit-trigger-checkstyle:
506 - ../scripts/setup_executor_env.sh
509 - ../scripts/setup_vpp_ubuntu_docker_test.sh
512 - ../scripts/setup_vpp_ext_deps.sh
515 - ../scripts/vpp/build.sh
519 # [end] VPP-VERIFY JOB TEMPLATE
521 # VPP-DEBUG-VERIFY JOB TEMPLATE
523 name: 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
525 project-type: freestyle
526 node: 'builder-{os}-prod-{executor-arch}'
530 - lf-infra-properties:
531 build-days-to-keep: "{build-days-to-keep}"
533 # Please keep parameters in alphabetical order
537 - gerrit-refspec-parameter:
538 refspec: '{branch-refspec}'
539 - make-parallel-jobs-parameter:
540 make-parallel-jobs: '{make-parallel-jobs}'
541 - make-test-os-parameter:
542 make-test-os: '{make-test-os}'
551 - gerrit-trigger-scm:
552 credentials-id: 'jenkins-gerrit-credentials'
553 refspec: '$GERRIT_REFSPEC'
554 choosing-strategy: 'gerrit'
557 - fdio-infra-wrappers:
558 build-timeout: '{build-timeout}'
561 - gerrit-trigger-checkstyle-nonvoting:
568 - ../scripts/setup_executor_env.sh
571 - ../scripts/setup_vpp_ubuntu_docker_test.sh
574 - ../scripts/setup_vpp_ext_deps.sh
577 - ../scripts/vpp/debug-build.sh
581 # [end] VPP-DEBUG-VERIFY JOB TEMPLATE
583 # VPP-DPDK-RDMA-VERSION-MISMATCH PERIODIC JOB TEMPLATE
585 name: 'vpp-dpdk-rdma-version-mismatch-{stream}-{os}-{executor-arch}'
587 project-type: freestyle
588 node: 'builder-{os}-prod-{executor-arch}'
592 - lf-infra-properties:
593 build-days-to-keep: "{build-days-to-keep}"
595 # Please keep parameters in alphabetical order
599 - make-parallel-jobs-parameter:
600 make-parallel-jobs: '{make-parallel-jobs}'
601 - make-test-os-parameter:
602 make-test-os: '{make-test-os}'
611 - gerrit-trigger-scm:
612 credentials-id: 'jenkins-gerrit-credentials'
614 choosing-strategy: 'default'
617 - fdio-infra-wrappers:
618 build-timeout: '{build-timeout}'
621 - timed: '{periodicity}'
622 - gerrit-trigger-manually-triggered:
623 comment-trigger-value: '{comment-trigger-value}'
630 - ../scripts/setup_executor_env.sh
633 - ../scripts/setup_vpp_ubuntu_docker_test.sh
636 - ../scripts/vpp/dpdk-rdma-version-mismatch.sh
639 - vpp-dpdk-rdma-version-mismatch:
642 # [end] VPP-DPDK-RDMA-VERSION-MISMATCH PERIODIC JOB TEMPLATE
644 # VPP-MERGE JOB TEMPLATE
646 name: 'vpp-merge-{stream}-{os}-{executor-arch}'
648 project-type: freestyle
649 node: 'builder-{os}-prod-{executor-arch}'
652 - lf-infra-properties:
653 build-days-to-keep: "{build-days-to-keep}"
655 # Please keep parameters in alphabetical order
659 - make-parallel-jobs-parameter:
660 make-parallel-jobs: '{make-parallel-jobs}'
661 - make-test-os-parameter:
662 make-test-os: '{make-test-os}'
663 - make-test-multiworker-os-parameter:
664 make-test-multiworker-os: '{make-test-multiworker-os}'
673 - gerrit-trigger-scm:
674 credentials-id: 'jenkins-gerrit-credentials'
676 choosing-strategy: 'default'
679 - fdio-infra-wrappers:
683 - gerrit-trigger-patch-merged:
688 - config-file-provider:
690 - file-id: '.packagecloud'
691 target: '/root/.packagecloud'
692 - config-file-provider:
694 - file-id: 'packagecloud_api'
695 target: '/root/packagecloud_api'
698 - ../scripts/setup_executor_env.sh
701 - ../scripts/vpp/commitmsg.sh
704 - ../scripts/setup_vpp_ubuntu_docker_test.sh
707 - ../scripts/setup_vpp_ext_deps.sh
710 - ../scripts/vpp/build.sh
713 - ../scripts/packagecloud_push.sh
717 # [end] VPP-MERGE JOB TEMPLATE
719 # VPP-COV-VERIFY JOB TEMPLATE
721 name: 'vpp-cov-verify-{stream}-{os}-{executor-arch}'
723 project-type: freestyle
724 node: 'builder-{os}-prod-{executor-arch}'
728 - lf-infra-properties:
729 build-days-to-keep: "{build-days-to-keep}"
731 # Please keep parameters in alphabetical order
735 - gerrit-refspec-parameter:
736 refspec: '{branch-refspec}'
737 - make-parallel-jobs-parameter:
738 make-parallel-jobs: '{make-parallel-jobs}'
739 - make-test-os-parameter:
740 make-test-os: '{make-test-os}'
749 - gerrit-trigger-scm:
750 credentials-id: 'jenkins-gerrit-credentials'
751 refspec: '$GERRIT_REFSPEC'
752 choosing-strategy: 'gerrit'
755 - fdio-infra-wrappers:
756 build-timeout: '{build-timeout}'
759 - gerrit-trigger-checkstyle-nonvoting:
766 - ../scripts/setup_executor_env.sh
769 - ../scripts/setup_vpp_ubuntu_docker_test.sh
772 - ../scripts/setup_vpp_ext_deps.sh
775 - ../scripts/vpp/cov-build.sh
778 - fdio-infra-publish-cov-7day
780 # [end] VPP-COV-VERIFY JOB TEMPLATE
782 # VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
784 name: 'vpp-csit-verify-device-{stream}-{os}-{executor-arch}-{testbed-arch}'
789 <li>csit-builder-{os}-prod-{executor-arch}
791 <li>testbed architecture
797 project-type: freestyle
798 node: 'csit-builder-{os}-prod-{executor-arch}'
803 - lf-infra-properties:
804 build-days-to-keep: "{build-days-to-keep}"
806 # Please keep parameters in alphabetical order
808 - gerrit-csit-refspec-parameter
809 - gerrit-event-comment-text-parameter
810 - gerrit-event-type-parameter
813 - gerrit-refspec-parameter:
814 refspec: '{branch-refspec}'
815 - make-parallel-jobs-parameter:
816 make-parallel-jobs: '{make-parallel-jobs}'
825 - gerrit-trigger-scm:
826 credentials-id: 'jenkins-gerrit-credentials'
827 refspec: '$GERRIT_REFSPEC'
828 choosing-strategy: 'gerrit'
831 - fdio-infra-wrappers:
835 - 'gerrit-trigger-vpp-csit-devicetest-full':
838 skip-vote: '{skip-vote}'
843 - ../scripts/setup_executor_env.sh
846 - ../scripts/setup_vpp_ubuntu_docker_test.sh
849 - ../scripts/setup_vpp_ext_deps.sh
852 - ../scripts/vpp/csit-device.sh
856 # [end] VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
858 # VPP-CSIT-VERIFY-PERF JOB TEMPLATE
860 name: 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}'
865 <li>builder-{os}-prod-{executor-arch}
867 <li>testbed architecture
872 Contrary to csit-vpp job, this also measures the parent performance,
873 and fails if performance regression is detected.
874 See https://github.com/FDio/csit/blob/master/docs/cpta/methodology/perpatch_performance_tests.rst
877 project-type: freestyle
878 node: 'builder-{os}-prod-{executor-arch}'
883 - lf-infra-properties:
884 build-days-to-keep: "{build-days-to-keep}"
886 # Please keep parameters in alphabetical order
888 - csit-perf-trial-duration-parameter:
889 csit-perf-trial-duration: "10.0"
890 - csit-perf-trial-multiplicity-parameter:
891 csit-perf-trial-multiplicity: "5"
892 - gerrit-csit-refspec-parameter
893 - gerrit-event-comment-text-parameter
894 - gerrit-event-type-parameter
895 - gerrit-refspec-parameter:
896 refspec: '{branch-refspec}'
899 - make-parallel-jobs-parameter:
900 make-parallel-jobs: '{make-parallel-jobs}'
909 - gerrit-trigger-scm:
910 credentials-id: 'jenkins-gerrit-credentials'
911 refspec: '$GERRIT_REFSPEC'
912 choosing-strategy: 'gerrit'
915 - fdio-infra-wrappers-non-activity-timeout:
919 - gerrit-trigger-csit-perftest:
922 trigger-word: 'perftest-{testbed-arch}'
928 - ../scripts/setup_executor_env.sh
931 - ../scripts/setup_vpp_ubuntu_docker_test.sh
934 - ../scripts/setup_vpp_ext_deps.sh
937 - ../scripts/vpp/csit-perf.sh
941 # Can be removed when all CSIT branches use correct archive directory.
952 - ../scripts/vpp/copy_archives.sh
954 # [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE
956 # VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
958 name: 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}'
960 project-type: freestyle
961 node: 'builder-{os}-prod-{executor-arch}'
966 - lf-infra-properties:
967 build-days-to-keep: "{build-days-to-keep}"
969 # Please keep parameters in alphabetical order
971 # Not sure whether not failing has any useful usage,
972 # but it does not hurt to have some flexibility for future.
973 - csit-fail-on-crc-mismatch-parameter:
974 fail-on-crc-mismatch: 'True'
975 - gerrit-csit-refspec-parameter
978 - gerrit-refspec-parameter:
979 refspec: '{branch-refspec}'
986 - gerrit-trigger-scm:
987 credentials-id: 'jenkins-gerrit-credentials'
988 refspec: '$GERRIT_REFSPEC'
989 choosing-strategy: 'gerrit'
992 - fdio-infra-wrappers-non-activity-timeout:
996 - gerrit-trigger-checkstyle:
1002 !include-raw-escape:
1003 - ../scripts/setup_executor_env.sh
1005 !include-raw-escape:
1006 - ../scripts/setup_vpp_ubuntu_docker_test.sh
1008 !include-raw-escape:
1009 - ../scripts/vpp/check_crc.sh
1010 # TODO: Add sending e-mail notifications to vpp-api-dev@lists.fd.io
1013 - fdio-infra-publish
1014 # [end] VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
1015 # [end] JOB TEMPLATE DEFINITIONS
1021 build-node: centos8-builder-2c-2g
1022 mvn-settings: vpp-settings
1024 - "gerrit-packagecloud-release-verify"
1027 name: vpp-packagecloud-release
1030 build-node: centos8-builder-2c-2g
1031 mvn-settings: vpp-settings
1033 - "gerrit-packagecloud-release-merge"
1034 - "{project-name}-gerrit-release-jobs"