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