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