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'
150 make-test-os: 'ubuntu-22.04'
152 executor-arch: 'x86_64'
154 # [end] VPP-DEBUG-X86_64 PROJECT
156 # VPP-GCC-X86_64 PROJECT
160 - 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
162 make-parallel-jobs: '4'
166 executor-arch: 'x86_64'
172 branch: 'stable/2202'
175 branch: 'stable/2206'
178 branch: 'stable/2210'
181 # os deprecated in 22.10
184 # os deprecated in master
193 # [end] VPP-GCC-X86_64 PROJECT
195 # VPP-AARCH64 PROJECT
197 # NOTE: The list of supported branches for each OS are maintained
198 # in .../ci-management/docker/scripts/lib_vpp.sh
199 # The job configuration must be derived from that list, thus
200 # modifications to both should be made at the same time.
201 # The AARCH64 architecture is in the process of catching up
202 # with X86_64 in terms of OS coverage. Thus the jobs are
203 # a subset of those defined in the docker image build script.
207 - 'vpp-verify-{stream}-{os}-{executor-arch}'
208 - 'vpp-merge-{stream}-{os}-{executor-arch}'
210 make-parallel-jobs: '4'
215 make-test-os: 'ubuntu-22.04'
216 make-test-multiworker-os: ''
218 branch: 'stable/2202'
220 make-test-os: 'ubuntu-20.04'
221 make-test-multiworker-os: ''
223 branch: 'stable/2206'
225 make-test-os: 'ubuntu-20.04'
226 make-test-multiworker-os: ''
228 branch: 'stable/2210'
230 make-test-os: 'ubuntu-20.04'
231 make-test-multiworker-os: ''
235 executor-arch: 'aarch64'
243 # [end] VPP-AARCH64 PROJECT
245 # VPP-CSIT-VERIFY-DEVICE PROJECT
247 name: vpp-csit-verify-device
249 - 'vpp-csit-verify-device-{stream}-{os}-{executor-arch}-{testbed-arch}':
250 make-parallel-jobs: '32'
258 branch: 'stable/2210'
263 executor-arch: 'x86_64'
266 executor-arch: 'aarch64'
268 # [end] VPP-CSIT-VERIFY-DEVICE PROJECT
270 # VPP-CSIT-VERIFY-PERF PROJECT
272 name: vpp-csit-verify-perf
274 - 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}'
284 executor-arch: 'x86_64'
287 executor-arch: 'x86_64'
290 executor-arch: 'x86_64'
293 executor-arch: 'x86_64'
296 executor-arch: 'x86_64'
299 executor-arch: 'x86_64'
302 executor-arch: 'aarch64'
303 make-parallel-jobs: '16'
306 executor-arch: 'aarch64'
307 make-parallel-jobs: '16'
310 executor-arch: 'aarch64'
311 make-parallel-jobs: '16'
314 executor-arch: 'x86_64'
315 # [end] VPP-CSIT-VERIFY-PERF PROJECT
317 # VPP-CSIT-API-CRC PROJECT
319 # Only master and LTS branches are supported.
322 name: vpp-csit-api-crc
324 - 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}'
326 executor-arch: 'x86_64'
333 branch: 'stable/2202'
336 branch: 'stable/2206'
339 branch: 'stable/2210'
345 # os deprecated in 22.10
348 # os deprecated in master
357 # [end] VPP-CSIT-API-CRC PROJECT
359 # LF RELENG VPP PROJECTS
364 - gerrit-info-yaml-verify
365 build-node: centos7-builder-2c-2g
374 # [end] LF RELENG VPP PROJECTS
375 # [end] PROJECT DEFINITIONS
377 # JOB TEMPLATE DEFINITIONS
379 # Please keep job templates in the same order as they are referenced
380 # in the project definitions above.
382 # VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
384 name: 'vpp-checkstyle-verify-{stream}-{os}-{executor-arch}'
386 project-type: freestyle
387 node: 'builder-{os}-prod-{executor-arch}'
391 - lf-infra-properties:
392 build-days-to-keep: "{build-days-to-keep}"
394 # Please keep parameters in alphabetical order
398 - gerrit-refspec-parameter:
399 refspec: '{branch-refspec}'
406 - gerrit-trigger-scm:
407 credentials-id: 'jenkins-gerrit-credentials'
408 refspec: '$GERRIT_REFSPEC'
409 choosing-strategy: 'gerrit'
412 - fdio-infra-wrappers:
413 build-timeout: '{build-timeout}'
414 - credentials-binding:
416 credential-id: VppApiCompatNotify
417 variable: SECRET_WEBEX_TEAMS_ACCESS_TOKEN
421 server-name: 'Primary'
423 - patchset-created-event:
424 exclude-drafts: 'true'
425 exclude-trivial-rebase: 'false'
426 exclude-no-code-change: 'false'
427 - draft-published-event
428 - comment-added-contains-event:
429 comment-contains-value: 'checkstylecheck'
430 - comment-added-contains-event:
431 comment-contains-value: 'docsonly'
432 - comment-added-contains-event:
433 comment-contains-value: 'recheck'
434 - comment-added-contains-event:
435 comment-contains-value: 'reverify'
436 # Following two are to cover missing functions of drafts
437 # going to review status
438 - comment-added-contains-event:
439 comment-contains-value: 'runtest'
440 - comment-added-contains-event:
441 comment-contains-value: 'This change is ready for review'
443 - project-compare-type: 'ANT'
444 project-pattern: '{project}'
446 - branch-compare-type: 'ANT'
447 branch-pattern: '**/{branch}'
449 - compare-type: REG_EXP
450 pattern: ^((?!\/COMMIT_MSG|docs|_abc|_def[\/\.]).)*$
451 forbidden-file-paths:
452 - compare-type: REG_EXP
453 pattern: .*extras\/emacs\/.*
454 disable-strict-forbidden-file-verification: 'true'
456 gerrit-build-notbuilt-verified-value: 0
457 gerrit-build-successful-verified-value: 1
458 # yamllint disable-line rule:line-length
459 notbuilt-message: 'Automatic retry of failed jobs may be in process. A proper vote should be set when retry completes.'
460 # yamllint disable-line rule:line-length
461 failed-message: 'Checkstyle failed. No further verify jobs will be started.'
462 successful-message: 'checkstyle_success'
472 - ../scripts/setup_executor_env.sh
475 - ../scripts/vpp/checkstyle.sh
478 - ../scripts/vpp/test-checkstyle.sh
481 - ../scripts/vpp/api-checkstyle.sh
484 - ../scripts/vpp/commitmsg.sh
487 - ../scripts/vpp/docs_spell.sh
492 # [end] VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
494 # VPP-VERIFY JOB TEMPLATE
496 name: 'vpp-verify-{stream}-{os}-{executor-arch}'
498 project-type: freestyle
499 node: 'builder-{os}-prod-{executor-arch}'
503 - lf-infra-properties:
504 build-days-to-keep: "{build-days-to-keep}"
506 # Please keep parameters in alphabetical order
510 - gerrit-refspec-parameter:
511 refspec: '{branch-refspec}'
512 - make-parallel-jobs-parameter:
513 make-parallel-jobs: '{make-parallel-jobs}'
514 - make-test-os-parameter:
515 make-test-os: '{make-test-os}'
516 - make-test-multiworker-os-parameter:
517 make-test-multiworker-os: '{make-test-multiworker-os}'
526 - gerrit-trigger-scm:
527 credentials-id: 'jenkins-gerrit-credentials'
528 refspec: '$GERRIT_REFSPEC'
529 choosing-strategy: 'gerrit'
532 - fdio-infra-wrappers:
536 - gerrit-trigger-checkstyle:
543 - ../scripts/setup_executor_env.sh
546 - ../scripts/setup_vpp_ubuntu_docker_test.sh
549 - ../scripts/setup_vpp_ext_deps.sh
552 - ../scripts/vpp/build.sh
556 # [end] VPP-VERIFY JOB TEMPLATE
558 # VPP-DEBUG-VERIFY JOB TEMPLATE
560 name: 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
562 project-type: freestyle
563 node: 'builder-{os}-prod-{executor-arch}'
567 - lf-infra-properties:
568 build-days-to-keep: "{build-days-to-keep}"
570 # Please keep parameters in alphabetical order
574 - gerrit-refspec-parameter:
575 refspec: '{branch-refspec}'
576 - make-parallel-jobs-parameter:
577 make-parallel-jobs: '{make-parallel-jobs}'
578 - make-test-os-parameter:
579 make-test-os: '{make-test-os}'
588 - gerrit-trigger-scm:
589 credentials-id: 'jenkins-gerrit-credentials'
590 refspec: '$GERRIT_REFSPEC'
591 choosing-strategy: 'gerrit'
594 - fdio-infra-wrappers:
595 build-timeout: '{build-timeout}'
598 - gerrit-trigger-checkstyle-nonvoting:
601 - gerrit-trigger-manually-triggered:
602 comment-trigger-value: '{comment-trigger-value}'
609 - ../scripts/setup_executor_env.sh
612 - ../scripts/setup_vpp_ubuntu_docker_test.sh
615 - ../scripts/setup_vpp_ext_deps.sh
618 - ../scripts/vpp/debug-build.sh
622 # [end] VPP-DEBUG-VERIFY-PERIODIC JOB TEMPLATE
624 # VPP-MERGE JOB TEMPLATE
626 name: 'vpp-merge-{stream}-{os}-{executor-arch}'
628 project-type: freestyle
629 node: 'builder-{os}-prod-{executor-arch}'
632 - lf-infra-properties:
633 build-days-to-keep: "{build-days-to-keep}"
635 # Please keep parameters in alphabetical order
639 - make-parallel-jobs-parameter:
640 make-parallel-jobs: '{make-parallel-jobs}'
641 - make-test-os-parameter:
642 make-test-os: '{make-test-os}'
643 - make-test-multiworker-os-parameter:
644 make-test-multiworker-os: '{make-test-multiworker-os}'
653 - gerrit-trigger-scm:
654 credentials-id: 'jenkins-gerrit-credentials'
656 choosing-strategy: 'default'
659 - fdio-infra-wrappers:
663 - gerrit-trigger-patch-merged:
668 - config-file-provider:
670 - file-id: '.packagecloud'
671 target: '/root/.packagecloud'
672 - config-file-provider:
674 - file-id: 'packagecloud_api'
675 target: '/root/packagecloud_api'
678 - ../scripts/setup_executor_env.sh
681 - ../scripts/setup_vpp_ubuntu_docker_test.sh
684 - ../scripts/setup_vpp_ext_deps.sh
687 - ../scripts/vpp/build.sh
690 - ../scripts/packagecloud_push.sh
694 # [end] VPP-MERGE JOB TEMPLATE
696 # VPP-GCC-VERIFY JOB TEMPLATE
698 name: 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
700 project-type: freestyle
701 node: 'builder-{os}-prod-{executor-arch}'
705 - lf-infra-properties:
706 build-days-to-keep: "{build-days-to-keep}"
708 # Please keep parameters in alphabetical order
712 - gerrit-refspec-parameter:
713 refspec: '{branch-refspec}'
714 - make-parallel-jobs-parameter:
715 make-parallel-jobs: '{make-parallel-jobs}'
724 - gerrit-trigger-scm:
725 credentials-id: 'jenkins-gerrit-credentials'
726 refspec: '$GERRIT_REFSPEC'
727 choosing-strategy: 'gerrit'
730 - fdio-infra-wrappers:
734 - gerrit-trigger-checkstyle:
741 - ../scripts/setup_executor_env.sh
744 - ../scripts/setup_vpp_ubuntu_docker_test.sh
747 - ../scripts/setup_vpp_ext_deps.sh
750 - ../scripts/vpp/gcc-build.sh
754 # [end] VPP-GCC-VERIFY JOB TEMPLATE
756 # VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
758 name: 'vpp-csit-verify-device-{stream}-{os}-{executor-arch}-{testbed-arch}'
763 <li>csit-builder-{os}-prod-{executor-arch}
765 <li>testbed architecture
771 project-type: freestyle
772 node: 'csit-builder-{os}-prod-{executor-arch}'
777 - lf-infra-properties:
778 build-days-to-keep: "{build-days-to-keep}"
780 # Please keep parameters in alphabetical order
782 - gerrit-csit-refspec-parameter
783 - gerrit-event-comment-text-parameter
784 - gerrit-event-type-parameter
787 - gerrit-refspec-parameter:
788 refspec: '{branch-refspec}'
789 - make-parallel-jobs-parameter:
790 make-parallel-jobs: '{make-parallel-jobs}'
799 - gerrit-trigger-scm:
800 credentials-id: 'jenkins-gerrit-credentials'
801 refspec: '$GERRIT_REFSPEC'
802 choosing-strategy: 'gerrit'
805 - fdio-infra-wrappers:
809 - 'gerrit-trigger-vpp-csit-devicetest-full':
812 skip-vote: '{skip-vote}'
817 - ../scripts/setup_executor_env.sh
820 - ../scripts/setup_vpp_ubuntu_docker_test.sh
823 - ../scripts/setup_vpp_ext_deps.sh
826 - ../scripts/vpp/csit-device.sh
830 # [end] VPP-CSIT-VERIFY-DEVICE-PERPATCH JOB TEMPLATE
832 # VPP-CSIT-VERIFY-PERF JOB TEMPLATE
834 name: 'vpp-csit-verify-perf-{stream}-{os}-{executor-arch}-{testbed-arch}'
839 <li>builder-{os}-prod-{executor-arch}
841 <li>testbed architecture
846 Contrary to csit-vpp job, this also measures the parent performance,
847 and fails if performance regression is detected.
848 See https://github.com/FDio/csit/blob/master/docs/cpta/methodology/perpatch_performance_tests.rst
851 project-type: freestyle
852 node: 'builder-{os}-prod-{executor-arch}'
857 - lf-infra-properties:
858 build-days-to-keep: "{build-days-to-keep}"
860 # Please keep parameters in alphabetical order
862 - csit-perf-trial-duration-parameter:
863 csit-perf-trial-duration: "10.0"
864 - csit-perf-trial-multiplicity-parameter:
865 csit-perf-trial-multiplicity: "5"
866 - gerrit-csit-refspec-parameter
867 - gerrit-event-comment-text-parameter
868 - gerrit-event-type-parameter
869 - gerrit-refspec-parameter:
870 refspec: '{branch-refspec}'
873 - make-parallel-jobs-parameter:
874 make-parallel-jobs: '{make-parallel-jobs}'
883 - gerrit-trigger-scm:
884 credentials-id: 'jenkins-gerrit-credentials'
885 refspec: '$GERRIT_REFSPEC'
886 choosing-strategy: 'gerrit'
889 - fdio-infra-wrappers-non-activity-timeout:
893 - gerrit-trigger-csit-perftest:
896 trigger-word: 'perftest-{testbed-arch}'
902 - ../scripts/setup_executor_env.sh
905 - ../scripts/setup_vpp_ubuntu_docker_test.sh
908 - ../scripts/setup_vpp_ext_deps.sh
911 - ../scripts/vpp/csit-perf.sh
915 # Can be removed when all CSIT branches use correct archive directory.
926 - ../scripts/vpp/copy_archives.sh
928 output-path: 'archives/csit_current/0/'
931 # [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE
933 # VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
935 name: 'vpp-csit-verify-api-crc-{stream}-{os}-{executor-arch}'
937 project-type: freestyle
938 node: 'builder-{os}-prod-{executor-arch}'
943 - lf-infra-properties:
944 build-days-to-keep: "{build-days-to-keep}"
946 # Please keep parameters in alphabetical order
948 # Not sure whether not failing has any useful usage,
949 # but it does not hurt to have some flexibility for future.
950 - csit-fail-on-crc-mismatch-parameter:
951 fail-on-crc-mismatch: 'True'
952 - gerrit-csit-refspec-parameter
955 - gerrit-refspec-parameter:
956 refspec: '{branch-refspec}'
963 - gerrit-trigger-scm:
964 credentials-id: 'jenkins-gerrit-credentials'
965 refspec: '$GERRIT_REFSPEC'
966 choosing-strategy: 'gerrit'
969 - fdio-infra-wrappers-non-activity-timeout:
973 - gerrit-trigger-checkstyle:
980 - ../scripts/setup_executor_env.sh
983 - ../scripts/setup_vpp_ubuntu_docker_test.sh
986 - ../scripts/vpp/check_crc.sh
987 # TODO: Add sending e-mail notifications to vpp-api-dev@lists.fd.io
991 # [end] VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
992 # [end] JOB TEMPLATE DEFINITIONS