Merge "Update hst CPU/MemoryMB cloud config to limit jobs to 1 per server"
[ci-management.git] / jjb / global-macros.yaml
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:
5 #
6 #     http://www.apache.org/licenses/LICENSE-2.0
7 #
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.
13
14 ---
15 # Global macros.
16
17 #### PARAMETERS
18 # Keep 'parameter' entries ordered alphabetically, please.
19 - parameter:
20     name: arch-parameter
21     parameters:
22       - string:
23           name: ARCH
24           default: '{arch}'
25           description: "Architecture parameter"
26
27 - parameter:
28     name: compiler-parameter
29     parameters:
30       - string:
31           name: CC
32           default: '{cc}'
33           description: "CC parameter, can be gnu or clang"
34
35 - parameter:
36     name: make-parallel-jobs-parameter
37     parameters:
38       - string:
39           name: MAKE_PARALLEL_JOBS
40           default: '{make-parallel-jobs}'
41           description: "The number of cores to use for builds."
42
43 - parameter:
44     name: make-test-os-parameter
45     parameters:
46       - string:
47           name: MAKE_TEST_OS
48           default: '{make-test-os}'
49           description: "The OS on which 'make test' is run."
50
51 - parameter:
52     name: make-test-multiworker-os-parameter
53     parameters:
54       - string:
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."
58
59 - parameter:
60     name: csit-fail-on-crc-mismatch-parameter
61     parameters:
62       - string:
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."
66
67 - parameter:
68     name: csit-perf-trial-duration-parameter
69     parameters:
70       - string:
71           name: CSIT_PERF_TRIAL_DURATION
72           default: "{csit-perf-trial-duration}"
73           description: "Duration of a trial measurement in BMRR tests."
74
75 - parameter:
76     name: csit-perf-trial-multiplicity-parameter
77     parameters:
78       - string:
79           name: CSIT_PERF_TRIAL_MULTIPLICITY
80           default: "{csit-perf-trial-multiplicity}"
81           description: "Number of subsamples for BMRR tests."
82
83 - parameter:
84     name: gerrit-csit-refspec-parameter
85     parameters:
86       - string:
87           name: CSIT_REF
88           default: ''
89           # yamllint disable-line rule:line-length
90           description: "GERRIT_REFSPEC parameter to override separately cloned CSIT repository, leave empty for autodetection / no override."
91
92 - parameter:
93     name: gerrit-event-comment-text-parameter
94     parameters:
95       - string:
96           name: GERRIT_EVENT_COMMENT_TEXT
97           default: ''
98           # yamllint disable-line rule:line-length
99           description: "GERRIT_EVENT_COMMENT_TEXT parameter not given by trigger"
100
101 - parameter:
102     name: gerrit-event-type-parameter
103     parameters:
104       - string:
105           name: GERRIT_EVENT_TYPE
106           default: ''
107           description: "GERRIT_EVENT_TYPE parameter not given by trigger"
108
109 - parameter:
110     name: gerrit-parameter
111     parameters:
112       - string:
113           name: GERRIT_BRANCH
114           default: '{branch}'
115           description: "JJB configured GERRIT_BRANCH parameter"
116
117 - parameter:
118     name: gerrit-project-parameter
119     parameters:
120       - string:
121           name: GERRIT_PROJECT
122           default: '{project}'
123           description: "GERRIT_PROJECT parameter if not given by trigger"
124
125 - parameter:
126     name: gerrit-refspec-parameter
127     parameters:
128       - string:
129           name: GERRIT_REFSPEC
130           default: '{refspec}'
131           description: "GERRIT_REFSPEC parameter not given by trigger"
132
133 - parameter:
134     name: is-csit-vpp-job-parameter
135     parameters:
136       - string:
137           name: IS_CSIT_VPP_JOB
138           default: '{is-csit-vpp-job}'
139           description: "Parameter is True if this is a CSIT vpp job."
140
141 - parameter:
142     name: maven-exec
143     parameters:
144       - string:
145           name: MVN
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'
149
150 - parameter:
151     name: maven-project-parameter
152     parameters:
153       - string:
154           name: MAVEN_SELECTOR
155           default: '{maven}'
156           description: 'Maven selector to be used by shell scripts'
157
158 - parameter:
159     name: mode-parameter
160     parameters:
161       - string:
162           name: MODE
163           default: '{mode}'
164           description: "mode parameter to be used in shell scripts."
165
166 - parameter:
167     name: os-parameter
168     parameters:
169       - string:
170           name: OS
171           default: '{os}'
172           description: "OS parameter"
173
174 - parameter:
175     name: project-parameter
176     parameters:
177       - string:
178           name: PROJECT
179           default: '{project}'
180           # yamllint disable-line rule:line-length
181           description: "JJB configured PROJECT parameter to identify a Gerrit project"
182
183 - parameter:
184     name: stream-parameter
185     parameters:
186       - string:
187           name: STREAM
188           default: '{stream}'
189           description: "Stream job parameter to be used in shell scripts."
190
191 - parameter:
192     name: topo-parameter
193     parameters:
194       - string:
195           name: TOPO
196           default: '{topo}'
197           description: "Topology parameter"
198 # [end] Keep 'parameter' entries ordered alphabetically, please.
199
200 #### SCMS
201 # Keep 'scm' entries ordered alphabetically, please.
202 - scm:
203     name: gerrit-trigger-scm
204     scm:
205       - git:
206           credentials-id: '{credentials-id}'
207           url: '$GIT_BASE'
208           refspec: '{refspec}'
209           branches:
210             - 'origin/$GERRIT_BRANCH'
211           skip-tag: true
212           choosing-strategy: '{choosing-strategy}'
213
214 - scm:
215     name: gerrit-trigger-scm-recursive
216     scm:
217       - git:
218           credentials-id: '{credentials-id}'
219           url: '$GIT_BASE'
220           refspec: '{refspec}'
221           branches:
222             - 'origin/$GERRIT_BRANCH'
223           skip-tag: true
224           choosing-strategy: '{choosing-strategy}'
225           submodule:
226             recursive: '{submodule-recursive}'
227
228 - scm:
229     name: git-scm
230     scm:
231       - git:
232           credentials-id: '{credentials-id}'
233           url: '$GIT_BASE'
234           refspec: ''
235           branches:
236             - 'origin/{branch}'
237           skip-tag: true
238           wipe-workspace: true
239 # [end] Keep 'scm' entries ordered alphabetically, please.
240
241 #### WRAPPERS
242 # Keep 'wrapper' entries ordered alphabetically, please.
243 - wrapper:
244     name: build-timeout
245     wrappers:
246       - timeout:
247           type: absolute
248           timeout: 360
249           fail: true
250
251 - wrapper:
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
255     wrappers:
256       - timeout:
257           type: absolute
258           timeout: '{build-timeout}'
259           timeout-var: 'BUILD_TIMEOUT'
260           fail: true
261       - timestamps
262       - ssh-agent-credentials:
263           users:
264             - 'jenkins-gerrit-credentials'
265       - jclouds:
266           single-use: true
267       - openstack:
268           single-use: true
269
270 - wrapper:
271     # This wrapper is used for all jobs that require no-activity timeouts
272     name: fdio-infra-wrappers-non-activity-timeout
273     wrappers:
274       - timeout:
275           type: no-activity
276           timeout: '{build-timeout}'
277           fail: true
278       - timestamps
279       - ssh-agent-credentials:
280           users:
281             - 'jenkins-gerrit-credentials'
282       - jclouds:
283           single-use: true
284       - openstack:
285           single-use: true
286 # [end] Keep 'wrapper' entries ordered alphabetically, please.
287
288 #### TRIGGERS
289 # Keep 'trigger' entries ordered alphabetically, please.
290 - trigger:
291     name: gerrit-trigger-build
292     # Comes from hicn, some verify jobs wait for build to pass.
293     triggers:
294       - gerrit:
295           server-name: 'Primary'
296           trigger-on:
297             - comment-added-contains-event:
298                 comment-contains-value: 'build_success-{stream}-{os}-{executor-arch}'
299           projects:
300             - project-compare-type: 'ANT'
301               project-pattern: '{name}'
302               branches:
303                 - branch-compare-type: 'ANT'
304                   branch-pattern: '**/{branch}'
305
306 - trigger:
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.
310     triggers:
311       - gerrit:
312           server-name: 'Primary'
313           trigger-on:
314             - comment-added-contains-event:
315                 comment-contains-value: 'checkstyle_success'
316           projects:
317             - project-compare-type: 'ANT'
318               project-pattern: '{name}'
319               branches:
320                 - branch-compare-type: 'ANT'
321                   branch-pattern: '**/{branch}'
322
323 - trigger:
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.
327     triggers:
328       - gerrit:
329           server-name: 'Primary'
330           trigger-on:
331             - comment-added-contains-event:
332                 comment-contains-value: 'checkstyle_success'
333           projects:
334             - project-compare-type: 'ANT'
335               project-pattern: '{name}'
336               branches:
337                 - branch-compare-type: 'ANT'
338                   branch-pattern: '**/{branch}'
339           skip-vote:
340             successful: true
341             failed: true
342             unstable: true
343             notbuilt: true
344           override-votes: true
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
349
350 - trigger:
351     name: gerrit-trigger-csit-perftest
352     # Manual trigger common for csit-vpp and vpp-csit perf jobs.
353     triggers:
354       - gerrit:
355           server-name: 'Primary'
356           trigger-on:
357             - comment-added-contains-event:
358                 comment-contains-value: '{trigger-word}'
359           projects:
360             - project-compare-type: 'ANT'
361               project-pattern: '{project}'
362               branches:
363                 - branch-compare-type: 'ANT'
364                   branch-pattern: '**/{branch}'
365           skip-vote:
366             successful: '{skip-vote}'
367             failed: '{skip-vote}'
368             unstable: '{skip-vote}'
369             notbuilt: '{skip-vote}'
370
371 - trigger:
372     name: gerrit-trigger-csit-terraform
373     # Manual trigger common for csit-terraform jobs.
374     triggers:
375       - gerrit:
376           server-name: 'Primary'
377           trigger-on:
378             - comment-added-contains-event:
379                 comment-contains-value: '{trigger-word}'
380           projects:
381             - project-compare-type: 'ANT'
382               project-pattern: '{project}'
383               branches:
384                 - branch-compare-type: 'ANT'
385                   branch-pattern: '**/{branch}'
386           skip-vote:
387             successful: '{skip-vote}'
388             failed: '{skip-vote}'
389             unstable: '{skip-vote}'
390             notbuilt: '{skip-vote}'
391
392 - trigger:
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.
396     triggers:
397       - gerrit:
398           server-name: 'Primary'
399           trigger-on:
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.
408           projects:
409             - project-compare-type: 'ANT'
410               project-pattern: '{project}'
411               branches:
412                 - branch-compare-type: 'ANT'
413                   branch-pattern: '**/{branch}'
414           skip-vote:
415             successful: '{skip-vote}'
416             failed: '{skip-vote}'
417             unstable: '{skip-vote}'
418             notbuilt: '{skip-vote}'
419
420 - trigger:
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.
424     triggers:
425       - gerrit:
426           server-name: 'Primary'
427           trigger-on:
428             - comment-added-contains-event:
429                 comment-contains-value: 'csit-devicetest'
430           projects:
431             - project-compare-type: 'ANT'
432               project-pattern: '{project}'
433               branches:
434                 - branch-compare-type: 'ANT'
435                   branch-pattern: '**/{branch}'
436           skip-vote:
437             successful: '{skip-vote}'
438             failed: '{skip-vote}'
439             unstable: '{skip-vote}'
440             notbuilt: '{skip-vote}'
441
442 - trigger:
443     name: gerrit-trigger-manually-triggered
444     triggers:
445       - gerrit:
446           server-name: 'Primary'
447           trigger-on:
448             - comment-added-contains-event:
449                 comment-contains-value: '{comment-trigger-value}'
450           projects:
451             - project-compare-type: 'ANT'
452               project-pattern: '{name}'
453               branches:
454                 - branch-compare-type: 'ANT'
455                   branch-pattern: '**/{branch}'
456
457 - trigger:
458     name: gerrit-trigger-patch-merged
459     triggers:
460       - gerrit:
461           server-name: 'Primary'
462           trigger-on:
463             - change-merged-event
464             - comment-added-contains-event:
465                 comment-contains-value: 'remerge'
466           projects:
467             - project-compare-type: 'ANT'
468               project-pattern: '{name}'
469               branches:
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
474           override-votes: true
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
485
486 - trigger:
487     name: gerrit-trigger-patch-submitted
488     triggers:
489       - gerrit:
490           server-name: 'Primary'
491           trigger-on:
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'
501           projects:
502             - project-compare-type: 'ANT'
503               project-pattern: '{name}'
504               branches:
505                 - branch-compare-type: 'ANT'
506                   branch-pattern: '**/{branch}'
507
508 - trigger:
509     name: gerrit-trigger-os-patch-merged
510     triggers:
511       - gerrit:
512           server-name: 'Primary'
513           trigger-on:
514             - comment-added-contains-event:
515                 comment-contains-value: 'os-merge'
516           projects:
517             - project-compare-type: 'ANT'
518               project-pattern: '{name}'
519               branches:
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
524           override-votes: true
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
535
536 - trigger:
537     name: gerrit-trigger-os-trivial-patch-submitted
538     triggers:
539       - gerrit:
540           server-name: 'Primary'
541           trigger-on:
542             - comment-added-contains-event:
543                 comment-contains-value: 'os-check'
544             - comment-added-contains-event:
545                 comment-contains-value: 'os-verify'
546           projects:
547             - project-compare-type: 'ANT'
548               project-pattern: '{name}'
549               branches:
550                 - branch-compare-type: 'ANT'
551                   branch-pattern: '**/{branch}'
552
553 - trigger:
554     name: gerrit-trigger-trivial-patch-submitted
555     triggers:
556       - gerrit:
557           server-name: 'Primary'
558           trigger-on:
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'
568           projects:
569             - project-compare-type: 'ANT'
570               project-pattern: '{name}'
571               branches:
572                 - branch-compare-type: 'ANT'
573                   branch-pattern: '**/{branch}'
574
575 - trigger:
576     name: gerrit-trigger-trivial-patch-submitted-skip-vote
577     triggers:
578       - gerrit:
579           server-name: 'Primary'
580           trigger-on:
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'
590           projects:
591             - project-compare-type: 'ANT'
592               project-pattern: '{name}'
593               branches:
594                 - branch-compare-type: 'ANT'
595                   branch-pattern: '**/{branch}'
596           skip-vote:
597             successful: true
598             failed: true
599             unstable: true
600             notbuilt: true
601
602 - trigger:
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.
606     triggers:
607       - gerrit:
608           server-name: 'Primary'
609           trigger-on:
610             - comment-added-contains-event:
611                 comment-contains-value: 'checkstyle_success'
612             - comment-added-contains-event:
613                 comment-contains-value: 'devicetest'
614           projects:
615             - project-compare-type: 'ANT'
616               project-pattern: '{name}'
617               branches:
618                 - branch-compare-type: 'ANT'
619                   branch-pattern: '**/{branch}'
620           skip-vote:
621             successful: '{skip-vote}'
622             failed: '{skip-vote}'
623             unstable: '{skip-vote}'
624             notbuilt: '{skip-vote}'
625
626 - trigger:
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.
630     triggers:
631       - gerrit:
632           server-name: 'Primary'
633           trigger-on:
634             - comment-added-contains-event:
635                 comment-contains-value: 'devicetest'
636           projects:
637             - project-compare-type: 'ANT'
638               project-pattern: '{name}'
639               branches:
640                 - branch-compare-type: 'ANT'
641                   branch-pattern: '**/{branch}'
642           skip-vote:
643             successful: '{skip-vote}'
644             failed: '{skip-vote}'
645             unstable: '{skip-vote}'
646             notbuilt: '{skip-vote}'
647 # [end] Keep 'trigger' entries ordered alphabetically, please.
648
649 #### PUBLISHERS
650 # Keep 'publisher' entries ordered alphabetically, please.
651 - publisher:
652     name: archive-artifacts
653     publishers:
654       - archive:
655           artifacts: '{artifacts}'
656           allow-empty: true
657           fingerprint: true
658           latest-only: true
659
660 - publisher:
661     name: csit-trending-failed
662     publishers:
663       - email-ext:
664           # yamllint disable-line rule:line-length
665           recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
666           reply-to: ''
667           content-type: 'text'
668           subject: '{branch}: Failed tests as of $BUILD_TIMESTAMP'
669           # yamllint disable-line rule:line-length
670           body: |
671               Following tests failed in the last trending job runs, listed per testbed type.
672
673               ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-failed-tests.txt"}}
674           failure: false
675           success: true
676
677 - publisher:
678     name: csit-trending-failed-job
679     publishers:
680       - email-ext:
681           # yamllint disable-line rule:line-length
682           recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
683           reply-to: ''
684           content-type: 'text'
685           subject: '{branch}: The build number $BUILD_NUMBER of the job $JOB_NAME failed'
686           # yamllint disable-line rule:line-length
687           body: |
688               For more information see $BUILD_URL.
689           failure: true
690           success: false
691
692 - publisher:
693     name: csit-trending-progressions
694     publishers:
695       - email-ext:
696           # yamllint disable-line rule:line-length
697           recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
698           reply-to: ''
699           content-type: 'text'
700           subject: '{branch}: Progressions as of $BUILD_TIMESTAMP'
701           # yamllint disable-line rule:line-length
702           body: |
703               Following progressions occured in the last trending job runs, listed per testbed type.
704
705               ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-progressions.txt"}}
706           failure: false
707           success: true
708
709 - publisher:
710     name: csit-trending-regressions
711     publishers:
712       - email-ext:
713           # yamllint disable-line rule:line-length
714           recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
715           reply-to: ''
716           content-type: 'text'
717           subject: '{branch}: Regressions as of $BUILD_TIMESTAMP'
718           # yamllint disable-line rule:line-length
719           body: |
720               Following regressions occured in the last trending job runs, listed per testbed type.
721
722               ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-regressions.txt"}}
723           failure: false
724           success: true
725
726 - publisher:
727     name: vpp-dpdk-rdma-version-mismatch
728     publishers:
729       - email-ext:
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'
734           reply-to: ''
735           content-type: 'text'
736           subject: '{branch}: vpp-dpdk-rdma-version-mismatch job failed!'
737           # yamllint disable-line rule:line-length
738           body: |
739               Build $BUILD_NUMBER of $JOB_NAME failed.
740               Check $BUILD_URL
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.
744
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.
750
751               Thanks,
752               The VPP Build Maintainers
753
754           failure: true
755           success: false
756
757 - publisher:
758     name: email-notification
759     publishers:
760       - email-ext:
761           recipients: 'nobody@projectrotterdam.info'
762           reply-to: ''
763           content-type: default
764           # yamllint disable-line rule:line-length
765           subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
766           body: |
767               $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
768
769               Check console output at $BUILD_URL to view the results.
770           unstable: true
771           fixed: true
772           send-to:
773             - developers
774             - recipients
775
776 - publisher:
777     name: fdio-infra-publish-docs
778     # macro to finish up a docs build.
779     #
780     # Handles the following:
781     #   - Mapping docs S3 bucket credentials for merge job docs upload
782     #   - Cleanup workspace
783     publishers:
784       - postbuildscript:
785           builders:
786             - role: BOTH
787               build-on:
788                 - ABORTED
789                 - FAILURE
790                 - NOT_BUILT
791                 - SUCCESS
792                 - UNSTABLE
793               build-steps:
794                 - fdio-infra-ship-docs
795           mark-unstable-if-failed: true
796       - workspace-cleanup:
797           exclude:
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"
801           fail-build: false
802
803 - publisher:
804     name: fdio-infra-publish-cov-7day
805     # macro to finish up a verify docs build.
806     #
807     # Handles the following:
808     #   - Mapping 7-day retention S3 bucket credentials for verify job docs upload
809     #   - Cleanup workspace
810     publishers:
811       - postbuildscript:
812           builders:
813             - role: BOTH
814               build-on:
815                 - ABORTED
816                 - FAILURE
817                 - NOT_BUILT
818                 - SUCCESS
819                 - UNSTABLE
820               build-steps:
821                 - fdio-infra-ship-cov-7day
822           mark-unstable-if-failed: true
823       - workspace-cleanup:
824           exclude:
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"
828           fail-build: false
829
830 - publisher:
831     name: fdio-infra-publish-docs-7day
832     # macro to finish up a verify docs build.
833     #
834     # Handles the following:
835     #   - Mapping 7-day retention S3 bucket credentials for verify job docs upload
836     #   - Cleanup workspace
837     publishers:
838       - postbuildscript:
839           builders:
840             - role: BOTH
841               build-on:
842                 - ABORTED
843                 - FAILURE
844                 - NOT_BUILT
845                 - SUCCESS
846                 - UNSTABLE
847               build-steps:
848                 - fdio-infra-ship-docs-7day
849           mark-unstable-if-failed: true
850       - workspace-cleanup:
851           exclude:
852             # Do not clean up *.jenkins-trigger files for jobs that use a
853             # properties file as input for triggering another build.
854             - "**/*.jenkins-trigger"
855           fail-build: false
856
857 - publisher:
858     name: fdio-infra-publish
859     # macro to finish up a build.
860     #
861     # Handles the following:
862     #   - Shipping logs to S3 logs repository
863     #   - Cleanup workspace
864     publishers:
865       - postbuildscript:
866           builders:
867             - role: BOTH
868               build-on:
869                 - ABORTED
870                 - FAILURE
871                 - NOT_BUILT
872                 - SUCCESS
873                 - UNSTABLE
874               build-steps:
875                 - shell: !include-raw-escape: scripts/post_build_executor_info.sh
876                 - shell: !include-raw-escape: scripts/post_build_deploy_archives.sh
877                 - fdio-infra-ship-logs
878           mark-unstable-if-failed: true
879       - workspace-cleanup:
880           exclude:
881             # Do not clean up *.jenkins-trigger files for jobs that use a
882             # properties file as input for triggering another build.
883             - "**/*.jenkins-trigger"
884           fail-build: false
885
886 - publisher:
887     name: jacoco-report
888     publishers:
889       - jacoco:
890           exec-pattern: '**/**.exec'
891           class-pattern: '**/classes'
892           source-pattern: '**/src/main/java'
893           # yamllint disable-line rule:line-length
894           exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
895           status-update: true
896           targets:
897             - branch:
898               healthy: 10
899               unhealthy: 20
900             - method:
901               healthy: 50
902               unhealthy: 40
903
904 - publisher:
905     name: retry-build-on-builder-error
906     publishers:
907       - naginator:
908           max-failed-builds: 1
909
910 - publisher:
911     name: robot-report
912     publishers:
913       - robot:
914           output-path: '{output-path}'
915           other-files: ''
916
917 # [end] Keep 'publisher' entries ordered alphabetically, please.
918
919 #### BUILDERS
920 # Keep 'builder' entries ordered alphabetically, please.
921 - builder:
922     name: ci-management-check-unicode
923     builders:
924       - shell: |
925           $WORKSPACE/scripts/check-unicode.sh jjb/
926
927 - builder:
928     name: fdio-infra-ship-docs
929     builders:
930       - config-file-provider:
931           files:
932             - file-id: "jenkins-s3-docs-ship"
933               target: $HOME/.aws/credentials
934       - shell: !include-raw-escape:
935           - scripts/terraform_s3_docs_ship.sh
936       - shell: !include-raw-escape:
937           - scripts/publish_docs.sh
938       - shell: !include-raw:
939           - ../global-jjb/shell/logs-clear-credentials.sh
940
941 - builder:
942     name: fdio-infra-ship-cov-7day
943     builders:
944       - config-file-provider:
945           files:
946             - file-id: "jenkins-s3-vpp-docs-ship"
947               target: $HOME/.aws/credentials
948       - shell: !include-raw-escape:
949           - scripts/terraform_s3_docs_ship.sh
950       - shell: !include-raw-escape:
951           - scripts/publish_cov.sh
952       - shell: !include-raw:
953           - ../global-jjb/shell/logs-clear-credentials.sh
954
955 - builder:
956     name: fdio-infra-ship-docs-7day
957     builders:
958       - config-file-provider:
959           files:
960             - file-id: "jenkins-s3-vpp-docs-ship"
961               target: $HOME/.aws/credentials
962       - shell: !include-raw-escape:
963           - scripts/terraform_s3_docs_ship.sh
964       - shell: !include-raw-escape:
965           - scripts/publish_docs.sh
966       - shell: !include-raw:
967           - ../global-jjb/shell/logs-clear-credentials.sh
968
969 - builder:
970     name: fdio-infra-ship-logs
971     builders:
972       - config-file-provider:
973           files:
974             - file-id: "jenkins-s3-log-ship"
975               target: $HOME/.aws/credentials
976       - shell: !include-raw-escape:
977           - scripts/publish_library_py.sh
978       - shell: !include-raw:
979           - scripts/publish_logs.sh
980       - shell: !include-raw:
981           - ../global-jjb/shell/logs-clear-credentials.sh
982       - description-setter:
983           regexp: "(^S3 build logs: .*)"
984
985 - builder:
986     name: packer-validate
987     builders:
988       - config-file-provider:
989           files:
990             - file-id: 'packer-cloud-env'
991               variable: 'CLOUDENV'
992       # yamllint disable rule:line-length
993       - shell: |
994           #!/bin/bash
995           cd packer
996           varfiles="../packer/vars/*"
997           templates="../packer/templates/*"
998           provision="../packer/provision/*.sh"
999           for v in $varfiles; do
1000               [[ "${v##*/}" =~ ^(cloud-env.*)$ ]] && continue
1001               for t in $templates; do
1002                   export PACKER_LOG="yes" && \
1003                   export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \
1004                               packer.io validate -var-file=$CLOUDENV \
1005                               -var-file=$v $t
1006                   if [ $? -ne 0 ]; then
1007                      break
1008                   fi
1009               done
1010           done
1011           for p in $provision; do
1012               /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1
1013               if [ $? -ne 0 ]; then
1014                  break
1015               fi
1016           done
1017       # yamllint enable
1018
1019 - builder:
1020     name: packer-build
1021     builders:
1022       - config-file-provider:
1023           files:
1024             - file-id: 'packer-cloud-env'
1025               variable: 'CLOUDENV'
1026       - shell: |
1027           #!/bin/bash
1028           cd packer
1029           export PACKER_LOG="yes" && \
1030           export PACKER_LOG_PATH="packer-build.log" && \
1031                       packer.io build -var-file=$CLOUDENV \
1032                       -var-file=../packer/vars/{platform}.json \
1033                       ../packer/templates/{template}.json
1034
1035 - builder:
1036     name: provide-maven-settings
1037     builders:
1038       - config-file-provider:
1039           files:
1040             - file-id: '{global-settings-file}'
1041               variable: 'GLOBAL_SETTINGS_FILE'
1042             - file-id: '{settings-file}'
1043               variable: 'SETTINGS_FILE'
1044 # [end] Keep 'builder' entries ordered alphabetically, please.