1 # Copyright (c) 2022 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 22.10
57 # os deprecated in master
66 # [end] VPP-CHECKSTYLE-X86_64 PROJECT
70 # NOTE: The list of supported branches for each OS are maintained
71 # in .../ci-management/docker/scripts/lib_vpp.sh
72 # The job configuration must be derived from that list, thus
73 # modifications to both should be made at the same time.
74 # Since x86_64 is the primary development architecture, this
75 # project definition should be identical to the docker image
76 # build scripts. Other architectures may be a subset.
80 - 'vpp-verify-{stream}-{os}-{executor-arch}'
81 - 'vpp-merge-{stream}-{os}-{executor-arch}'
83 make-parallel-jobs: '4'
88 make-test-os: 'ubuntu-22.04'
89 make-test-multiworker-os: 'debian-11'
93 make-test-os: 'ubuntu-20.04'
94 make-test-multiworker-os: 'debian-11'
98 make-test-os: 'ubuntu-20.04'
99 make-test-multiworker-os: 'debian-11'
101 branch: 'stable/2210'
103 make-test-os: 'ubuntu-20.04'
104 make-test-multiworker-os: 'debian-11'
110 executor-arch: 'x86_64'
112 # os deprecated in 22.06
115 # os deprecated in 22.10
118 # os deprecated in master
130 # [end] VPP-X86_64 PROJECT
132 # VPP-DEBUG-X86_64 PROJECT
134 # Currently a periodic job due to intermittent failures.
135 # Limiting branches to master, since other branches
136 # may not get fixes for the intermittent failures.
139 name: vpp-debug-x86_64
141 - 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
143 make-parallel-jobs: '4'
144 make-test-os: 'ubuntu-22.04'
145 comment-trigger-value: 'debug-verify'
151 periodicity: 'H * * * *'
153 executor-arch: 'x86_64'
155 # [end] VPP-DEBUG-X86_64 PROJECT
157 # VPP-GCC-X86_64 PROJECT
161 - 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
163 make-parallel-jobs: '4'
167 executor-arch: 'x86_64'
173 branch: 'stable/2202'
176 branch: 'stable/2206'
179 branch: 'stable/2210'
182 # os deprecated in 22.10
185 # os deprecated in master
194 # [end] VPP-GCC-X86_64 PROJECT
196 # VPP-AARCH64 PROJECT
198 # NOTE: The list of supported branches for each OS are maintained
199 # in .../ci-management/docker/scripts/lib_vpp.sh
200 # The job configuration must be derived from that list, thus
201 # modifications to both should be made at the same time.
202 # The AARCH64 architecture is in the process of catching up
203 # with X86_64 in terms of OS coverage. Thus the jobs are
204 # a subset of those defined in the docker image build script.
208 - 'vpp-verify-{stream}-{os}-{executor-arch}'
209 - 'vpp-merge-{stream}-{os}-{executor-arch}'
211 make-parallel-jobs: '4'
216 make-test-os: 'ubuntu-22.04'
217 make-test-multiworker-os: ''
219 branch: 'stable/2202'
221 make-test-os: 'ubuntu-20.04'
222 make-test-multiworker-os: ''
224 branch: 'stable/2206'
226 make-test-os: 'ubuntu-20.04'
227 make-test-multiworker-os: ''
229 branch: 'stable/2210'
231 make-test-os: 'ubuntu-20.04'
232 make-test-multiworker-os: ''
236 executor-arch: 'aarch64'
244 # [end] VPP-AARCH64 PROJECT
246 # VPP-CSIT-VERIFY-DEVICE PROJECT
248 name: vpp-csit-verify-device
250 - 'vpp-csit-verify-device-{stream}-{os}-{executor-arch}-{testbed-arch}':
251 make-parallel-jobs: '32'
259 branch: 'stable/2210'
264 executor-arch: 'x86_64'
267 executor-arch: 'aarch64'
269 # [end] VPP-CSIT-VERIFY-DEVICE PROJECT
271 # VPP-CSIT-VERIFY-PERF PROJECT
273 name: vpp-csit-verify-perf
275 - 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}'
285 executor-arch: 'x86_64'
288 executor-arch: 'x86_64'
291 executor-arch: 'x86_64'
294 executor-arch: 'x86_64'
297 executor-arch: 'x86_64'
300 executor-arch: 'x86_64'
303 executor-arch: 'aarch64'
304 make-parallel-jobs: '16'
307 executor-arch: 'aarch64'
308 make-parallel-jobs: '16'
311 executor-arch: 'aarch64'
312 make-parallel-jobs: '16'
315 executor-arch: 'x86_64'
316 # [end] VPP-CSIT-VERIFY-PERF PROJECT
318 # VPP-CSIT-API-CRC PROJECT
320 # Only master and LTS branches are supported.
323 name: vpp-csit-api-crc
325 - 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}'
327 executor-arch: 'x86_64'
334 branch: 'stable/2202'
337 branch: 'stable/2206'
340 branch: 'stable/2210'
346 # os deprecated in 22.10
349 # os deprecated in master
358 # [end] VPP-CSIT-API-CRC PROJECT
360 # LF RELENG VPP PROJECTS
365 - gerrit-info-yaml-verify
366 build-node: centos7-builder-2c-2g
375 # [end] LF RELENG VPP PROJECTS
376 # [end] PROJECT DEFINITIONS
378 # JOB TEMPLATE DEFINITIONS
380 # Please keep job templates in the same order as they are referenced
381 # in the project definitions above.
383 # VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
385 name: 'vpp-checkstyle-verify-{stream}-{os}-{executor-arch}'
387 project-type: freestyle
388 node: 'builder-{os}-prod-{executor-arch}'
392 - lf-infra-properties:
393 build-days-to-keep: "{build-days-to-keep}"
395 # Please keep parameters in alphabetical order
399 - gerrit-refspec-parameter:
400 refspec: '{branch-refspec}'
407 - gerrit-trigger-scm:
408 credentials-id: 'jenkins-gerrit-credentials'
409 refspec: '$GERRIT_REFSPEC'
410 choosing-strategy: 'gerrit'
413 - fdio-infra-wrappers:
414 build-timeout: '{build-timeout}'
415 - credentials-binding:
417 credential-id: VppApiCompatNotify
418 variable: SECRET_WEBEX_TEAMS_ACCESS_TOKEN
422 server-name: 'Primary'
424 - patchset-created-event:
425 exclude-drafts: 'true'
426 exclude-trivial-rebase: 'false'
427 exclude-no-code-change: 'false'
428 - draft-published-event
429 - comment-added-contains-event:
430 comment-contains-value: 'checkstylecheck'
431 - comment-added-contains-event:
432 comment-contains-value: 'docsonly'
433 - comment-added-contains-event:
434 comment-contains-value: 'recheck'
435 - comment-added-contains-event:
436 comment-contains-value: 'reverify'
437 # Following two are to cover missing functions of drafts
438 # going to review status
439 - comment-added-contains-event:
440 comment-contains-value: 'runtest'
441 - comment-added-contains-event:
442 comment-contains-value: 'This change is ready for review'
444 - project-compare-type: 'ANT'
445 project-pattern: '{project}'
447 - branch-compare-type: 'ANT'
448 branch-pattern: '**/{branch}'
450 - compare-type: REG_EXP
451 pattern: ^((?!\/COMMIT_MSG|docs|_abc|_def[\/\.]).)*$
452 forbidden-file-paths:
453 - compare-type: REG_EXP
454 pattern: .*extras\/emacs\/.*
455 disable-strict-forbidden-file-verification: 'true'
457 gerrit-build-notbuilt-verified-value: 0
458 gerrit-build-successful-verified-value: 1
459 # yamllint disable-line rule:line-length
460 notbuilt-message: 'Automatic retry of failed jobs may be in process. A proper vote should be set when retry completes.'
461 # yamllint disable-line rule:line-length
462 failed-message: 'Checkstyle failed. No further verify jobs will be started.'
463 successful-message: 'checkstyle_success'
473 - ../scripts/setup_executor_env.sh
476 - ../scripts/vpp/checkstyle.sh
479 - ../scripts/vpp/test-checkstyle.sh
482 - ../scripts/vpp/api-checkstyle.sh
485 - ../scripts/vpp/commitmsg.sh
488 - ../scripts/vpp/docs_spell.sh
493 # [end] VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
495 # VPP-VERIFY JOB TEMPLATE
497 name: 'vpp-verify-{stream}-{os}-{executor-arch}'
499 project-type: freestyle
500 node: 'builder-{os}-prod-{executor-arch}'
504 - lf-infra-properties:
505 build-days-to-keep: "{build-days-to-keep}"
507 # Please keep parameters in alphabetical order
511 - gerrit-refspec-parameter:
512 refspec: '{branch-refspec}'
513 - make-parallel-jobs-parameter:
514 make-parallel-jobs: '{make-parallel-jobs}'
515 - make-test-os-parameter:
516 make-test-os: '{make-test-os}'
517 - make-test-multiworker-os-parameter:
518 make-test-multiworker-os: '{make-test-multiworker-os}'
527 - gerrit-trigger-scm:
528 credentials-id: 'jenkins-gerrit-credentials'
529 refspec: '$GERRIT_REFSPEC'
530 choosing-strategy: 'gerrit'
533 - fdio-infra-wrappers:
537 - gerrit-trigger-checkstyle:
544 - ../scripts/setup_executor_env.sh
547 - ../scripts/setup_vpp_ubuntu_docker_test.sh
550 - ../scripts/setup_vpp_ext_deps.sh
553 - ../scripts/vpp/build.sh
557 # [end] VPP-VERIFY JOB TEMPLATE
559 # VPP-DEBUG-VERIFY JOB TEMPLATE
561 name: 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
563 project-type: freestyle
564 node: 'builder-{os}-prod-{executor-arch}'
568 - lf-infra-properties:
569 build-days-to-keep: "{build-days-to-keep}"
571 # Please keep parameters in alphabetical order
575 - gerrit-refspec-parameter:
576 refspec: '{branch-refspec}'
577 - make-parallel-jobs-parameter:
578 make-parallel-jobs: '{make-parallel-jobs}'
579 - make-test-os-parameter:
580 make-test-os: '{make-test-os}'
589 - gerrit-trigger-scm:
590 credentials-id: 'jenkins-gerrit-credentials'
591 refspec: '$GERRIT_REFSPEC'
592 choosing-strategy: 'gerrit'
595 - fdio-infra-wrappers:
596 build-timeout: '{build-timeout}'
599 - timed: '{periodicity}'
600 - gerrit-trigger-manually-triggered:
601 comment-trigger-value: '{comment-trigger-value}'
608 - ../scripts/setup_executor_env.sh
611 - ../scripts/setup_vpp_ubuntu_docker_test.sh
614 - ../scripts/setup_vpp_ext_deps.sh
617 - ../scripts/vpp/debug-build.sh
621 # [end] VPP-DEBUG-VERIFY-PERIODIC JOB TEMPLATE
623 # VPP-MERGE JOB TEMPLATE
625 name: 'vpp-merge-{stream}-{os}-{executor-arch}'
627 project-type: freestyle
628 node: 'builder-{os}-prod-{executor-arch}'
631 - lf-infra-properties:
632 build-days-to-keep: "{build-days-to-keep}"
634 # Please keep parameters in alphabetical order
638 - make-parallel-jobs-parameter:
639 make-parallel-jobs: '{make-parallel-jobs}'
640 - make-test-os-parameter:
641 make-test-os: '{make-test-os}'
642 - make-test-multiworker-os-parameter:
643 make-test-multiworker-os: '{make-test-multiworker-os}'
652 - gerrit-trigger-scm:
653 credentials-id: 'jenkins-gerrit-credentials'
655 choosing-strategy: 'default'
658 - fdio-infra-wrappers:
662 - gerrit-trigger-patch-merged:
667 - config-file-provider:
669 - file-id: '.packagecloud'
670 target: '/root/.packagecloud'
671 - config-file-provider:
673 - file-id: 'packagecloud_api'
674 target: '/root/packagecloud_api'
677 - ../scripts/setup_executor_env.sh
680 - ../scripts/setup_vpp_ubuntu_docker_test.sh
683 - ../scripts/setup_vpp_ext_deps.sh
686 - ../scripts/vpp/build.sh
689 - ../scripts/packagecloud_push.sh
693 # [end] VPP-MERGE JOB TEMPLATE
695 # VPP-GCC-VERIFY JOB TEMPLATE
697 name: 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
699 project-type: freestyle
700 node: 'builder-{os}-prod-{executor-arch}'
704 - lf-infra-properties:
705 build-days-to-keep: "{build-days-to-keep}"
707 # Please keep parameters in alphabetical order
711 - gerrit-refspec-parameter:
712 refspec: '{branch-refspec}'
713 - make-parallel-jobs-parameter:
714 make-parallel-jobs: '{make-parallel-jobs}'
723 - gerrit-trigger-scm:
724 credentials-id: 'jenkins-gerrit-credentials'
725 refspec: '$GERRIT_REFSPEC'
726 choosing-strategy: 'gerrit'
729 - fdio-infra-wrappers:
733 - gerrit-trigger-checkstyle:
740 - ../scripts/setup_executor_env.sh
743 - ../scripts/setup_vpp_ubuntu_docker_test.sh
746 - ../scripts/setup_vpp_ext_deps.sh
749 - ../scripts/vpp/gcc-build.sh
753 # [end] VPP-GCC-VERIFY JOB TEMPLATE
755 # VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
757 name: 'vpp-csit-verify-device-{stream}-{os}-{executor-arch}-{testbed-arch}'
762 <li>csit-builder-{os}-prod-{executor-arch}
764 <li>testbed architecture
770 project-type: freestyle
771 node: 'csit-builder-{os}-prod-{executor-arch}'
776 - lf-infra-properties:
777 build-days-to-keep: "{build-days-to-keep}"
779 # Please keep parameters in alphabetical order
781 - gerrit-csit-refspec-parameter
782 - gerrit-event-comment-text-parameter
783 - gerrit-event-type-parameter
786 - gerrit-refspec-parameter:
787 refspec: '{branch-refspec}'
788 - make-parallel-jobs-parameter:
789 make-parallel-jobs: '{make-parallel-jobs}'
798 - gerrit-trigger-scm:
799 credentials-id: 'jenkins-gerrit-credentials'
800 refspec: '$GERRIT_REFSPEC'
801 choosing-strategy: 'gerrit'
804 - fdio-infra-wrappers:
808 - 'gerrit-trigger-vpp-csit-devicetest-full':
811 skip-vote: '{skip-vote}'
816 - ../scripts/setup_executor_env.sh
819 - ../scripts/setup_vpp_ubuntu_docker_test.sh
822 - ../scripts/setup_vpp_ext_deps.sh
825 - ../scripts/vpp/csit-device.sh
829 # [end] VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
831 # VPP-CSIT-VERIFY-PERF JOB TEMPLATE
833 name: 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}'
838 <li>builder-{os}-prod-{executor-arch}
840 <li>testbed architecture
845 Contrary to csit-vpp job, this also measures the parent performance,
846 and fails if performance regression is detected.
847 See https://github.com/FDio/csit/blob/master/docs/cpta/methodology/perpatch_performance_tests.rst
850 project-type: freestyle
851 node: 'builder-{os}-prod-{executor-arch}'
856 - lf-infra-properties:
857 build-days-to-keep: "{build-days-to-keep}"
859 # Please keep parameters in alphabetical order
861 - csit-perf-trial-duration-parameter:
862 csit-perf-trial-duration: "10.0"
863 - csit-perf-trial-multiplicity-parameter:
864 csit-perf-trial-multiplicity: "5"
865 - gerrit-csit-refspec-parameter
866 - gerrit-event-comment-text-parameter
867 - gerrit-event-type-parameter
868 - gerrit-refspec-parameter:
869 refspec: '{branch-refspec}'
872 - make-parallel-jobs-parameter:
873 make-parallel-jobs: '{make-parallel-jobs}'
882 - gerrit-trigger-scm:
883 credentials-id: 'jenkins-gerrit-credentials'
884 refspec: '$GERRIT_REFSPEC'
885 choosing-strategy: 'gerrit'
888 - fdio-infra-wrappers-non-activity-timeout:
892 - gerrit-trigger-csit-perftest:
895 trigger-word: 'perftest-{testbed-arch}'
901 - ../scripts/setup_executor_env.sh
904 - ../scripts/setup_vpp_ubuntu_docker_test.sh
907 - ../scripts/setup_vpp_ext_deps.sh
910 - ../scripts/vpp/csit-perf.sh
914 # Can be removed when all CSIT branches use correct archive directory.
925 - ../scripts/vpp/copy_archives.sh
927 output-path: 'archives/csit_current/0/'
930 # [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE
932 # VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
934 name: 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}'
936 project-type: freestyle
937 node: 'builder-{os}-prod-{executor-arch}'
942 - lf-infra-properties:
943 build-days-to-keep: "{build-days-to-keep}"
945 # Please keep parameters in alphabetical order
947 # Not sure whether not failing has any useful usage,
948 # but it does not hurt to have some flexibility for future.
949 - csit-fail-on-crc-mismatch-parameter:
950 fail-on-crc-mismatch: 'True'
951 - gerrit-csit-refspec-parameter
954 - gerrit-refspec-parameter:
955 refspec: '{branch-refspec}'
962 - gerrit-trigger-scm:
963 credentials-id: 'jenkins-gerrit-credentials'
964 refspec: '$GERRIT_REFSPEC'
965 choosing-strategy: 'gerrit'
968 - fdio-infra-wrappers-non-activity-timeout:
972 - gerrit-trigger-checkstyle:
979 - ../scripts/setup_executor_env.sh
982 - ../scripts/setup_vpp_ubuntu_docker_test.sh
985 - ../scripts/vpp/check_crc.sh
986 # TODO: Add sending e-mail notifications to vpp-api-dev@lists.fd.io
990 # [end] VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
991 # [end] JOB TEMPLATE DEFINITIONS