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