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