1 # Copyright (c) 2021 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.
18 # Keep 'parameter' entries ordered alphabetically, please.
25 description: "Architecture parameter"
28 name: compiler-parameter
33 description: "CC parameter, can be gnu or clang"
36 name: make-parallel-jobs-parameter
39 name: MAKE_PARALLEL_JOBS
40 default: '{make-parallel-jobs}'
41 description: "The number of cores to use for builds."
44 name: make-test-os-parameter
48 default: '{make-test-os}'
49 description: "The OS on which 'make test' is run."
52 name: make-test-multiworker-os-parameter
55 name: MAKE_TEST_MULTIWORKER_OS
56 default: '{make-test-multiworker-os}'
57 description: "The OS on which 'make test' is run with multiple VPP workers."
60 name: csit-fail-on-crc-mismatch-parameter
63 name: FDIO_CSIT_FAIL_ON_CRC_MISMATCH
64 default: '{fail-on-crc-mismatch}'
65 description: "If true, CRC is checked, else compatibility is tested."
68 name: csit-perf-trial-duration-parameter
71 name: CSIT_PERF_TRIAL_DURATION
72 default: "{csit-perf-trial-duration}"
73 description: "Duration of a trial measurement in BMRR tests."
76 name: csit-perf-trial-multiplicity-parameter
79 name: CSIT_PERF_TRIAL_MULTIPLICITY
80 default: "{csit-perf-trial-multiplicity}"
81 description: "Number of subsamples for BMRR tests."
84 name: gerrit-csit-refspec-parameter
89 # yamllint disable-line rule:line-length
90 description: "GERRIT_REFSPEC parameter to override separately cloned CSIT repository, leave empty for autodetection / no override."
93 name: gerrit-event-comment-text-parameter
96 name: GERRIT_EVENT_COMMENT_TEXT
98 # yamllint disable-line rule:line-length
99 description: "GERRIT_EVENT_COMMENT_TEXT parameter not given by trigger"
102 name: gerrit-event-type-parameter
105 name: GERRIT_EVENT_TYPE
107 description: "GERRIT_EVENT_TYPE parameter not given by trigger"
110 name: gerrit-parameter
115 description: "JJB configured GERRIT_BRANCH parameter"
118 name: gerrit-project-parameter
123 description: "GERRIT_PROJECT parameter if not given by trigger"
126 name: gerrit-refspec-parameter
131 description: "GERRIT_REFSPEC parameter not given by trigger"
134 name: is-csit-vpp-job-parameter
137 name: IS_CSIT_VPP_JOB
138 default: '{is-csit-vpp-job}'
139 description: "Parameter is True if this is a CSIT vpp job."
146 # yamllint disable-line rule:line-length
147 default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{maven-version}/bin/mvn'
148 description: 'Maven selector to be used by shell scripts'
151 name: maven-project-parameter
156 description: 'Maven selector to be used by shell scripts'
164 description: "mode parameter to be used in shell scripts."
172 description: "OS parameter"
175 name: project-parameter
180 # yamllint disable-line rule:line-length
181 description: "JJB configured PROJECT parameter to identify a Gerrit project"
184 name: stream-parameter
189 description: "Stream job parameter to be used in shell scripts."
197 description: "Topology parameter"
198 # [end] Keep 'parameter' entries ordered alphabetically, please.
201 # Keep 'scm' entries ordered alphabetically, please.
203 name: gerrit-trigger-scm
206 credentials-id: '{credentials-id}'
210 - 'origin/$GERRIT_BRANCH'
212 choosing-strategy: '{choosing-strategy}'
215 name: gerrit-trigger-scm-recursive
218 credentials-id: '{credentials-id}'
222 - 'origin/$GERRIT_BRANCH'
224 choosing-strategy: '{choosing-strategy}'
226 recursive: '{submodule-recursive}'
232 credentials-id: '{credentials-id}'
239 # [end] Keep 'scm' entries ordered alphabetically, please.
242 # Keep 'wrapper' entries ordered alphabetically, please.
252 # This wrapper is required for all jobs as it configures the wrappers
253 # needed by the fd.io infra.
254 name: fdio-infra-wrappers
258 timeout: '{build-timeout}'
259 timeout-var: 'BUILD_TIMEOUT'
262 - ssh-agent-credentials:
264 - 'jenkins-gerrit-credentials'
271 # This wrapper is used for all jobs that require no-activity timeouts
272 name: fdio-infra-wrappers-non-activity-timeout
276 timeout: '{build-timeout}'
279 - ssh-agent-credentials:
281 - 'jenkins-gerrit-credentials'
286 # [end] Keep 'wrapper' entries ordered alphabetically, please.
289 # Keep 'trigger' entries ordered alphabetically, please.
291 name: gerrit-trigger-build
292 # Comes from hicn, some verify jobs wait for build to pass.
295 server-name: 'Primary'
297 - comment-added-contains-event:
298 comment-contains-value: 'build_success-{stream}-{os}-{executor-arch}'
300 - project-compare-type: 'ANT'
301 project-pattern: '{name}'
303 - branch-compare-type: 'ANT'
304 branch-pattern: '**/{branch}'
307 name: gerrit-trigger-checkstyle
308 # Comes from VPP, some verify jobs wait for checkstyle to pass.
309 # This macro is to be used for such verify jobs which are voting.
312 server-name: 'Primary'
314 - comment-added-contains-event:
315 comment-contains-value: 'checkstyle_success'
317 - project-compare-type: 'ANT'
318 project-pattern: '{name}'
320 - branch-compare-type: 'ANT'
321 branch-pattern: '**/{branch}'
324 name: gerrit-trigger-checkstyle-nonvoting
325 # Comes from VPP, some verify jobs wait for checkstyle to pass.
326 # This macro is to be used for such verify jobs which are non-voting.
329 server-name: 'Primary'
331 - comment-added-contains-event:
332 comment-contains-value: 'checkstyle_success'
334 - project-compare-type: 'ANT'
335 project-pattern: '{name}'
337 - branch-compare-type: 'ANT'
338 branch-pattern: '**/{branch}'
345 gerrit-build-successful-verified-value: 1
346 gerrit-build-failed-verified-value: 1
347 gerrit-build-unstable-verified-value: 1
348 gerrit-build-notbuilt-verified-value: 1
351 name: gerrit-trigger-csit-perftest
352 # Manual trigger common for csit-vpp and vpp-csit perf jobs.
355 server-name: 'Primary'
357 - comment-added-contains-event:
358 comment-contains-value: '{trigger-word}'
360 - project-compare-type: 'ANT'
361 project-pattern: '{project}'
363 - branch-compare-type: 'ANT'
364 branch-pattern: '**/{branch}'
366 successful: '{skip-vote}'
367 failed: '{skip-vote}'
368 unstable: '{skip-vote}'
369 notbuilt: '{skip-vote}'
372 name: gerrit-trigger-csit-terraform
373 # Manual trigger common for csit-terraform jobs.
376 server-name: 'Primary'
378 - comment-added-contains-event:
379 comment-contains-value: '{trigger-word}'
381 - project-compare-type: 'ANT'
382 project-pattern: '{project}'
384 - branch-compare-type: 'ANT'
385 branch-pattern: '**/{branch}'
387 successful: '{skip-vote}'
388 failed: '{skip-vote}'
389 unstable: '{skip-vote}'
390 notbuilt: '{skip-vote}'
393 name: gerrit-trigger-csit-vpp-devicetest-full
394 # Comes from CSIT, for automatic jobs running device tests with VPP builds.
395 # The job acts as an automatic verify job for CSIT contributions.
398 server-name: 'Primary'
400 # The main way the job is triggered automatically on patch upload.
401 # Gated by tox job, so we do not spend resources on WiP changes.
402 - comment-added-contains-event:
403 comment-contains-value: 'tox_success'
404 # Manual trigger to allow testing WiP changes with selected tags.
405 - comment-added-contains-event:
406 comment-contains-value: 'csit-devicetest'
407 # A comment with "recheck" restarts tox job, so no condition here.
409 - project-compare-type: 'ANT'
410 project-pattern: '{project}'
412 - branch-compare-type: 'ANT'
413 branch-pattern: '**/{branch}'
415 successful: '{skip-vote}'
416 failed: '{skip-vote}'
417 unstable: '{skip-vote}'
418 notbuilt: '{skip-vote}'
421 name: gerrit-trigger-csit-vpp-devicetest-manual
422 # Comes from CSIT, for manual jobs running "device" tests with VPP builds.
423 # The job acts as a manual (optional) verify job for CSIT contributions.
426 server-name: 'Primary'
428 - comment-added-contains-event:
429 comment-contains-value: 'csit-devicetest'
431 - project-compare-type: 'ANT'
432 project-pattern: '{project}'
434 - branch-compare-type: 'ANT'
435 branch-pattern: '**/{branch}'
437 successful: '{skip-vote}'
438 failed: '{skip-vote}'
439 unstable: '{skip-vote}'
440 notbuilt: '{skip-vote}'
443 name: gerrit-trigger-manually-triggered
446 server-name: 'Primary'
448 - comment-added-contains-event:
449 comment-contains-value: '{comment-trigger-value}'
451 - project-compare-type: 'ANT'
452 project-pattern: '{name}'
454 - branch-compare-type: 'ANT'
455 branch-pattern: '**/{branch}'
458 name: gerrit-trigger-patch-merged
461 server-name: 'Primary'
463 - change-merged-event
464 - comment-added-contains-event:
465 comment-contains-value: 'remerge'
467 - project-compare-type: 'ANT'
468 project-pattern: '{name}'
470 - branch-compare-type: 'ANT'
471 branch-pattern: '**/{branch}'
472 # Force Jenkins always vote the values it should already have voted
473 # during the prior verify phase
475 gerrit-build-started-verified-value: 1
476 gerrit-build-successful-verified-value: 1
477 gerrit-build-failed-verified-value: 1
478 gerrit-build-unstable-verified-value: 1
479 gerrit-build-notbuilt-verified-value: 1
480 gerrit-build-started-codereview-value: 0
481 gerrit-build-successful-codereview-value: 0
482 gerrit-build-failed-codereview-value: 0
483 gerrit-build-unstable-codereview-value: 0
484 gerrit-build-notbuilt-codereview-value: 0
487 name: gerrit-trigger-patch-submitted
490 server-name: 'Primary'
492 - patchset-created-event:
493 exclude-drafts: 'true'
494 exclude-trivial-rebase: 'false'
495 exclude-no-code-change: 'false'
496 - draft-published-event
497 - comment-added-contains-event:
498 comment-contains-value: 'recheck'
499 - comment-added-contains-event:
500 comment-contains-value: 'reverify'
502 - project-compare-type: 'ANT'
503 project-pattern: '{name}'
505 - branch-compare-type: 'ANT'
506 branch-pattern: '**/{branch}'
509 name: gerrit-trigger-os-patch-merged
512 server-name: 'Primary'
514 - comment-added-contains-event:
515 comment-contains-value: 'os-merge'
517 - project-compare-type: 'ANT'
518 project-pattern: '{name}'
520 - branch-compare-type: 'ANT'
521 branch-pattern: '**/{branch}'
522 # Force Jenkins always vote the values it should already have voted
523 # during the prior verify phase
525 gerrit-build-started-verified-value: 1
526 gerrit-build-successful-verified-value: 1
527 gerrit-build-failed-verified-value: 1
528 gerrit-build-unstable-verified-value: 1
529 gerrit-build-notbuilt-verified-value: 1
530 gerrit-build-started-codereview-value: 0
531 gerrit-build-successful-codereview-value: 0
532 gerrit-build-failed-codereview-value: 0
533 gerrit-build-unstable-codereview-value: 0
534 gerrit-build-notbuilt-codereview-value: 0
537 name: gerrit-trigger-os-trivial-patch-submitted
540 server-name: 'Primary'
542 - comment-added-contains-event:
543 comment-contains-value: 'os-check'
544 - comment-added-contains-event:
545 comment-contains-value: 'os-verify'
547 - project-compare-type: 'ANT'
548 project-pattern: '{name}'
550 - branch-compare-type: 'ANT'
551 branch-pattern: '**/{branch}'
554 name: gerrit-trigger-trivial-patch-submitted
557 server-name: 'Primary'
559 - patchset-created-event:
560 exclude-drafts: 'true'
561 exclude-trivial-rebase: 'false'
562 exclude-no-code-change: 'true'
563 - draft-published-event
564 - comment-added-contains-event:
565 comment-contains-value: 'recheck'
566 - comment-added-contains-event:
567 comment-contains-value: 'reverify'
569 - project-compare-type: 'ANT'
570 project-pattern: '{name}'
572 - branch-compare-type: 'ANT'
573 branch-pattern: '**/{branch}'
576 name: gerrit-trigger-trivial-patch-submitted-skip-vote
579 server-name: 'Primary'
581 - patchset-created-event:
582 exclude-drafts: 'true'
583 exclude-trivial-rebase: 'false'
584 exclude-no-code-change: 'true'
585 - draft-published-event
586 - comment-added-contains-event:
587 comment-contains-value: 'recheck'
588 - comment-added-contains-event:
589 comment-contains-value: 'reverify'
591 - project-compare-type: 'ANT'
592 project-pattern: '{name}'
594 - branch-compare-type: 'ANT'
595 branch-pattern: '**/{branch}'
603 name: gerrit-trigger-vpp-csit-devicetest-full
604 # Comes from VPP, for automated jobs running "device" tests with CSIT code.
605 # The job acts as an automatic verify job for VPP contributions.
608 server-name: 'Primary'
610 - comment-added-contains-event:
611 comment-contains-value: 'checkstyle_success'
612 - comment-added-contains-event:
613 comment-contains-value: 'devicetest'
615 - project-compare-type: 'ANT'
616 project-pattern: '{name}'
618 - branch-compare-type: 'ANT'
619 branch-pattern: '**/{branch}'
621 successful: '{skip-vote}'
622 failed: '{skip-vote}'
623 unstable: '{skip-vote}'
624 notbuilt: '{skip-vote}'
627 name: gerrit-trigger-vpp-csit-devicetest-manual
628 # Comes from VPP, for manual jobs running "device" tests with CSIT code.
629 # The job acts as a manual (optional) verify job for VPP contributions.
632 server-name: 'Primary'
634 - comment-added-contains-event:
635 comment-contains-value: 'devicetest'
637 - project-compare-type: 'ANT'
638 project-pattern: '{name}'
640 - branch-compare-type: 'ANT'
641 branch-pattern: '**/{branch}'
643 successful: '{skip-vote}'
644 failed: '{skip-vote}'
645 unstable: '{skip-vote}'
646 notbuilt: '{skip-vote}'
647 # [end] Keep 'trigger' entries ordered alphabetically, please.
650 # Keep 'publisher' entries ordered alphabetically, please.
652 name: archive-artifacts
655 artifacts: '{artifacts}'
661 name: csit-trending-failed
664 # yamllint disable-line rule:line-length
665 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
668 subject: '{branch}: Failed tests as of $BUILD_TIMESTAMP'
669 # yamllint disable-line rule:line-length
671 Following tests failed in the last trending job runs, listed per testbed type.
673 ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-failed-tests.txt"}}
678 name: csit-trending-failed-job
681 # yamllint disable-line rule:line-length
682 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
685 subject: '{branch}: The build number $BUILD_NUMBER of the job $JOB_NAME failed'
686 # yamllint disable-line rule:line-length
688 For more information see $BUILD_URL.
693 name: csit-trending-progressions
696 # yamllint disable-line rule:line-length
697 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
700 subject: '{branch}: Progressions as of $BUILD_TIMESTAMP'
701 # yamllint disable-line rule:line-length
703 Following progressions occured in the last trending job runs, listed per testbed type.
705 ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-progressions.txt"}}
710 name: csit-trending-regressions
713 # yamllint disable-line rule:line-length
714 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
717 subject: '{branch}: Regressions as of $BUILD_TIMESTAMP'
718 # yamllint disable-line rule:line-length
720 Following regressions occured in the last trending job runs, listed per testbed type.
722 ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-regressions.txt"}}
727 name: vpp-dpdk-rdma-version-mismatch
730 # NOTE: noreply@jenkins.fd.io must be a member of vpp-build@lists.fd.io
731 # for the email to be distributed to the group members.
732 # yamllint disable-line rule:line-length
733 recipients: 'vpp-build@lists.fd.io'
736 subject: '{branch}: vpp-dpdk-rdma-version-mismatch job failed!'
737 # yamllint disable-line rule:line-length
739 Build $BUILD_NUMBER of $JOB_NAME failed.
741 console log to see if the job failed due to a package version mismatch or
742 a CI infra issue. If the failure was due to a CI infra issue, then
743 there is nothing else to be done.
745 However, if there was a package version mismatch, then the MLX driver
746 is NOT being built in the VPP DPDK library. Please push a gerrit change
747 with the updated package version(s) in the version matrix file, resolve
748 any build issues, and merge the change to re-enable the building of the
749 MLX DPDK driver in the VPP DPDK library.
752 The VPP Build Maintainers
758 name: email-notification
761 recipients: 'nobody@projectrotterdam.info'
763 content-type: default
764 # yamllint disable-line rule:line-length
765 subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
767 $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
769 Check console output at $BUILD_URL to view the results.
777 name: fdio-infra-publish-docs
778 # macro to finish up a docs build.
780 # Handles the following:
781 # - Mapping docs S3 bucket credentials for merge job docs upload
782 # - Cleanup workspace
794 - fdio-infra-ship-docs
795 mark-unstable-if-failed: true
798 # Do not clean up *.jenkins-trigger files for jobs that use a
799 # properties file as input for triggering another build.
800 - "**/*.jenkins-trigger"
804 name: fdio-infra-publish-docs-7day
805 # macro to finish up a verify docs build.
807 # Handles the following:
808 # - Mapping 7-day retention S3 bucket credentials for verify job docs upload
809 # - Cleanup workspace
821 - fdio-infra-ship-docs-7day
822 mark-unstable-if-failed: true
825 # Do not clean up *.jenkins-trigger files for jobs that use a
826 # properties file as input for triggering another build.
827 - "**/*.jenkins-trigger"
831 name: fdio-infra-publish
832 # macro to finish up a build.
834 # Handles the following:
835 # - Shipping logs to S3 logs repository
836 # - Cleanup workspace
848 - shell: !include-raw: scripts/post_build_executor_info.sh
849 - shell: !include-raw: scripts/post_build_deploy_archives.sh
850 - fdio-infra-ship-logs
851 mark-unstable-if-failed: true
854 # Do not clean up *.jenkins-trigger files for jobs that use a
855 # properties file as input for triggering another build.
856 - "**/*.jenkins-trigger"
863 exec-pattern: '**/**.exec'
864 class-pattern: '**/classes'
865 source-pattern: '**/src/main/java'
866 # yamllint disable-line rule:line-length
867 exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
878 name: retry-build-on-builder-error
887 output-path: '{output-path}'
890 # [end] Keep 'publisher' entries ordered alphabetically, please.
893 # Keep 'builder' entries ordered alphabetically, please.
895 name: ci-management-check-unicode
898 $WORKSPACE/scripts/check-unicode.sh jjb/
901 name: fdio-infra-ship-docs
903 - config-file-provider:
905 - file-id: "jenkins-s3-docs-ship"
906 target: $HOME/.aws/credentials
907 - shell: !include-raw:
908 - scripts/terraform_s3_docs_ship.sh
909 - shell: !include-raw:
910 - scripts/publish_docs.sh
911 - shell: !include-raw:
912 - ../global-jjb/shell/logs-clear-credentials.sh
915 name: fdio-infra-ship-docs-7day
917 - config-file-provider:
919 - file-id: "jenkins-s3-vpp-docs-ship"
920 target: $HOME/.aws/credentials
921 - shell: !include-raw:
922 - scripts/terraform_s3_docs_ship.sh
923 - shell: !include-raw:
924 - scripts/publish_docs.sh
925 - shell: !include-raw:
926 - ../global-jjb/shell/logs-clear-credentials.sh
929 name: fdio-infra-ship-logs
931 - config-file-provider:
933 - file-id: "jenkins-s3-log-ship"
934 target: $HOME/.aws/credentials
935 - shell: !include-raw:
936 - scripts/publish_library_py.sh
937 - shell: !include-raw:
938 - scripts/publish_logs.sh
939 - shell: !include-raw:
940 - ../global-jjb/shell/logs-clear-credentials.sh
941 - description-setter:
942 regexp: "(^S3 build logs: .*)"
945 name: packer-validate
947 - config-file-provider:
949 - file-id: 'packer-cloud-env'
951 # yamllint disable rule:line-length
955 varfiles="../packer/vars/*"
956 templates="../packer/templates/*"
957 provision="../packer/provision/*.sh"
958 for v in $varfiles; do
959 [[ "${v##*/}" =~ ^(cloud-env.*)$ ]] && continue
960 for t in $templates; do
961 export PACKER_LOG="yes" && \
962 export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \
963 packer.io validate -var-file=$CLOUDENV \
965 if [ $? -ne 0 ]; then
970 for p in $provision; do
971 /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1
972 if [ $? -ne 0 ]; then
981 - config-file-provider:
983 - file-id: 'packer-cloud-env'
988 export PACKER_LOG="yes" && \
989 export PACKER_LOG_PATH="packer-build.log" && \
990 packer.io build -var-file=$CLOUDENV \
991 -var-file=../packer/vars/{platform}.json \
992 ../packer/templates/{template}.json
995 name: provide-maven-settings
997 - config-file-provider:
999 - file-id: '{global-settings-file}'
1000 variable: 'GLOBAL_SETTINGS_FILE'
1001 - file-id: '{settings-file}'
1002 variable: 'SETTINGS_FILE'
1003 # [end] Keep 'builder' entries ordered alphabetically, please.