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-vpp-devicetest-full
373 # Comes from CSIT, for automatic jobs running device tests with VPP builds.
374 # The job acts as an automatic verify job for CSIT contributions.
377 server-name: 'Primary'
379 # The main way the job is triggered automatically on patch upload.
380 # Gated by tox job, so we do not spend resources on WiP changes.
381 - comment-added-contains-event:
382 comment-contains-value: 'tox_success'
383 # Manual trigger to allow testing WiP changes with selected tags.
384 - comment-added-contains-event:
385 comment-contains-value: 'csit-devicetest'
386 # A comment with "recheck" restarts tox job, so no condition here.
388 - project-compare-type: 'ANT'
389 project-pattern: '{project}'
391 - branch-compare-type: 'ANT'
392 branch-pattern: '**/{branch}'
394 successful: '{skip-vote}'
395 failed: '{skip-vote}'
396 unstable: '{skip-vote}'
397 notbuilt: '{skip-vote}'
400 name: gerrit-trigger-csit-vpp-devicetest-manual
401 # Comes from CSIT, for manual jobs running "device" tests with VPP builds.
402 # The job acts as a manual (optional) verify job for CSIT contributions.
405 server-name: 'Primary'
407 - comment-added-contains-event:
408 comment-contains-value: 'csit-devicetest'
410 - project-compare-type: 'ANT'
411 project-pattern: '{project}'
413 - branch-compare-type: 'ANT'
414 branch-pattern: '**/{branch}'
416 successful: '{skip-vote}'
417 failed: '{skip-vote}'
418 unstable: '{skip-vote}'
419 notbuilt: '{skip-vote}'
422 name: gerrit-trigger-manually-triggered
425 server-name: 'Primary'
427 - comment-added-contains-event:
428 comment-contains-value: '{comment-trigger-value}'
430 - project-compare-type: 'ANT'
431 project-pattern: '{name}'
433 - branch-compare-type: 'ANT'
434 branch-pattern: '**/{branch}'
437 name: gerrit-trigger-patch-merged
440 server-name: 'Primary'
442 - change-merged-event
443 - comment-added-contains-event:
444 comment-contains-value: 'remerge'
446 - project-compare-type: 'ANT'
447 project-pattern: '{name}'
449 - branch-compare-type: 'ANT'
450 branch-pattern: '**/{branch}'
451 # Force Jenkins always vote the values it should already have voted
452 # during the prior verify phase
454 gerrit-build-started-verified-value: 1
455 gerrit-build-successful-verified-value: 1
456 gerrit-build-failed-verified-value: 1
457 gerrit-build-unstable-verified-value: 1
458 gerrit-build-notbuilt-verified-value: 1
459 gerrit-build-started-codereview-value: 0
460 gerrit-build-successful-codereview-value: 0
461 gerrit-build-failed-codereview-value: 0
462 gerrit-build-unstable-codereview-value: 0
463 gerrit-build-notbuilt-codereview-value: 0
466 name: gerrit-trigger-patch-submitted
469 server-name: 'Primary'
471 - patchset-created-event:
472 exclude-drafts: 'true'
473 exclude-trivial-rebase: 'false'
474 exclude-no-code-change: 'false'
475 - draft-published-event
476 - comment-added-contains-event:
477 comment-contains-value: 'recheck'
478 - comment-added-contains-event:
479 comment-contains-value: 'reverify'
481 - project-compare-type: 'ANT'
482 project-pattern: '{name}'
484 - branch-compare-type: 'ANT'
485 branch-pattern: '**/{branch}'
488 name: gerrit-trigger-os-patch-merged
491 server-name: 'Primary'
493 - comment-added-contains-event:
494 comment-contains-value: 'os-merge'
496 - project-compare-type: 'ANT'
497 project-pattern: '{name}'
499 - branch-compare-type: 'ANT'
500 branch-pattern: '**/{branch}'
501 # Force Jenkins always vote the values it should already have voted
502 # during the prior verify phase
504 gerrit-build-started-verified-value: 1
505 gerrit-build-successful-verified-value: 1
506 gerrit-build-failed-verified-value: 1
507 gerrit-build-unstable-verified-value: 1
508 gerrit-build-notbuilt-verified-value: 1
509 gerrit-build-started-codereview-value: 0
510 gerrit-build-successful-codereview-value: 0
511 gerrit-build-failed-codereview-value: 0
512 gerrit-build-unstable-codereview-value: 0
513 gerrit-build-notbuilt-codereview-value: 0
516 name: gerrit-trigger-os-trivial-patch-submitted
519 server-name: 'Primary'
521 - comment-added-contains-event:
522 comment-contains-value: 'os-check'
523 - comment-added-contains-event:
524 comment-contains-value: 'os-verify'
526 - project-compare-type: 'ANT'
527 project-pattern: '{name}'
529 - branch-compare-type: 'ANT'
530 branch-pattern: '**/{branch}'
533 name: gerrit-trigger-trivial-patch-submitted
536 server-name: 'Primary'
538 - patchset-created-event:
539 exclude-drafts: 'true'
540 exclude-trivial-rebase: 'false'
541 exclude-no-code-change: 'true'
542 - draft-published-event
543 - comment-added-contains-event:
544 comment-contains-value: 'recheck'
545 - comment-added-contains-event:
546 comment-contains-value: 'reverify'
548 - project-compare-type: 'ANT'
549 project-pattern: '{name}'
551 - branch-compare-type: 'ANT'
552 branch-pattern: '**/{branch}'
555 name: gerrit-trigger-trivial-patch-submitted-skip-vote
558 server-name: 'Primary'
560 - patchset-created-event:
561 exclude-drafts: 'true'
562 exclude-trivial-rebase: 'false'
563 exclude-no-code-change: 'true'
564 - draft-published-event
565 - comment-added-contains-event:
566 comment-contains-value: 'recheck'
567 - comment-added-contains-event:
568 comment-contains-value: 'reverify'
570 - project-compare-type: 'ANT'
571 project-pattern: '{name}'
573 - branch-compare-type: 'ANT'
574 branch-pattern: '**/{branch}'
582 name: gerrit-trigger-vpp-csit-devicetest-full
583 # Comes from VPP, for automated jobs running "device" tests with CSIT code.
584 # The job acts as an automatic verify job for VPP contributions.
587 server-name: 'Primary'
589 - comment-added-contains-event:
590 comment-contains-value: 'checkstyle_success'
591 - comment-added-contains-event:
592 comment-contains-value: 'devicetest'
594 - project-compare-type: 'ANT'
595 project-pattern: '{name}'
597 - branch-compare-type: 'ANT'
598 branch-pattern: '**/{branch}'
600 successful: '{skip-vote}'
601 failed: '{skip-vote}'
602 unstable: '{skip-vote}'
603 notbuilt: '{skip-vote}'
606 name: gerrit-trigger-vpp-csit-devicetest-manual
607 # Comes from VPP, for manual jobs running "device" tests with CSIT code.
608 # The job acts as a manual (optional) verify job for VPP contributions.
611 server-name: 'Primary'
613 - comment-added-contains-event:
614 comment-contains-value: 'devicetest'
616 - project-compare-type: 'ANT'
617 project-pattern: '{name}'
619 - branch-compare-type: 'ANT'
620 branch-pattern: '**/{branch}'
622 successful: '{skip-vote}'
623 failed: '{skip-vote}'
624 unstable: '{skip-vote}'
625 notbuilt: '{skip-vote}'
626 # [end] Keep 'trigger' entries ordered alphabetically, please.
629 # Keep 'publisher' entries ordered alphabetically, please.
631 name: archive-artifacts
634 artifacts: '{artifacts}'
640 name: csit-trending-failed
643 # yamllint disable-line rule:line-length
644 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
647 subject: '{branch}: Failed tests as of $BUILD_TIMESTAMP'
648 # yamllint disable-line rule:line-length
650 Following tests failed in the last trending job runs, listed per testbed type.
652 ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-failed-tests.txt"}}
657 name: csit-trending-failed-job
660 # yamllint disable-line rule:line-length
661 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
664 subject: '{branch}: The build number $BUILD_NUMBER of the job $JOB_NAME failed'
665 # yamllint disable-line rule:line-length
667 For more information see $BUILD_URL.
672 name: csit-trending-progressions
675 # yamllint disable-line rule:line-length
676 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
679 subject: '{branch}: Progressions as of $BUILD_TIMESTAMP'
680 # yamllint disable-line rule:line-length
682 Following progressions occured in the last trending job runs, listed per testbed type.
684 ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-progressions.txt"}}
689 name: csit-trending-regressions
692 # yamllint disable-line rule:line-length
693 recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
696 subject: '{branch}: Regressions as of $BUILD_TIMESTAMP'
697 # yamllint disable-line rule:line-length
699 Following regressions occured in the last trending job runs, listed per testbed type.
701 ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-regressions.txt"}}
706 name: vpp-dpdk-rdma-version-mismatch
709 # NOTE: noreply@jenkins.fd.io must be a member of vpp-build@lists.fd.io
710 # for the email to be distributed to the group members.
711 # yamllint disable-line rule:line-length
712 recipients: 'vpp-build@lists.fd.io'
715 subject: '{branch}: vpp-dpdk-rdma-version-mismatch job failed!'
716 # yamllint disable-line rule:line-length
718 Build $BUILD_NUMBER of $JOB_NAME failed.
720 console log to see if the job failed due to a package version mismatch or
721 a CI infra issue. If the failure was due to a CI infra issue, then
722 there is nothing else to be done.
724 However, if there was a package version mismatch, then the MLX driver
725 is NOT being built in the VPP DPDK library. Please push a gerrit change
726 with the updated package version(s) in the version matrix file, resolve
727 any build issues, and merge the change to re-enable the building of the
728 MLX DPDK driver in the VPP DPDK library.
731 The VPP Build Maintainers
737 name: email-notification
740 recipients: 'nobody@projectrotterdam.info'
742 content-type: default
743 # yamllint disable-line rule:line-length
744 subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
746 $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
748 Check console output at $BUILD_URL to view the results.
756 name: fdio-infra-publish-docs
757 # macro to finish up a build.
759 # Handles the following:
760 # - Shipping docs S3 logs repository
761 # - Cleanup workspace
773 - fdio-infra-ship-docs
774 mark-unstable-if-failed: true
777 # Do not clean up *.jenkins-trigger files for jobs that use a
778 # properties file as input for triggering another build.
779 - "**/*.jenkins-trigger"
783 name: fdio-infra-publish
784 # macro to finish up a build.
786 # Handles the following:
787 # - Shipping logs to S3 logs repository
788 # - Cleanup workspace
800 - shell: !include-raw: scripts/post_build_executor_info.sh
801 - shell: !include-raw: scripts/post_build_deploy_archives.sh
802 - fdio-infra-ship-logs
803 mark-unstable-if-failed: true
806 # Do not clean up *.jenkins-trigger files for jobs that use a
807 # properties file as input for triggering another build.
808 - "**/*.jenkins-trigger"
815 exec-pattern: '**/**.exec'
816 class-pattern: '**/classes'
817 source-pattern: '**/src/main/java'
818 # yamllint disable-line rule:line-length
819 exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
830 name: retry-build-on-builder-error
839 output-path: '{output-path}'
842 # [end] Keep 'publisher' entries ordered alphabetically, please.
845 # Keep 'builder' entries ordered alphabetically, please.
847 name: ci-management-check-unicode
850 $WORKSPACE/scripts/check-unicode.sh jjb/
853 name: fdio-infra-ship-docs
855 - config-file-provider:
857 - file-id: "jenkins-s3-docs-ship"
858 target: $HOME/.aws/credentials
859 - shell: !include-raw:
860 - scripts/terraform_s3_docs_ship.sh
861 - shell: !include-raw:
862 - scripts/publish_docs.sh
863 - shell: !include-raw:
864 - ../global-jjb/shell/logs-clear-credentials.sh
867 name: fdio-infra-ship-logs
869 - config-file-provider:
871 - file-id: "jenkins-s3-log-ship"
872 target: $HOME/.aws/credentials
873 - shell: !include-raw:
874 - scripts/publish_library_py.sh
875 - shell: !include-raw:
876 - scripts/publish_logs.sh
877 - shell: !include-raw:
878 - ../global-jjb/shell/logs-clear-credentials.sh
879 - description-setter:
880 regexp: "(^S3 build logs: .*)"
883 name: packer-validate
885 - config-file-provider:
887 - file-id: 'packer-cloud-env'
889 # yamllint disable rule:line-length
893 varfiles="../packer/vars/*"
894 templates="../packer/templates/*"
895 provision="../packer/provision/*.sh"
896 for v in $varfiles; do
897 [[ "${v##*/}" =~ ^(cloud-env.*)$ ]] && continue
898 for t in $templates; do
899 export PACKER_LOG="yes" && \
900 export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \
901 packer.io validate -var-file=$CLOUDENV \
903 if [ $? -ne 0 ]; then
908 for p in $provision; do
909 /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1
910 if [ $? -ne 0 ]; then
919 - config-file-provider:
921 - file-id: 'packer-cloud-env'
926 export PACKER_LOG="yes" && \
927 export PACKER_LOG_PATH="packer-build.log" && \
928 packer.io build -var-file=$CLOUDENV \
929 -var-file=../packer/vars/{platform}.json \
930 ../packer/templates/{template}.json
933 name: provide-maven-settings
935 - config-file-provider:
937 - file-id: '{global-settings-file}'
938 variable: 'GLOBAL_SETTINGS_FILE'
939 - file-id: '{settings-file}'
940 variable: 'SETTINGS_FILE'
941 # [end] Keep 'builder' entries ordered alphabetically, please.