Remove deprecated fdio-infra-shiplogs macro
[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: archive-artifacts-parameter
29     parameters:
30       - string:
31           name: ARCHIVE_ARTIFACTS
32           default: '{artifacts}'
33           description: "Artifacts to archive on the log server."
34
35 - parameter:
36     name: compiler-parameter
37     parameters:
38       - string:
39           name: CC
40           default: '{cc}'
41           description: "CC parameter, can be gnu or clang"
42
43 - parameter:
44     name: make-parallel-jobs-parameter
45     parameters:
46       - string:
47           name: MAKE_PARALLEL_JOBS
48           default: '{make-parallel-jobs}'
49           description: "The number of cores to use for builds."
50
51 - parameter:
52     name: make-test-os-parameter
53     parameters:
54       - string:
55           name: MAKE_TEST_OS
56           default: '{make-test-os}'
57           description: "The OS on which 'make test' is run."
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: repo-name-parameter
185     parameters:
186       - string:
187           name: REPO_NAME
188           default: '{repo-name}'
189           description: 'Name of repo to which to publish packaging'
190
191 - parameter:
192     name: stream-parameter
193     parameters:
194       - string:
195           name: STREAM
196           default: '{stream}'
197           description: "Stream job parameter to be used in shell scripts."
198
199 - parameter:
200     name: topo-parameter
201     parameters:
202       - string:
203           name: TOPO
204           default: '{topo}'
205           description: "Topology parameter"
206
207 - parameter:
208     name: workspace-archive-artifacts-parameter
209     parameters:
210       - string:
211           name: WS_ARCHIVE_ARTIFACTS
212           default: '{artifacts}'
213           description: "Artifacts to archive in $WORKSPACE/archives."
214 # [end] Keep 'parameter' entries ordered alphabetically, please.
215
216 #### SCMS
217 # Keep 'scm' entries ordered alphabetically, please.
218 - scm:
219     name: gerrit-trigger-scm
220     scm:
221       - git:
222           credentials-id: '{credentials-id}'
223           url: '$GIT_BASE'
224           refspec: '{refspec}'
225           branches:
226             - 'origin/$GERRIT_BRANCH'
227           skip-tag: true
228           choosing-strategy: '{choosing-strategy}'
229
230 - scm:
231     name: gerrit-trigger-scm-recursive
232     scm:
233       - git:
234           credentials-id: '{credentials-id}'
235           url: '$GIT_BASE'
236           refspec: '{refspec}'
237           branches:
238             - 'origin/$GERRIT_BRANCH'
239           skip-tag: true
240           choosing-strategy: '{choosing-strategy}'
241           submodule:
242             recursive: '{submodule-recursive}'
243
244 - scm:
245     name: git-scm
246     scm:
247       - git:
248           credentials-id: '{credentials-id}'
249           url: '$GIT_BASE'
250           refspec: ''
251           branches:
252             - 'origin/{branch}'
253           skip-tag: true
254           wipe-workspace: true
255 # [end] Keep 'scm' entries ordered alphabetically, please.
256
257 #### WRAPPERS
258 # Keep 'wrapper' entries ordered alphabetically, please.
259 - wrapper:
260     name: build-timeout
261     wrappers:
262       - timeout:
263           type: absolute
264           timeout: 360
265           fail: true
266
267 - wrapper:
268     # This wrapper is required for all jobs as it configures the wrappers
269     # needed by the fd.io infra.
270     name: fdio-infra-wrappers
271     wrappers:
272       - timeout:
273           type: absolute
274           timeout: '{build-timeout}'
275           timeout-var: 'BUILD_TIMEOUT'
276           fail: true
277       - timestamps
278       - ssh-agent-credentials:
279           users:
280             - 'jenkins-gerrit-credentials'
281       - jclouds:
282           single-use: true
283       - openstack:
284           single-use: true
285
286 - wrapper:
287     # This wrapper is used for all jobs that require no-activity timeouts
288     name: fdio-infra-wrappers-non-activity-timeout
289     wrappers:
290       - timeout:
291           type: no-activity
292           timeout: '{build-timeout}'
293           fail: true
294       - timestamps
295       - ssh-agent-credentials:
296           users:
297             - 'jenkins-gerrit-credentials'
298       - jclouds:
299           single-use: true
300       - openstack:
301           single-use: true
302 # [end] Keep 'wrapper' entries ordered alphabetically, please.
303
304 #### TRIGGERS
305 # Keep 'trigger' entries ordered alphabetically, please.
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-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.
375     triggers:
376       - gerrit:
377           server-name: 'Primary'
378           trigger-on:
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.
387           projects:
388             - project-compare-type: 'ANT'
389               project-pattern: '{project}'
390               branches:
391                 - branch-compare-type: 'ANT'
392                   branch-pattern: '**/{branch}'
393           skip-vote:
394             successful: '{skip-vote}'
395             failed: '{skip-vote}'
396             unstable: '{skip-vote}'
397             notbuilt: '{skip-vote}'
398
399 - trigger:
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.
403     triggers:
404       - gerrit:
405           server-name: 'Primary'
406           trigger-on:
407             - comment-added-contains-event:
408                 comment-contains-value: 'csit-devicetest'
409           projects:
410             - project-compare-type: 'ANT'
411               project-pattern: '{project}'
412               branches:
413                 - branch-compare-type: 'ANT'
414                   branch-pattern: '**/{branch}'
415           skip-vote:
416             successful: '{skip-vote}'
417             failed: '{skip-vote}'
418             unstable: '{skip-vote}'
419             notbuilt: '{skip-vote}'
420
421 - trigger:
422     name: gerrit-trigger-manually-triggered
423     triggers:
424       - gerrit:
425           server-name: 'Primary'
426           trigger-on:
427             - comment-added-contains-event:
428                 comment-contains-value: '{comment-trigger-value}'
429           projects:
430             - project-compare-type: 'ANT'
431               project-pattern: '{name}'
432               branches:
433                 - branch-compare-type: 'ANT'
434                   branch-pattern: '**/{branch}'
435
436 - trigger:
437     name: gerrit-trigger-patch-merged
438     triggers:
439       - gerrit:
440           server-name: 'Primary'
441           trigger-on:
442             - change-merged-event
443             - comment-added-contains-event:
444                 comment-contains-value: 'remerge'
445           projects:
446             - project-compare-type: 'ANT'
447               project-pattern: '{name}'
448               branches:
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
453           override-votes: true
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
464
465 - trigger:
466     name: gerrit-trigger-patch-submitted
467     triggers:
468       - gerrit:
469           server-name: 'Primary'
470           trigger-on:
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'
480           projects:
481             - project-compare-type: 'ANT'
482               project-pattern: '{name}'
483               branches:
484                 - branch-compare-type: 'ANT'
485                   branch-pattern: '**/{branch}'
486
487 - trigger:
488     name: gerrit-trigger-os-patch-merged
489     triggers:
490       - gerrit:
491           server-name: 'Primary'
492           trigger-on:
493             - comment-added-contains-event:
494                 comment-contains-value: 'os-merge'
495           projects:
496             - project-compare-type: 'ANT'
497               project-pattern: '{name}'
498               branches:
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
503           override-votes: true
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
514
515 - trigger:
516     name: gerrit-trigger-os-trivial-patch-submitted
517     triggers:
518       - gerrit:
519           server-name: 'Primary'
520           trigger-on:
521             - comment-added-contains-event:
522                 comment-contains-value: 'os-check'
523             - comment-added-contains-event:
524                 comment-contains-value: 'os-verify'
525           projects:
526             - project-compare-type: 'ANT'
527               project-pattern: '{name}'
528               branches:
529                 - branch-compare-type: 'ANT'
530                   branch-pattern: '**/{branch}'
531
532 - trigger:
533     name: gerrit-trigger-trivial-patch-submitted
534     triggers:
535       - gerrit:
536           server-name: 'Primary'
537           trigger-on:
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'
547           projects:
548             - project-compare-type: 'ANT'
549               project-pattern: '{name}'
550               branches:
551                 - branch-compare-type: 'ANT'
552                   branch-pattern: '**/{branch}'
553
554 - trigger:
555     name: gerrit-trigger-trivial-patch-submitted-skip-vote
556     triggers:
557       - gerrit:
558           server-name: 'Primary'
559           trigger-on:
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'
569           projects:
570             - project-compare-type: 'ANT'
571               project-pattern: '{name}'
572               branches:
573                 - branch-compare-type: 'ANT'
574                   branch-pattern: '**/{branch}'
575           skip-vote:
576             successful: true
577             failed: true
578             unstable: true
579             notbuilt: true
580
581 - trigger:
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.
585     triggers:
586       - gerrit:
587           server-name: 'Primary'
588           trigger-on:
589             - comment-added-contains-event:
590                 comment-contains-value: 'checkstyle_success'
591             - comment-added-contains-event:
592                 comment-contains-value: 'devicetest'
593           projects:
594             - project-compare-type: 'ANT'
595               project-pattern: '{name}'
596               branches:
597                 - branch-compare-type: 'ANT'
598                   branch-pattern: '**/{branch}'
599           skip-vote:
600             successful: '{skip-vote}'
601             failed: '{skip-vote}'
602             unstable: '{skip-vote}'
603             notbuilt: '{skip-vote}'
604
605 - trigger:
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.
609     triggers:
610       - gerrit:
611           server-name: 'Primary'
612           trigger-on:
613             - comment-added-contains-event:
614                 comment-contains-value: 'devicetest'
615           projects:
616             - project-compare-type: 'ANT'
617               project-pattern: '{name}'
618               branches:
619                 - branch-compare-type: 'ANT'
620                   branch-pattern: '**/{branch}'
621           skip-vote:
622             successful: '{skip-vote}'
623             failed: '{skip-vote}'
624             unstable: '{skip-vote}'
625             notbuilt: '{skip-vote}'
626 # [end] Keep 'trigger' entries ordered alphabetically, please.
627
628 #### PUBLISHERS
629 # Keep 'publisher' entries ordered alphabetically, please.
630 - publisher:
631     name: archive-artifacts
632     publishers:
633       - archive:
634           artifacts: '{artifacts}'
635           allow-empty: true
636           fingerprint: true
637           latest-only: true
638
639 - publisher:
640     name: email-notification
641     publishers:
642       - email-ext:
643           recipients: 'nobody@projectrotterdam.info'
644           reply-to: ''
645           content-type: default
646           # yamllint disable-line rule:line-length
647           subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
648           body: |
649               $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
650
651               Check console output at $BUILD_URL to view the results.
652           unstable: true
653           fixed: true
654           send-to:
655             - developers
656             - recipients
657
658 - publisher:
659     name: fdio-infra-publish
660     # macro to finish up a build.
661     #
662     # Handles the following:
663     #   - Shipping logs to Nexus or S3 logs repository
664     #   - Cleanup workspace
665     publishers:
666       - postbuildscript:
667           builders:
668             - role: BOTH
669               build-on:
670                 - ABORTED
671                 - FAILURE
672                 - NOT_BUILT
673                 - SUCCESS
674                 - UNSTABLE
675               build-steps:
676                 - shell: !include-raw: scripts/post_build_executor_info.sh
677                 - shell: !include-raw: scripts/post_build_deploy_archives.sh
678                 - shell: !include-raw: scripts/backup_upload_archives.sh
679                 - fdio-infra-ship-logs
680           mark-unstable-if-failed: true
681       - workspace-cleanup:
682           exclude:
683             # Do not clean up *.jenkins-trigger files for jobs that use a
684             # properties file as input for triggering another build.
685             - "**/*.jenkins-trigger"
686           fail-build: false
687
688 - publisher:
689     name: jacoco-report
690     publishers:
691       - jacoco:
692           exec-pattern: '**/**.exec'
693           class-pattern: '**/classes'
694           source-pattern: '**/src/main/java'
695           # yamllint disable-line rule:line-length
696           exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
697           status-update: true
698           targets:
699             - branch:
700               healthy: 10
701               unhealthy: 20
702             - method:
703               healthy: 50
704               unhealthy: 40
705
706 - publisher:
707     name: retry-build-on-builder-error
708     publishers:
709       - naginator:
710           max-failed-builds: 1
711
712 - publisher:
713     name: robot-report
714     publishers:
715       - robot:
716           output-path: '{output-path}'
717           other-files: ''
718 # [end] Keep 'publisher' entries ordered alphabetically, please.
719
720 #### BUILDERS
721 # Keep 'builder' entries ordered alphabetically, please.
722 - builder:
723     name: ci-management-check-unicode
724     builders:
725       - shell: |
726           $WORKSPACE/scripts/check-unicode.sh jjb/
727
728 - property:
729     name: fdio-infra-properties
730     properties:
731       - build-discarder:
732           days-to-keep: '{build-days-to-keep}'
733           num-to-keep: '{build-num-to-keep}'
734
735 - builder:
736     name: fdio-infra-ship-logs
737     builders:
738       # Ensure no pre-existing .netrc files are overriding logs config
739       - lf-provide-maven-settings-cleanup
740       - config-file-provider:
741           files:
742             - file-id: "jenkins-log-archives-settings"
743               variable: "SETTINGS_FILE"
744       - conditional-step:
745           condition-kind: regex-match
746           regex: "^.*logs-s3.*"
747           label: $S3_BUCKET
748           on-evaluation-failure: dont-run
749           steps:
750             - config-file-provider:
751                 files:
752                   - file-id: "jenkins-s3-log-ship"
753                     target: $HOME/.aws/credentials
754       - lf-infra-create-netrc:
755           server-id: logs
756       - shell: !include-raw:
757           - ../global-jjb/shell/logs-deploy.sh
758       - shell: !include-raw:
759           - ../global-jjb/shell/logs-clear-credentials.sh
760       - description-setter:
761           regexp: "(^(Nexus|S3) build logs: .*)"
762
763 - builder:
764     name: packer-validate
765     builders:
766       - config-file-provider:
767           files:
768             - file-id: 'packer-cloud-env'
769               variable: 'CLOUDENV'
770       # yamllint disable rule:line-length
771       - shell: |
772           #!/bin/bash
773           cd packer
774           varfiles="../packer/vars/*"
775           templates="../packer/templates/*"
776           provision="../packer/provision/*.sh"
777           for v in $varfiles; do
778               [[ "${v##*/}" =~ ^(cloud-env.*)$ ]] && continue
779               for t in $templates; do
780                   export PACKER_LOG="yes" && \
781                   export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \
782                               packer.io validate -var-file=$CLOUDENV \
783                               -var-file=$v $t
784                   if [ $? -ne 0 ]; then
785                      break
786                   fi
787               done
788           done
789           for p in $provision; do
790               /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1
791               if [ $? -ne 0 ]; then
792                  break
793               fi
794           done
795       # yamllint enable
796
797 - builder:
798     name: packer-build
799     builders:
800       - config-file-provider:
801           files:
802             - file-id: 'packer-cloud-env'
803               variable: 'CLOUDENV'
804       - shell: |
805           #!/bin/bash
806           cd packer
807           export PACKER_LOG="yes" && \
808           export PACKER_LOG_PATH="packer-build.log" && \
809                       packer.io build -var-file=$CLOUDENV \
810                       -var-file=../packer/vars/{platform}.json \
811                       ../packer/templates/{template}.json
812
813 - builder:
814     name: provide-maven-settings
815     builders:
816       - config-file-provider:
817           files:
818             - file-id: '{global-settings-file}'
819               variable: 'GLOBAL_SETTINGS_FILE'
820             - file-id: '{settings-file}'
821               variable: 'SETTINGS_FILE'
822 # [end] Keep 'builder' entries ordered alphabetically, please.