Fix API breakage caused by OS Plugin version scan
[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     # jjb-deploy should always clone $PROJECT regardless of what
416     # $GERRIT_PROJECT triggered the job.
417     git-url: '$GIT_URL/$PROJECT'
418     stream: master
419     gerrit_jjb_deploy_job_triggers:
420       - comment-added-contains-event:
421           comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
422
423     #####################
424     # Job Configuration #
425     #####################
426
427     project-type: freestyle
428     node: '{build-node}'
429     concurrent: true
430
431     properties:
432       - lf-infra-properties:
433           project: '{project}'
434           build-days-to-keep: 1
435
436     parameters:
437       - lf-infra-parameters:
438           project: '{project}'
439           stream: '{stream}'
440           branch: '{branch}'
441           lftools-version: '{lftools-version}'
442
443     wrappers:
444       - lf-infra-wrappers:
445           build-timeout: 5
446           jenkins-ssh-credential: '{jenkins-ssh-credential}'
447
448     builders:
449       - lf-pip-install:
450           pip-packages: jenkins-job-builder
451       - lf-infra-jjbini-sandbox
452       - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
453
454     publishers:
455       - lf-infra-publish
456
457 - job-template:
458     name: '{project-name}-jjb-deploy-job'
459     id: gerrit-jjb-deploy-job
460     <<: *lf_jjb_deploy_job
461
462     scm:
463       - lf-infra-gerrit-scm:
464           git-url: '{git-url}'
465           refspec: 'refs/heads/{branch}'
466           branch: '{branch}'
467           submodule-recursive: true
468           choosing-strategy: default
469           jenkins-ssh-credential: '{jenkins-ssh-credential}'
470
471     triggers:
472       - gerrit:
473           server-name: '{gerrit-server-name}'
474           trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
475           projects:
476             - project-compare-type: ANT
477               project-pattern: '**'
478               branches:
479                 - branch-compare-type: ANT
480                   branch-pattern: '**'
481           skip-vote:
482             success: true
483             failed: true
484             unstable: true
485             notbuilt: true
486
487 - job-template:
488     name: '{project-name}-jjb-deploy-job'
489     id: github-jjb-deploy-job
490     <<: *lf_jjb_deploy_job
491
492     properties:
493       - github:
494           url: '{git-url}/{github-org}/{project}'
495
496     scm:
497       - lf-infra-github-scm:
498           url: '{git-clone-url}{github-org}/{project}'
499           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
500           branch: '$sha1'
501           submodule-recursive: true
502           choosing-strategy: default
503           jenkins-ssh-credential: '{jenkins-ssh-credential}'
504
505     triggers:
506       - github-pull-request:
507           trigger-phrase: '^jjb-deploy (?!\*+$).+$'
508           only-trigger-phrase: true
509           status-context: 'JJB Deploy Job'
510           permit-all: true
511           github-hooks: true
512
513 #############
514 # JJB Merge #
515 #############
516
517 - lf_jjb_merge: &lf_jjb_merge
518     name: lf-jjb-merge
519
520     ######################
521     # Default parameters #
522     ######################
523
524     gerrit_merge_triggers:
525       - change-merged-event
526       - comment-added-contains-event:
527           comment-contains-value: remerge$
528
529     #####################
530     # Job Configuration #
531     #####################
532
533     builders:
534       - lf-infra-jjbini
535       - shell: !include-raw-escape:
536           - ../shell/jjb-install.sh
537           - ../shell/jjb-merge-job.sh
538           - ../shell/jjb-cleanup.sh
539
540 - job-template:
541     name: '{project-name}-jjb-merge'
542     id: gerrit-jjb-merge
543     <<: *lf_jjb_common
544     # yamllint disable-line rule:key-duplicates
545     <<: *lf_jjb_merge
546
547     git-url: '$GIT_URL/$GERRIT_PROJECT'
548
549     scm:
550       - lf-infra-gerrit-scm:
551           git-url: '{git-url}'
552           refspec: ''
553           branch: '{branch}'
554           submodule-recursive: '{submodule-recursive}'
555           choosing-strategy: default
556           jenkins-ssh-credential: '{jenkins-ssh-credential}'
557
558     triggers:
559       - gerrit:
560           server-name: '{gerrit-server-name}'
561           trigger-on: '{obj:gerrit_merge_triggers}'
562           projects:
563             - project-compare-type: ANT
564               project-pattern: '{project}'
565               branches:
566                 - branch-compare-type: ANT
567                   branch-pattern: '**/{branch}'
568               file-paths: '{obj:gerrit_trigger_file_paths}'
569
570 - job-template:
571     name: '{project-name}-jjb-merge'
572     id: github-jjb-merge
573     <<: *lf_jjb_common
574     # yamllint disable-line rule:key-duplicates
575     <<: *lf_jjb_merge
576
577     #####################
578     # Job Configuration #
579     #####################
580
581     properties:
582       - github:
583           url: '{git-url}/{github-org}/{project}'
584
585     scm:
586       - lf-infra-github-scm:
587           url: '{git-clone-url}{github-org}/{project}'
588           refspec: ''
589           branch: 'refs/heads/{branch}'
590           submodule-recursive: '{submodule-recursive}'
591           choosing-strategy: default
592           jenkins-ssh-credential: '{jenkins-ssh-credential}'
593
594     triggers:
595       - github
596       - pollscm:
597           cron: ''
598       - github-pull-request:
599           trigger-phrase: '^remerge$'
600           only-trigger-phrase: true
601           status-context: 'JJB Merge'
602           permit-all: false
603           github-hooks: true
604           org-list:
605             - '{github-org}'
606           white-list: '{obj:github_pr_whitelist}'
607           admin-list: '{obj:github_pr_admin_list}'
608           included-regions: '{obj:github_included_regions}'
609
610 ##############
611 # JJB Verify #
612 ##############
613
614 - lf_jjb_verify: &lf_jjb_verify
615     name: lf-jjb-verify
616
617     ######################
618     # Default parameters #
619     ######################
620
621     gerrit_verify_triggers:
622       - patchset-created-event:
623           exclude-drafts: true
624           exclude-trivial-rebase: false
625           exclude-no-code-change: false
626       - draft-published-event
627       - comment-added-contains-event:
628           comment-contains-value: recheck$
629
630     #####################
631     # Job Configuration #
632     #####################
633
634     concurrent: true
635
636     builders:
637       - lf-infra-jjbini
638       - shell: !include-raw-escape:
639           - ../shell/git-validate-jira-urls.sh
640           - ../shell/jjb-install.sh
641           - ../shell/jjb-verify-job.sh
642           - ../shell/jjb-check-unicode.sh
643           - ../shell/jjb-cleanup.sh
644       - lf-infra-gpg-verify-git-signature
645
646 - job-template:
647     name: '{project-name}-jjb-verify'
648     id: gerrit-jjb-verify
649     <<: *lf_jjb_common
650     # yamllint disable-line rule:key-duplicates
651     <<: *lf_jjb_verify
652
653     ######################
654     # Default parameters #
655     ######################
656
657     git-url: '$GIT_URL/$GERRIT_PROJECT'
658
659     #####################
660     # Job Configuration #
661     #####################
662
663     scm:
664       - lf-infra-gerrit-scm:
665           git-url: '{git-url}'
666           refspec: '$GERRIT_REFSPEC'
667           branch: '$GERRIT_BRANCH'
668           submodule-recursive: '{submodule-recursive}'
669           choosing-strategy: gerrit
670           jenkins-ssh-credential: '{jenkins-ssh-credential}'
671
672     triggers:
673       - gerrit:
674           server-name: '{gerrit-server-name}'
675           trigger-on: '{obj:gerrit_verify_triggers}'
676           projects:
677             - project-compare-type: ANT
678               project-pattern: '{project}'
679               branches:
680                 - branch-compare-type: ANT
681                   branch-pattern: '**/{branch}'
682               file-paths: '{obj:gerrit_trigger_file_paths}'
683
684 - job-template:
685     name: '{project-name}-jjb-verify'
686     id: github-jjb-verify
687     <<: *lf_jjb_common
688     # yamllint disable-line rule:key-duplicates
689     <<: *lf_jjb_verify
690
691     #####################
692     # Job Configuration #
693     #####################
694
695     properties:
696       - github:
697           url: '{git-url}/{github-org}/{project}'
698
699     scm:
700       - lf-infra-github-scm:
701           url: '{git-clone-url}{github-org}/{project}'
702           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
703           branch: '$sha1'
704           submodule-recursive: '{submodule-recursive}'
705           choosing-strategy: default
706           jenkins-ssh-credential: '{jenkins-ssh-credential}'
707
708     triggers:
709       - github-pull-request:
710           trigger-phrase: '^recheck$'
711           only-trigger-phrase: false
712           status-context: 'JJB Verify'
713           permit-all: true
714           github-hooks: true
715           included-regions: '{obj:github_included_regions}'
716
717 ####################
718 # Info YAML Verify #
719 ####################
720
721 - lf_info_yaml_verify: &lf_info_yaml_verify
722     name: lf-info-yaml-verify
723
724     ######################
725     # Default parameters #
726     ######################
727
728     gerrit_verify_triggers:
729       - patchset-created-event:
730           exclude-drafts: true
731           exclude-trivial-rebase: false
732           exclude-no-code-change: false
733       - draft-published-event
734       - comment-added-contains-event:
735           comment-contains-value: recheck$
736
737     #####################
738     # Job Configuration #
739     #####################
740
741     concurrent: true
742
743     builders:
744       - shell: !include-raw-escape:
745           - ../shell/git-validate-info-yaml.sh
746           - ../shell/info-file-validate.sh
747
748 - job-template:
749     name: '{project-name}-info-yaml-verify'
750     id: gerrit-info-yaml-verify
751     <<: *lf_jjb_common
752     # yamllint disable-line rule:key-duplicates
753     <<: *lf_info_yaml_verify
754
755     git-url: '$GIT_URL/$GERRIT_PROJECT'
756
757     scm:
758       - lf-infra-gerrit-scm:
759           git-url: '{git-url}'
760           refspec: '$GERRIT_REFSPEC'
761           branch: '$GERRIT_BRANCH'
762           submodule-recursive: '{submodule-recursive}'
763           choosing-strategy: gerrit
764           jenkins-ssh-credential: '{jenkins-ssh-credential}'
765
766     triggers:
767       - gerrit:
768           server-name: '{gerrit-server-name}'
769           trigger-on: '{obj:gerrit_verify_triggers}'
770           projects:
771             - project-compare-type: ANT
772               project-pattern: '{project}'
773               branches:
774                 - branch-compare-type: ANT
775                   branch-pattern: '**/{branch}'
776               file-paths:
777                 - compare-type: REG_EXP
778                   pattern: 'INFO.yaml'
779
780 - job-template:
781     name: '{project-name}-info-yaml-verify'
782     id: github-info-yaml-verify
783     <<: *lf_jjb_common
784     # yamllint disable-line rule:key-duplicates
785     <<: *lf_info_yaml_verify
786
787     properties:
788       - github:
789           url: '{git-url}/{github-org}/{project}'
790
791     scm:
792       - lf-infra-github-scm:
793           url: '{git-clone-url}{github-org}/{project}'
794           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
795           branch: '$sha1'
796           submodule-recursive: '{submodule-recursive}'
797           choosing-strategy: default
798           jenkins-ssh-credential: '{jenkins-ssh-credential}'
799
800     triggers:
801       - github-pull-request:
802           trigger-phrase: '^recheck$'
803           only-trigger-phrase: false
804           status-context: 'INFO File Verify'
805           permit-all: true
806           github-hooks: true
807           # included-regions MUST match gerrit file-paths
808           included-regions: 'INFO.yaml'
809
810 ################
811 # Packer Merge #
812 ################
813
814 - lf_packer_merge: &lf_packer_merge
815     name: lf-packer-merge
816
817     #####################
818     # Job Configuration #
819     #####################
820
821     builders:
822       - lf-infra-packer-validate:
823           packer-cloud-settings: '{packer-cloud-settings}'
824           packer-version: '{packer-version}'
825       - lf-infra-packer-build:
826           packer-cloud-settings: '{packer-cloud-settings}'
827           packer-version: '{packer-version}'
828           platform: '{platforms}'
829           template: '{templates}'
830
831 - job-template:
832     name: '{project-name}-packer-merge-{platforms}-{templates}'
833     id: gerrit-packer-merge
834     <<: *lf_packer_common
835     # yamllint disable-line rule:key-duplicates
836     <<: *lf_packer_merge
837
838     ######################
839     # Default parameters #
840     ######################
841
842     git-url: '$GIT_URL/$GERRIT_PROJECT'
843
844     gerrit_merge_triggers:
845       - change-merged-event
846       - comment-added-contains-event:
847           comment-contains-value: remerge$
848
849     #####################
850     # Job Configuration #
851     #####################
852
853     scm:
854       - lf-infra-gerrit-scm:
855           git-url: '{git-url}'
856           refspec: '$GERRIT_REFSPEC'
857           branch: '$GERRIT_BRANCH'
858           submodule-recursive: '{submodule-recursive}'
859           choosing-strategy: gerrit
860           jenkins-ssh-credential: '{jenkins-ssh-credential}'
861
862     triggers:
863       - timed: '{cron}'
864       - gerrit:
865           server-name: '{gerrit-server-name}'
866           trigger-on: '{obj:gerrit_merge_triggers}'
867           projects:
868             - project-compare-type: ANT
869               project-pattern: '{project}'
870               branches:
871                 - branch-compare-type: ANT
872                   branch-pattern: '**/{branch}'
873               file-paths:
874                 - compare-type: REG_EXP
875                   pattern: 'packer\/provision\/.*\.sh'
876                 - compare-type: REG_EXP
877                   pattern: 'packer\/provision\/{templates}\.yaml'
878                 - compare-type: REG_EXP
879                   pattern: 'packer\/provision\/local-{templates}\.yaml'
880                 - compare-type: REG_EXP
881                   pattern: 'packer\/templates\/{templates}\.json'
882                 - compare-type: REG_EXP
883                   pattern: 'packer\/vars\/{platforms}\.json'
884
885 - job-template:
886     name: '{project-name}-packer-merge-{platforms}-{templates}'
887     id: github-packer-merge
888     <<: *lf_packer_common
889     # yamllint disable-line rule:key-duplicates
890     <<: *lf_packer_merge
891
892     #####################
893     # Job Configuration #
894     #####################
895
896     properties:
897       - github:
898           url: '{git-url}/{github-org}/{project}'
899
900     scm:
901       - lf-infra-github-scm:
902           url: '{git-clone-url}{github-org}/{project}'
903           refspec: ''
904           branch: 'refs/heads/{branch}'
905           submodule-recursive: '{submodule-recursive}'
906           choosing-strategy: default
907           jenkins-ssh-credential: '{jenkins-ssh-credential}'
908
909     triggers:
910       - timed: '{cron}'
911       - github
912       - pollscm:
913           cron: ''
914
915       - github-pull-request:
916           trigger-phrase: '^remerge$'
917           only-trigger-phrase: true
918           status-context: 'Packer {platforms}-{templates} Merge'
919           permit-all: false
920           github-hooks: true
921           org-list:
922             - '{github-org}'
923           white-list: '{obj:github_pr_whitelist}'
924           admin-list: '{obj:github_pr_admin_list}'
925           # included-regions MUST match Gerrit Trigger file-paths
926           included-regions:
927             - 'packer\/provision\/.*\.sh'
928             - 'packer\/provision\/{templates}\.yaml'
929             - 'packer\/provision\/local-{templates}\.yaml'
930             - 'packer\/templates\/{templates}\.json'
931             - 'packer\/vars\/{platforms}\.json'
932
933 #################
934 # Packer Verify #
935 #################
936
937 - lf_packer_verify: &lf_packer_verify
938     name: lf-packer-verify
939
940     ######################
941     # Default parameters #
942     ######################
943
944     build-timeout: 10
945
946     gerrit_verify_triggers:
947       - patchset-created-event:
948           exclude-drafts: true
949           exclude-trivial-rebase: false
950           exclude-no-code-change: false
951       - draft-published-event
952       - comment-added-contains-event:
953           comment-contains-value: recheck$
954
955     gerrit_trigger_file_paths:
956       - compare-type: REG_EXP
957         pattern: 'packer\/.*'
958
959     # github_included_regions MUST match gerrit_trigger_file_paths
960     github_included_regions:
961       - 'packer\/.*'
962
963     #####################
964     # Job Configuration #
965     #####################
966
967     concurrent: true
968
969     builders:
970       - lf-infra-packer-validate:
971           packer-cloud-settings: '{packer-cloud-settings}'
972           packer-version: '{packer-version}'
973
974 - job-template:
975     name: '{project-name}-packer-verify'
976     id: gerrit-packer-verify
977     <<: *lf_packer_common
978     # yamllint disable-line rule:key-duplicates
979     <<: *lf_packer_verify
980
981     ######################
982     # Default parameters #
983     ######################
984
985     git-url: '$GIT_URL/$GERRIT_PROJECT'
986
987     #####################
988     # Job Configuration #
989     #####################
990
991     scm:
992       - lf-infra-gerrit-scm:
993           git-url: '{git-url}'
994           refspec: '$GERRIT_REFSPEC'
995           branch: '$GERRIT_BRANCH'
996           submodule-recursive: '{submodule-recursive}'
997           choosing-strategy: gerrit
998           jenkins-ssh-credential: '{jenkins-ssh-credential}'
999
1000     triggers:
1001       - gerrit:
1002           server-name: '{gerrit-server-name}'
1003           trigger-on: '{obj:gerrit_verify_triggers}'
1004           projects:
1005             - project-compare-type: ANT
1006               project-pattern: '{project}'
1007               branches:
1008                 - branch-compare-type: ANT
1009                   branch-pattern: '**/{branch}'
1010               file-paths: '{obj:gerrit_trigger_file_paths}'
1011
1012 - job-template:
1013     name: '{project-name}-packer-verify'
1014     id: github-packer-verify
1015     <<: *lf_packer_common
1016     # yamllint disable-line rule:key-duplicates
1017     <<: *lf_packer_verify
1018
1019     #####################
1020     # Job Configuration #
1021     #####################
1022
1023     properties:
1024       - github:
1025           url: '{git-url}/{github-org}/{project}'
1026
1027     scm:
1028       - lf-infra-github-scm:
1029           url: '{git-clone-url}{github-org}/{project}'
1030           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1031           branch: '$sha1'
1032           submodule-recursive: '{submodule-recursive}'
1033           choosing-strategy: default
1034           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1035
1036     triggers:
1037       - github-pull-request:
1038           trigger-phrase: '^recheck$'
1039           only-trigger-phrase: false
1040           status-context: 'Packer Verify'
1041           permit-all: true
1042           github-hooks: true
1043           included-regions: '{obj:github_included_regions}'