Merge "Use include-regions to limit packer build paths"
[releng/global-jjb.git] / jjb / lf-ci-jobs.yaml
1 ---
2 - job-group:
3     name: '{project-name}-ci-jobs'
4
5     jobs:
6       - gerrit-jenkins-cfg-merge
7       - gerrit-jjb-deploy-job
8       - gerrit-jjb-merge
9       - gerrit-jjb-verify
10
11 - job-group:
12     name: '{project-name}-github-ci-jobs'
13
14     jobs:
15       - github-jenkins-cfg-merge
16       - github-jjb-deploy-job
17       - github-jjb-merge
18       - github-jjb-verify
19
20 - job-group:
21     name: '{project-name}-packer-jobs'
22
23     jobs:
24       - gerrit-packer-merge
25       - gerrit-packer-verify
26
27
28 - job-group:
29     name: '{project-name}-github-packer-jobs'
30
31     jobs:
32       - github-packer-merge
33       - github-packer-verify
34
35 ####################
36 # COMMON FUNCTIONS #
37 ####################
38
39 - builder:
40     name: lf-infra-jjbini
41     builders:
42       - config-file-provider:
43           files:
44             - file-id: jjbini
45               target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
46
47 - builder:
48     name: lf-infra-jjbini-sandbox
49     # TODO: Consolidate this into jjbini when JJB2.0 is available.
50     builders:
51       - config-file-provider:
52           files:
53             - file-id: jjbini-sandbox
54               target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
55
56 - lf_packer: &lf_packer_common
57     name: lf-packer-common
58     # Provide configuration common in packer jobs.
59
60     ######################
61     # Default parameters #
62     ######################
63
64     branch: master
65     build-timeout: 90
66     stream: master
67     submodule-recursive: true
68     packer-cloud-settings: packer-cloud-env
69     packer-version: 1.2.2
70
71     #####################
72     # Job Configuration #
73     #####################
74
75     project-type: freestyle
76     node: '{build-node}'
77
78     properties:
79       - lf-infra-properties:
80           project: '{project}'
81           build-days-to-keep: 7
82
83     parameters:
84       - lf-infra-parameters:
85           project: '{project}'
86           stream: '{stream}'
87           branch: '{branch}'
88           lftools-version: '{lftools-version}'
89       - lf-packer-parameters:
90           packer-version: '{packer-version}'
91
92     wrappers:
93       - lf-infra-wrappers:
94           build-timeout: '{build-timeout}'
95           jenkins-ssh-credential: '{jenkins-ssh-credential}'
96
97     publishers:
98       - lf-infra-publish
99
100 - parameter:
101     name: lf-infra-jjb-parameters
102     parameters:
103       - string:
104           name: JJB_VERSION
105           default: '{jjb-version}'
106           description: Jenkins Job Builder version to download and install.
107
108 - parameter:
109     name: lf-packer-parameters
110     parameters:
111       - string:
112           name: PACKER_VERSION
113           default: '{packer-version}'
114           description: Packer version to download and install.
115
116 - lf_jjb_common: &lf_jjb_common
117     name: lf-jjb-common
118
119     ######################
120     # Default parameters #
121     ######################
122
123     branch: master
124     build-timeout: 10
125     jjb-version: 2.0.5
126     stream: master
127     submodule-recursive: true
128
129     gerrit_trigger_file_paths:
130       - compare-type: REG_EXP
131         pattern: '.*\.groovy'
132       - compare-type: REG_EXP
133         pattern: '.*\.sh'
134       - compare-type: REG_EXP
135         pattern: '.*\.(yaml|yml)'
136       - compare-type: REG_EXP
137         pattern: '.*\/global-jjb'
138
139     # github_included_regions MUST match gerrit_trigger_file_paths
140     github_included_regions:
141       - '.*\.groovy'
142       - '.*\.sh'
143       - '.*\.(yaml|yml)'
144       - '.*\/global-jjb'
145
146     #####################
147     # Job Configuration #
148     #####################
149
150     project-type: freestyle
151     node: '{build-node}'
152
153     properties:
154       - lf-infra-properties:
155           project: '{project}'
156           build-days-to-keep: 7
157
158     parameters:
159       - lf-infra-parameters:
160           project: '{project}'
161           stream: '{stream}'
162           branch: '{branch}'
163           lftools-version: '{lftools-version}'
164       - lf-infra-jjb-parameters:
165           jjb-version: '{jjb-version}'
166
167     wrappers:
168       - lf-infra-wrappers:
169           build-timeout: '{build-timeout}'
170           jenkins-ssh-credential: '{jenkins-ssh-credential}'
171
172     publishers:
173       - lf-infra-publish
174
175 ######################
176 # Gerrit Branch Lock #
177 ######################
178
179 - job-template:
180     name: '{project-name}-gerrit-branch-lock-{stream}'
181     id: gerrit-branch-lock
182
183     ######################
184     # Default parameters #
185     ######################
186
187     branch: master
188     git-url: '$GIT_URL/$GERRIT_PROJECT'
189     stream: master
190     gerrit_merge_triggers:
191       - comment-added-contains-event:
192           comment-contains-value: (un)?lock branch$
193
194     #####################
195     # Job Configuration #
196     #####################
197
198     project-type: freestyle
199     node: '{build-node}'
200
201     properties:
202       - lf-infra-properties:
203           project: '{project}'
204           build-days-to-keep: 1
205
206     parameters:
207       - lf-infra-parameters:
208           project: '{project}'
209           stream: '{stream}'
210           branch: '{branch}'
211           lftools-version: '{lftools-version}'
212
213     wrappers:
214       - lf-infra-wrappers:
215           build-timeout: 5
216           jenkins-ssh-credential: '{jenkins-ssh-credential}'
217
218     scm:
219       - lf-infra-gerrit-scm:
220           git-url: '{git-url}'
221           refspec: ''
222           branch: '{branch}'
223           submodule-recursive: false
224           choosing-strategy: default
225           jenkins-ssh-credential: '{jenkins-ssh-credential}'
226
227     triggers:
228       - gerrit:
229           server-name: '{gerrit-server-name}'
230           trigger-on: '{obj:gerrit_merge_triggers}'
231           projects:
232             - project-compare-type: ANT
233               project-pattern: '{project}'
234               branches:
235                 - branch-compare-type: ANT
236                   branch-pattern: '**/{branch}'
237
238     builders:
239       - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
240
241
242     publishers:
243       - lf-infra-publish
244
245 ##########################################
246 # Jenkins Configuration Management Merge #
247 ##########################################
248
249 - builder:
250     name: lf-jenkins-cfg-clouds
251     builders:
252       - lf-infra-jjbini
253       - inject:
254           properties-content: 'jenkins_silos={jenkins-silos}'
255       - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
256       - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
257
258 - builder:
259     name: lf-jenkins-cfg-global-vars
260     builders:
261       - lf-infra-jjbini
262       - inject:
263           properties-content: 'jenkins_silos={jenkins-silos}'
264       - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
265       - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
266
267 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
268     name: lf-jenkins-cfg-merge
269
270     ######################
271     # Default parameters #
272     ######################
273
274     branch: master
275     cron: '@daily'
276     git-url: '$GIT_URL/$GERRIT_PROJECT'
277     jenkins-silos: production sandbox
278
279     gerrit_merge_triggers:
280       - change-merged-event
281       - comment-added-contains-event:
282           comment-contains-value: remerge$
283
284     gerrit_trigger_file_paths:
285       - compare-type: ANT
286         pattern: 'jenkins-config/**'
287
288     #####################
289     # Job Configuration #
290     #####################
291
292     project-type: freestyle
293     node: '{build-node}'
294     concurrent: false
295
296     properties:
297       - lf-infra-properties:
298           project: '{project}'
299           build-days-to-keep: 1
300
301     parameters:
302       - lf-infra-parameters:
303           project: '{project}'
304           stream: ''
305           branch: master
306           lftools-version: '{lftools-version}'
307
308     wrappers:
309       - lf-infra-wrappers:
310           build-timeout: 10
311           jenkins-ssh-credential: '{jenkins-ssh-credential}'
312
313     builders:
314       - shell: !include-raw-escape:
315           - ../shell/lftools-install.sh
316       - lf-jenkins-cfg-global-vars:
317           jenkins-silos: '{jenkins-silos}'
318       - lf-jenkins-cfg-clouds:
319           jenkins-silos: '{jenkins-silos}'
320
321     publishers:
322       - lf-infra-publish
323
324 - job-template:
325     name: '{project-name}-jenkins-cfg-merge'
326     id: gerrit-jenkins-cfg-merge
327     <<: *lf_jenkins_cfg_merge
328
329     scm:
330       - lf-infra-gerrit-scm:
331           git-url: '{git-url}'
332           refspec: 'refs/heads/{branch}'
333           branch: '{branch}'
334           submodule-recursive: true
335           choosing-strategy: default
336           jenkins-ssh-credential: '{jenkins-ssh-credential}'
337
338     triggers:
339       - timed: '{obj:cron}'
340       - gerrit:
341           server-name: '{gerrit-server-name}'
342           trigger-on: '{obj:gerrit_merge_triggers}'
343           projects:
344             - project-compare-type: ANT
345               project-pattern: '{project}'
346               branches:
347                 - branch-compare-type: ANT
348                   branch-pattern: '**/{branch}'
349               file-paths: '{obj:gerrit_trigger_file_paths}'
350
351 - job-template:
352     name: '{project-name}-jenkins-cfg-merge'
353     id: github-jenkins-cfg-merge
354     <<: *lf_jenkins_cfg_merge
355
356     properties:
357       - github:
358           url: '{git-url}/{github-org}/{project}'
359
360     scm:
361       - lf-infra-github-scm:
362           url: '{git-clone-url}{github-org}/{project}'
363           refspec: ''
364           branch: 'refs/heads/{branch}'
365           submodule-recursive: true
366           choosing-strategy: default
367           jenkins-ssh-credential: '{jenkins-ssh-credential}'
368
369     triggers:
370       - timed: '{obj:cron}'
371       - github
372       - pollscm:
373           cron: ''
374       - lf-infra-github-pr-trigger:
375           trigger-phrase: '^remerge$'
376           only-trigger-phrase: true
377           status-context: 'Jenkins CFG Merge'
378           permit-all: false
379           github-hooks: true
380           github-org: '{github-org}'
381           github_pr_whitelist: '{obj:github_pr_whitelist}'
382           github_pr_admin_list: '{obj:github_pr_admin_list}'
383
384
385 ##################
386 # JJB DEPLOY JOB #
387 ##################
388
389 - lf_jjb_deploy_job: &lf_jjb_deploy_job
390     name: lf-jjb-deploy-job
391
392     ######################
393     # Default parameters #
394     ######################
395
396     branch: master
397     git-url: '$GIT_URL/$GERRIT_PROJECT'
398     stream: master
399     gerrit_jjb_deploy_job_triggers:
400       - comment-added-contains-event:
401           comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
402
403     #####################
404     # Job Configuration #
405     #####################
406
407     project-type: freestyle
408     node: '{build-node}'
409     concurrent: true
410
411     properties:
412       - lf-infra-properties:
413           project: '{project}'
414           build-days-to-keep: 1
415
416     parameters:
417       - lf-infra-parameters:
418           project: '{project}'
419           stream: '{stream}'
420           branch: '{branch}'
421           lftools-version: '{lftools-version}'
422
423     wrappers:
424       - lf-infra-wrappers:
425           build-timeout: 5
426           jenkins-ssh-credential: '{jenkins-ssh-credential}'
427
428     builders:
429       - lf-pip-install:
430           pip-packages: jenkins-job-builder
431       - lf-infra-jjbini-sandbox
432       - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
433
434     publishers:
435       - lf-infra-publish
436
437 - job-template:
438     name: '{project-name}-jjb-deploy-job'
439     id: gerrit-jjb-deploy-job
440     <<: *lf_jjb_deploy_job
441
442     scm:
443       - lf-infra-gerrit-scm:
444           git-url: '{git-url}'
445           refspec: 'refs/heads/{branch}'
446           branch: '{branch}'
447           submodule-recursive: true
448           choosing-strategy: default
449           jenkins-ssh-credential: '{jenkins-ssh-credential}'
450
451     triggers:
452       - gerrit:
453           server-name: '{gerrit-server-name}'
454           trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
455           projects:
456             - project-compare-type: ANT
457               project-pattern: '**'
458               branches:
459                 - branch-compare-type: ANT
460                   branch-pattern: '**'
461           skip-vote:
462             success: true
463             failed: true
464             unstable: true
465             notbuilt: true
466
467 - job-template:
468     name: '{project-name}-jjb-deploy-job'
469     id: github-jjb-deploy-job
470     <<: *lf_jjb_deploy_job
471
472     properties:
473       - github:
474           url: '{git-url}/{github-org}/{project}'
475
476     scm:
477       - lf-infra-github-scm:
478           url: '{git-clone-url}{github-org}/{project}'
479           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
480           branch: '$sha1'
481           submodule-recursive: true
482           choosing-strategy: default
483           jenkins-ssh-credential: '{jenkins-ssh-credential}'
484
485     triggers:
486       - github-pull-request:
487           trigger-phrase: '^jjb-deploy (?!\*+$).+$'
488           only-trigger-phrase: true
489           status-context: 'JJB Deploy Job'
490           permit-all: true
491           github-hooks: true
492
493 #############
494 # JJB Merge #
495 #############
496
497 - lf_jjb_merge: &lf_jjb_merge
498     name: lf-jjb-merge
499
500     ######################
501     # Default parameters #
502     ######################
503
504     gerrit_merge_triggers:
505       - change-merged-event
506       - comment-added-contains-event:
507           comment-contains-value: remerge$
508
509     #####################
510     # Job Configuration #
511     #####################
512
513     builders:
514       - lf-infra-jjbini
515       - shell: !include-raw-escape:
516           - ../shell/jjb-install.sh
517           - ../shell/jjb-merge-job.sh
518           - ../shell/jjb-cleanup.sh
519
520 - job-template:
521     name: '{project-name}-jjb-merge'
522     id: gerrit-jjb-merge
523     <<: *lf_jjb_common
524     # yamllint disable-line rule:key-duplicates
525     <<: *lf_jjb_merge
526
527     git-url: '$GIT_URL/$GERRIT_PROJECT'
528
529     scm:
530       - lf-infra-gerrit-scm:
531           git-url: '{git-url}'
532           refspec: ''
533           branch: '{branch}'
534           submodule-recursive: '{submodule-recursive}'
535           choosing-strategy: default
536           jenkins-ssh-credential: '{jenkins-ssh-credential}'
537
538     triggers:
539       - gerrit:
540           server-name: '{gerrit-server-name}'
541           trigger-on: '{obj:gerrit_merge_triggers}'
542           projects:
543             - project-compare-type: ANT
544               project-pattern: '{project}'
545               branches:
546                 - branch-compare-type: ANT
547                   branch-pattern: '**/{branch}'
548               file-paths: '{obj:gerrit_trigger_file_paths}'
549
550 - job-template:
551     name: '{project-name}-jjb-merge'
552     id: github-jjb-merge
553     <<: *lf_jjb_common
554     # yamllint disable-line rule:key-duplicates
555     <<: *lf_jjb_merge
556
557     #####################
558     # Job Configuration #
559     #####################
560
561     properties:
562       - github:
563           url: '{git-url}/{github-org}/{project}'
564
565     scm:
566       - lf-infra-github-scm:
567           url: '{git-clone-url}{github-org}/{project}'
568           refspec: ''
569           branch: 'refs/heads/{branch}'
570           submodule-recursive: '{submodule-recursive}'
571           choosing-strategy: default
572           jenkins-ssh-credential: '{jenkins-ssh-credential}'
573
574     triggers:
575       - github
576       - pollscm:
577           cron: ''
578       - github-pull-request:
579           trigger-phrase: '^remerge$'
580           only-trigger-phrase: true
581           status-context: 'JJB Merge'
582           permit-all: false
583           github-hooks: true
584           org-list:
585             - '{github-org}'
586           white-list: '{obj:github_pr_whitelist}'
587           admin-list: '{obj:github_pr_admin_list}'
588           included-regions: '{obj:github_included_regions}'
589
590 ##############
591 # JJB Verify #
592 ##############
593
594 - lf_jjb_verify: &lf_jjb_verify
595     name: lf-jjb-verify
596
597     ######################
598     # Default parameters #
599     ######################
600
601     gerrit_verify_triggers:
602       - patchset-created-event:
603           exclude-drafts: true
604           exclude-trivial-rebase: false
605           exclude-no-code-change: false
606       - draft-published-event
607       - comment-added-contains-event:
608           comment-contains-value: recheck$
609
610     #####################
611     # Job Configuration #
612     #####################
613
614     concurrent: true
615
616     builders:
617       - lf-infra-jjbini
618       - shell: !include-raw-escape:
619           - ../shell/git-validate-jira-urls.sh
620           - ../shell/jjb-install.sh
621           - ../shell/jjb-verify-job.sh
622           - ../shell/jjb-check-unicode.sh
623           - ../shell/jjb-cleanup.sh
624       - lf-infra-gpg-verify-git-signature
625
626 - job-template:
627     name: '{project-name}-jjb-verify'
628     id: gerrit-jjb-verify
629     <<: *lf_jjb_common
630     # yamllint disable-line rule:key-duplicates
631     <<: *lf_jjb_verify
632
633     ######################
634     # Default parameters #
635     ######################
636
637     git-url: '$GIT_URL/$GERRIT_PROJECT'
638
639     #####################
640     # Job Configuration #
641     #####################
642
643     scm:
644       - lf-infra-gerrit-scm:
645           git-url: '{git-url}'
646           refspec: '$GERRIT_REFSPEC'
647           branch: '$GERRIT_BRANCH'
648           submodule-recursive: '{submodule-recursive}'
649           choosing-strategy: gerrit
650           jenkins-ssh-credential: '{jenkins-ssh-credential}'
651
652     triggers:
653       - gerrit:
654           server-name: '{gerrit-server-name}'
655           trigger-on: '{obj:gerrit_verify_triggers}'
656           projects:
657             - project-compare-type: ANT
658               project-pattern: '{project}'
659               branches:
660                 - branch-compare-type: ANT
661                   branch-pattern: '**/{branch}'
662               file-paths: '{obj:gerrit_trigger_file_paths}'
663
664 - job-template:
665     name: '{project-name}-jjb-verify'
666     id: github-jjb-verify
667     <<: *lf_jjb_common
668     # yamllint disable-line rule:key-duplicates
669     <<: *lf_jjb_verify
670
671     #####################
672     # Job Configuration #
673     #####################
674
675     properties:
676       - github:
677           url: '{git-url}/{github-org}/{project}'
678
679     scm:
680       - lf-infra-github-scm:
681           url: '{git-clone-url}{github-org}/{project}'
682           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
683           branch: '$sha1'
684           submodule-recursive: '{submodule-recursive}'
685           choosing-strategy: default
686           jenkins-ssh-credential: '{jenkins-ssh-credential}'
687
688     triggers:
689       - github-pull-request:
690           trigger-phrase: '^recheck$'
691           only-trigger-phrase: false
692           status-context: 'JJB Verify'
693           permit-all: true
694           github-hooks: true
695           included-regions: '{obj:github_included_regions}'
696
697 ################
698 # Packer Merge #
699 ################
700
701 - lf_packer_merge: &lf_packer_merge
702     name: lf-packer-merge
703
704     #####################
705     # Job Configuration #
706     #####################
707
708     builders:
709       - lf-infra-packer-validate:
710           packer-cloud-settings: '{packer-cloud-settings}'
711           packer-version: '{packer-version}'
712       - lf-infra-packer-build:
713           packer-cloud-settings: '{packer-cloud-settings}'
714           packer-version: '{packer-version}'
715           platform: '{platforms}'
716           template: '{templates}'
717
718 - job-template:
719     name: '{project-name}-packer-merge-{platforms}-{templates}'
720     id: gerrit-packer-merge
721     <<: *lf_packer_common
722     # yamllint disable-line rule:key-duplicates
723     <<: *lf_packer_merge
724
725     ######################
726     # Default parameters #
727     ######################
728
729     git-url: '$GIT_URL/$GERRIT_PROJECT'
730
731     gerrit_merge_triggers:
732       - change-merged-event
733       - comment-added-contains-event:
734           comment-contains-value: remerge$
735
736     #####################
737     # Job Configuration #
738     #####################
739
740     scm:
741       - lf-infra-gerrit-scm:
742           git-url: '{git-url}'
743           refspec: '$GERRIT_REFSPEC'
744           branch: '$GERRIT_BRANCH'
745           submodule-recursive: '{submodule-recursive}'
746           choosing-strategy: gerrit
747           jenkins-ssh-credential: '{jenkins-ssh-credential}'
748
749     triggers:
750       - timed: '00 10 1 * *'
751       - gerrit:
752           server-name: '{gerrit-server-name}'
753           trigger-on: '{obj:gerrit_merge_triggers}'
754           projects:
755             - project-compare-type: ANT
756               project-pattern: '{project}'
757               branches:
758                 - branch-compare-type: ANT
759                   branch-pattern: '**/{branch}'
760               file-paths:
761                 - compare-type: REG_EXP
762                   pattern: 'packer\/provision\/.*\.sh'
763                 - compare-type: REG_EXP
764                   pattern: 'packer\/provision\/{templates}\.yaml'
765                 - compare-type: REG_EXP
766                   pattern: 'packer\/provision\/local-{templates}\.yaml'
767                 - compare-type: REG_EXP
768                   pattern: 'packer\/templates\/{templates}\.json'
769                 - compare-type: REG_EXP
770                   pattern: 'packer\/vars\/{platforms}\.json'
771
772 - job-template:
773     name: '{project-name}-packer-merge-{platforms}-{templates}'
774     id: github-packer-merge
775     <<: *lf_packer_common
776     # yamllint disable-line rule:key-duplicates
777     <<: *lf_packer_merge
778
779     #####################
780     # Job Configuration #
781     #####################
782
783     properties:
784       - github:
785           url: '{git-url}/{github-org}/{project}'
786
787     scm:
788       - lf-infra-github-scm:
789           url: '{git-clone-url}{github-org}/{project}'
790           refspec: ''
791           branch: 'refs/heads/{branch}'
792           submodule-recursive: '{submodule-recursive}'
793           choosing-strategy: default
794           jenkins-ssh-credential: '{jenkins-ssh-credential}'
795
796     triggers:
797       - timed: '00 10 1 * *'
798       - github
799       - pollscm:
800           cron: ''
801
802       - github-pull-request:
803           trigger-phrase: '^remerge$'
804           only-trigger-phrase: true
805           status-context: 'Packer {platforms}-{templates} Merge'
806           permit-all: false
807           github-hooks: true
808           org-list:
809             - '{github-org}'
810           white-list: '{obj:github_pr_whitelist}'
811           admin-list: '{obj:github_pr_admin_list}'
812           # included-regions MUST match Gerrit Trigger file-paths
813           included-regions:
814             - 'packer\/provision\/.*\.sh'
815             - 'packer\/provision\/{templates}\.yaml'
816             - 'packer\/provision\/local-{templates}\.yaml'
817             - 'packer\/templates\/{templates}\.json'
818             - 'packer\/vars\/{platforms}\.json'
819
820 #################
821 # Packer Verify #
822 #################
823
824 - lf_packer_verify: &lf_packer_verify
825     name: lf-packer-verify
826
827     ######################
828     # Default parameters #
829     ######################
830
831     build-timeout: 10
832
833     gerrit_verify_triggers:
834       - patchset-created-event:
835           exclude-drafts: true
836           exclude-trivial-rebase: false
837           exclude-no-code-change: false
838       - draft-published-event
839       - comment-added-contains-event:
840           comment-contains-value: recheck$
841
842     gerrit_trigger_file_paths:
843       - compare-type: REG_EXP
844         pattern: 'packer\/.*'
845
846     # github_included_regions MUST match gerrit_trigger_file_paths
847     github_included_regions:
848       - 'packer\/.*'
849
850     #####################
851     # Job Configuration #
852     #####################
853
854     concurrent: true
855
856     builders:
857       - lf-infra-packer-validate:
858           packer-cloud-settings: '{packer-cloud-settings}'
859           packer-version: '{packer-version}'
860
861 - job-template:
862     name: '{project-name}-packer-verify'
863     id: gerrit-packer-verify
864     <<: *lf_packer_common
865     # yamllint disable-line rule:key-duplicates
866     <<: *lf_packer_verify
867
868     ######################
869     # Default parameters #
870     ######################
871
872     git-url: '$GIT_URL/$GERRIT_PROJECT'
873
874     #####################
875     # Job Configuration #
876     #####################
877
878     scm:
879       - lf-infra-gerrit-scm:
880           git-url: '{git-url}'
881           refspec: '$GERRIT_REFSPEC'
882           branch: '$GERRIT_BRANCH'
883           submodule-recursive: '{submodule-recursive}'
884           choosing-strategy: gerrit
885           jenkins-ssh-credential: '{jenkins-ssh-credential}'
886
887     triggers:
888       - gerrit:
889           server-name: '{gerrit-server-name}'
890           trigger-on: '{obj:gerrit_verify_triggers}'
891           projects:
892             - project-compare-type: ANT
893               project-pattern: '{project}'
894               branches:
895                 - branch-compare-type: ANT
896                   branch-pattern: '**/{branch}'
897               file-paths: '{obj:gerrit_trigger_file_paths}'
898
899 - job-template:
900     name: '{project-name}-packer-verify'
901     id: github-packer-verify
902     <<: *lf_packer_common
903     # yamllint disable-line rule:key-duplicates
904     <<: *lf_packer_verify
905
906     #####################
907     # Job Configuration #
908     #####################
909
910     properties:
911       - github:
912           url: '{git-url}/{github-org}/{project}'
913
914     scm:
915       - lf-infra-github-scm:
916           url: '{git-clone-url}{github-org}/{project}'
917           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
918           branch: '$sha1'
919           submodule-recursive: '{submodule-recursive}'
920           choosing-strategy: default
921           jenkins-ssh-credential: '{jenkins-ssh-credential}'
922
923     triggers:
924       - github-pull-request:
925           trigger-phrase: '^recheck$'
926           only-trigger-phrase: false
927           status-context: 'Packer Verify'
928           permit-all: true
929           github-hooks: true
930           included-regions: '{obj:github_included_regions}'