2330d28f7d8ba517a5a1f472f7e6604862c3585f
[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       - lf-infra-properties:
380           project: '{project}'
381           build-days-to-keep: 1
382       - github:
383           url: '{git-url}/{github-org}/{project}'
384
385     scm:
386       - lf-infra-github-scm:
387           url: '{git-clone-url}{github-org}/{project}'
388           refspec: ''
389           branch: 'refs/heads/{branch}'
390           submodule-recursive: true
391           choosing-strategy: default
392           jenkins-ssh-credential: '{jenkins-ssh-credential}'
393
394     triggers:
395       - timed: '{obj:cron}'
396       - github
397       - pollscm:
398           cron: ''
399       - github-pull-request:
400           trigger-phrase: '^remerge$'
401           only-trigger-phrase: true
402           status-context: 'Jenkins CFG Merge'
403           permit-all: false
404           github-hooks: true
405           org-list:
406             - '{github-org}'
407           white-list: '{obj:github_pr_whitelist}'
408           admin-list: '{obj:github_pr_admin_list}'
409           included-regions: '{obj:github_included_regions}'
410
411 ##################
412 # JJB DEPLOY JOB #
413 ##################
414
415 - lf_jjb_deploy_job: &lf_jjb_deploy_job
416     name: lf-jjb-deploy-job
417
418     ######################
419     # Default parameters #
420     ######################
421
422     branch: master
423     # jjb-deploy should always clone $PROJECT regardless of what
424     # $GERRIT_PROJECT triggered the job.
425     git-url: '$GIT_URL/$PROJECT'
426     stream: master
427     gerrit_jjb_deploy_job_triggers:
428       - comment-added-contains-event:
429           comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
430
431     #####################
432     # Job Configuration #
433     #####################
434
435     project-type: freestyle
436     node: '{build-node}'
437     concurrent: true
438
439     properties:
440       - lf-infra-properties:
441           project: '{project}'
442           build-days-to-keep: 1
443
444     parameters:
445       - lf-infra-parameters:
446           project: '{project}'
447           stream: '{stream}'
448           branch: '{branch}'
449           lftools-version: '{lftools-version}'
450
451     wrappers:
452       - lf-infra-wrappers:
453           build-timeout: 5
454           jenkins-ssh-credential: '{jenkins-ssh-credential}'
455
456     builders:
457       - lf-pip-install:
458           pip-packages: jenkins-job-builder
459       - lf-infra-jjbini-sandbox
460       - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
461
462     publishers:
463       - lf-infra-publish
464
465 - job-template:
466     name: '{project-name}-jjb-deploy-job'
467     id: gerrit-jjb-deploy-job
468     <<: *lf_jjb_deploy_job
469
470     scm:
471       - lf-infra-gerrit-scm:
472           git-url: '{git-url}'
473           refspec: 'refs/heads/{branch}'
474           branch: '{branch}'
475           submodule-recursive: true
476           choosing-strategy: default
477           jenkins-ssh-credential: '{jenkins-ssh-credential}'
478
479     triggers:
480       - gerrit:
481           server-name: '{gerrit-server-name}'
482           trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
483           projects:
484             - project-compare-type: ANT
485               project-pattern: '**'
486               branches:
487                 - branch-compare-type: ANT
488                   branch-pattern: '**'
489           skip-vote:
490             success: true
491             failed: true
492             unstable: true
493             notbuilt: true
494
495 - job-template:
496     name: '{project-name}-jjb-deploy-job'
497     id: github-jjb-deploy-job
498     <<: *lf_jjb_deploy_job
499
500     properties:
501       - lf-infra-properties:
502           project: '{project}'
503           build-days-to-keep: 1
504       - github:
505           url: '{git-url}/{github-org}/{project}'
506
507     scm:
508       - lf-infra-github-scm:
509           url: '{git-clone-url}{github-org}/{project}'
510           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
511           branch: '$sha1'
512           submodule-recursive: true
513           choosing-strategy: default
514           jenkins-ssh-credential: '{jenkins-ssh-credential}'
515
516     triggers:
517       - github-pull-request:
518           trigger-phrase: '^jjb-deploy (?!\*+$).+$'
519           only-trigger-phrase: true
520           status-context: 'JJB Deploy Job'
521           permit-all: true
522           github-hooks: true
523
524 #############
525 # JJB Merge #
526 #############
527
528 - lf_jjb_merge: &lf_jjb_merge
529     name: lf-jjb-merge
530
531     ######################
532     # Default parameters #
533     ######################
534
535     gerrit_merge_triggers:
536       - change-merged-event
537       - comment-added-contains-event:
538           comment-contains-value: remerge$
539
540     #####################
541     # Job Configuration #
542     #####################
543
544     builders:
545       - lf-infra-jjbini
546       - shell: !include-raw-escape:
547           - ../shell/jjb-install.sh
548           - ../shell/jjb-merge-job.sh
549           - ../shell/jjb-cleanup.sh
550
551 - job-template:
552     name: '{project-name}-jjb-merge'
553     id: gerrit-jjb-merge
554     <<: *lf_jjb_common
555     # yamllint disable-line rule:key-duplicates
556     <<: *lf_jjb_merge
557
558     git-url: '$GIT_URL/$GERRIT_PROJECT'
559
560     scm:
561       - lf-infra-gerrit-scm:
562           git-url: '{git-url}'
563           refspec: ''
564           branch: '{branch}'
565           submodule-recursive: '{submodule-recursive}'
566           choosing-strategy: default
567           jenkins-ssh-credential: '{jenkins-ssh-credential}'
568
569     triggers:
570       - gerrit:
571           server-name: '{gerrit-server-name}'
572           trigger-on: '{obj:gerrit_merge_triggers}'
573           projects:
574             - project-compare-type: ANT
575               project-pattern: '{project}'
576               branches:
577                 - branch-compare-type: ANT
578                   branch-pattern: '**/{branch}'
579               file-paths: '{obj:gerrit_trigger_file_paths}'
580
581 - job-template:
582     name: '{project-name}-jjb-merge'
583     id: github-jjb-merge
584     <<: *lf_jjb_common
585     # yamllint disable-line rule:key-duplicates
586     <<: *lf_jjb_merge
587
588     #####################
589     # Job Configuration #
590     #####################
591
592     properties:
593       - lf-infra-properties:
594           project: '{project}'
595           build-days-to-keep: 7
596       - github:
597           url: '{git-url}/{github-org}/{project}'
598
599     scm:
600       - lf-infra-github-scm:
601           url: '{git-clone-url}{github-org}/{project}'
602           refspec: ''
603           branch: 'refs/heads/{branch}'
604           submodule-recursive: '{submodule-recursive}'
605           choosing-strategy: default
606           jenkins-ssh-credential: '{jenkins-ssh-credential}'
607
608     triggers:
609       - github
610       - pollscm:
611           cron: ''
612       - github-pull-request:
613           trigger-phrase: '^remerge$'
614           only-trigger-phrase: true
615           status-context: 'JJB Merge'
616           permit-all: false
617           github-hooks: true
618           org-list:
619             - '{github-org}'
620           white-list: '{obj:github_pr_whitelist}'
621           admin-list: '{obj:github_pr_admin_list}'
622           included-regions: '{obj:github_included_regions}'
623
624 ##############
625 # JJB Verify #
626 ##############
627
628 - lf_jjb_verify: &lf_jjb_verify
629     name: lf-jjb-verify
630
631     ######################
632     # Default parameters #
633     ######################
634
635     gerrit_verify_triggers:
636       - patchset-created-event:
637           exclude-drafts: true
638           exclude-trivial-rebase: false
639           exclude-no-code-change: false
640       - draft-published-event
641       - comment-added-contains-event:
642           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
643
644     #####################
645     # Job Configuration #
646     #####################
647
648     concurrent: true
649
650     builders:
651       - lf-infra-jjbini
652       - shell: !include-raw-escape:
653           - ../shell/git-validate-jira-urls.sh
654           - ../shell/jjb-install.sh
655           - ../shell/jjb-verify-job.sh
656           - ../shell/jjb-check-unicode.sh
657           - ../shell/jjb-cleanup.sh
658       - lf-infra-gpg-verify-git-signature
659
660 - job-template:
661     name: '{project-name}-jjb-verify'
662     id: gerrit-jjb-verify
663     <<: *lf_jjb_common
664     # yamllint disable-line rule:key-duplicates
665     <<: *lf_jjb_verify
666
667     ######################
668     # Default parameters #
669     ######################
670
671     git-url: '$GIT_URL/$GERRIT_PROJECT'
672
673     #####################
674     # Job Configuration #
675     #####################
676
677     scm:
678       - lf-infra-gerrit-scm:
679           git-url: '{git-url}'
680           refspec: '$GERRIT_REFSPEC'
681           branch: '$GERRIT_BRANCH'
682           submodule-recursive: '{submodule-recursive}'
683           choosing-strategy: gerrit
684           jenkins-ssh-credential: '{jenkins-ssh-credential}'
685
686     triggers:
687       - gerrit:
688           server-name: '{gerrit-server-name}'
689           trigger-on: '{obj:gerrit_verify_triggers}'
690           projects:
691             - project-compare-type: ANT
692               project-pattern: '{project}'
693               branches:
694                 - branch-compare-type: ANT
695                   branch-pattern: '**/{branch}'
696               file-paths: '{obj:gerrit_trigger_file_paths}'
697
698 - job-template:
699     name: '{project-name}-jjb-verify'
700     id: github-jjb-verify
701     <<: *lf_jjb_common
702     # yamllint disable-line rule:key-duplicates
703     <<: *lf_jjb_verify
704
705     #####################
706     # Job Configuration #
707     #####################
708
709     properties:
710       - lf-infra-properties:
711           project: '{project}'
712           build-days-to-keep: 7
713       - github:
714           url: '{git-url}/{github-org}/{project}'
715
716     scm:
717       - lf-infra-github-scm:
718           url: '{git-clone-url}{github-org}/{project}'
719           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
720           branch: '$sha1'
721           submodule-recursive: '{submodule-recursive}'
722           choosing-strategy: default
723           jenkins-ssh-credential: '{jenkins-ssh-credential}'
724
725     triggers:
726       - github-pull-request:
727           trigger-phrase: '^(recheck|reverify)$'
728           only-trigger-phrase: false
729           status-context: 'JJB Verify'
730           permit-all: true
731           github-hooks: true
732           included-regions: '{obj:github_included_regions}'
733
734 #################
735 # License Check #
736 #################
737
738 - lf_license_check: &lf_license_check
739     name: lf-license-check
740
741     ######################
742     # Default parameters #
743     ######################
744
745     branch: master
746     build-days-to-keep: 7
747     build-timeout: 15
748     file-patterns: >
749         *.go
750         *.groovy
751         *.java
752         *.py
753         *.sh
754     git-url: '$GIT_URL/$PROJECT'
755     lhc-version: 0.2.0
756     license-exclude-paths: ''
757     licenses-allowed: Apache-2.0,EPL-1.0,MIT
758     project-pattern: '**'
759     spdx-disable: false
760     stream: master
761
762     #####################
763     # Job Configuration #
764     #####################
765
766     project-type: freestyle
767     node: '{build-node}'
768     concurrent: true
769
770     properties:
771       - lf-infra-properties:
772           build-days-to-keep: '{build-days-to-keep}'
773
774     parameters:
775       - lf-infra-parameters:
776           project: '{project}'
777           branch: '{branch}'
778           stream: '{stream}'
779           lftools-version: '{lftools-version}'
780
781     wrappers:
782       - lf-infra-wrappers:
783           build-timeout: '{build-timeout}'
784           jenkins-ssh-credential: '{jenkins-ssh-credential}'
785
786     builders:
787       - lf-license-check:
788           file-patterns: '{file-patterns}'
789           spdx-disable: '{spdx-disable}'
790           lhc-version: '{lhc-version}'
791           license-exclude-paths: '{license-exclude-paths}'
792           licenses-allowed: '{licenses-allowed}'
793
794     publishers:
795       - lf-infra-publish
796
797 - job-template:
798     name: '{project-name}-license-check'
799     id: gerrit-license-check
800     <<: *lf_license_check
801
802     git-url: '$GIT_URL/$GERRIT_PROJECT'
803
804     scm:
805       - lf-infra-gerrit-scm:
806           git-url: '{git-url}'
807           refspec: '$GERRIT_REFSPEC'
808           branch: '$GERRIT_BRANCH'
809           # Submodules are out of the project's control
810           submodule-recursive: false
811           choosing-strategy: gerrit
812           jenkins-ssh-credential: '{jenkins-ssh-credential}'
813
814     triggers:
815       - gerrit:
816           server-name: '{gerrit-server-name}'
817           # Trigger should not be overridable as we want to always run
818           trigger-on:
819             - patchset-created-event:
820                 exclude-drafts: false
821                 exclude-trivial-rebase: false
822                 exclude-no-code-change: false
823             - draft-published-event
824             - comment-added-contains-event:
825                 comment-contains-value: recheck$
826           projects:
827             - project-compare-type: ANT
828               project-pattern: '{project-pattern}'
829               branches:
830                 - branch-compare-type: ANT
831                   branch-pattern: '**'
832
833 - job-template:
834     name: '{project-name}-license-check'
835     id: github-license-check
836     <<: *lf_license_check
837
838     properties:
839       - lf-infra-properties:
840           build-days-to-keep: '{build-days-to-keep}'
841       - github:
842           url: '{git-url}/{github-org}/{project}'
843
844     scm:
845       - lf-infra-github-scm:
846           url: '{git-clone-url}{github-org}/{project}'
847           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
848           branch: '$sha1'
849           # Submodules are out of the project's control
850           submodule-recursive: false
851           choosing-strategy: default
852           jenkins-ssh-credential: '{jenkins-ssh-credential}'
853
854     triggers:
855       - github-pull-request:
856           trigger-phrase: '^recheck$'
857           only-trigger-phrase: false
858           status-context: 'License Check'
859           permit-all: true
860           github-hooks: true
861
862 ####################
863 # Info YAML Verify #
864 ####################
865
866 - lf_info_yaml_verify: &lf_info_yaml_verify
867     name: lf-info-yaml-verify
868
869     ######################
870     # Default parameters #
871     ######################
872
873     gerrit_verify_triggers:
874       - patchset-created-event:
875           exclude-drafts: true
876           exclude-trivial-rebase: false
877           exclude-no-code-change: false
878       - draft-published-event
879       - comment-added-contains-event:
880           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
881
882     #####################
883     # Job Configuration #
884     #####################
885
886     concurrent: true
887
888     builders:
889       - shell: !include-raw-escape:
890           - ../shell/git-validate-info-yaml.sh
891           - ../shell/info-file-validate.sh
892
893 - job-template:
894     name: '{project-name}-info-yaml-verify'
895     id: gerrit-info-yaml-verify
896     <<: *lf_jjb_common
897     # yamllint disable-line rule:key-duplicates
898     <<: *lf_info_yaml_verify
899
900     git-url: '$GIT_URL/$GERRIT_PROJECT'
901
902     scm:
903       - lf-infra-gerrit-scm:
904           git-url: '{git-url}'
905           refspec: '$GERRIT_REFSPEC'
906           branch: '$GERRIT_BRANCH'
907           submodule-recursive: '{submodule-recursive}'
908           choosing-strategy: gerrit
909           jenkins-ssh-credential: '{jenkins-ssh-credential}'
910
911     triggers:
912       - gerrit:
913           server-name: '{gerrit-server-name}'
914           trigger-on: '{obj:gerrit_verify_triggers}'
915           projects:
916             - project-compare-type: ANT
917               project-pattern: '{project}'
918               branches:
919                 - branch-compare-type: ANT
920                   branch-pattern: '**/{branch}'
921               file-paths:
922                 - compare-type: REG_EXP
923                   pattern: 'INFO.yaml'
924
925 - job-template:
926     name: '{project-name}-info-yaml-verify'
927     id: github-info-yaml-verify
928     <<: *lf_jjb_common
929     # yamllint disable-line rule:key-duplicates
930     <<: *lf_info_yaml_verify
931
932     properties:
933       - github:
934           url: '{git-url}/{github-org}/{project}'
935
936     scm:
937       - lf-infra-github-scm:
938           url: '{git-clone-url}{github-org}/{project}'
939           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
940           branch: '$sha1'
941           submodule-recursive: '{submodule-recursive}'
942           choosing-strategy: default
943           jenkins-ssh-credential: '{jenkins-ssh-credential}'
944
945     triggers:
946       - github-pull-request:
947           trigger-phrase: '^(recheck|reverify)$'
948           only-trigger-phrase: false
949           status-context: 'INFO File Verify'
950           permit-all: true
951           github-hooks: true
952           # included-regions MUST match gerrit file-paths
953           included-regions: 'INFO.yaml'
954
955 ################
956 # Packer Merge #
957 ################
958
959 - lf_packer_merge: &lf_packer_merge
960     name: lf-packer-merge
961
962     #####################
963     # Job Configuration #
964     #####################
965
966     builders:
967       - lf-infra-packer-build:
968           packer-cloud-settings: '{packer-cloud-settings}'
969           packer-version: '{packer-version}'
970           platform: '{platforms}'
971           template: '{templates}'
972
973 - job-template:
974     name: '{project-name}-packer-merge-{platforms}-{templates}'
975     id: gerrit-packer-merge
976     <<: *lf_packer_common
977     # yamllint disable-line rule:key-duplicates
978     <<: *lf_packer_merge
979
980     ######################
981     # Default parameters #
982     ######################
983
984     git-url: '$GIT_URL/$GERRIT_PROJECT'
985
986     gerrit_merge_triggers:
987       - change-merged-event
988       - comment-added-contains-event:
989           comment-contains-value: remerge$
990
991     #####################
992     # Job Configuration #
993     #####################
994
995     scm:
996       - lf-infra-gerrit-scm:
997           git-url: '{git-url}'
998           refspec: '$GERRIT_REFSPEC'
999           branch: '$GERRIT_BRANCH'
1000           submodule-recursive: '{submodule-recursive}'
1001           choosing-strategy: gerrit
1002           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1003
1004     triggers:
1005       - timed: '{cron}'
1006       - gerrit:
1007           server-name: '{gerrit-server-name}'
1008           trigger-on: '{obj:gerrit_merge_triggers}'
1009           projects:
1010             - project-compare-type: ANT
1011               project-pattern: '{project}'
1012               branches:
1013                 - branch-compare-type: ANT
1014                   branch-pattern: '**/{branch}'
1015               file-paths:
1016                 - compare-type: REG_EXP
1017                   pattern: 'packer\/provision\/.*\.sh'
1018                 - compare-type: REG_EXP
1019                   pattern: 'packer\/provision\/.*\.bat'
1020                 - compare-type: REG_EXP
1021                   pattern: 'packer\/provision\/.*\.ps1'
1022                 - compare-type: REG_EXP
1023                   pattern: 'packer\/provision\/{templates}\.yaml'
1024                 - compare-type: REG_EXP
1025                   pattern: 'packer\/provision\/local-{templates}\.yaml'
1026                 - compare-type: REG_EXP
1027                   pattern: 'packer\/templates\/{templates}\.json'
1028                 - compare-type: REG_EXP
1029                   pattern: 'packer\/vars\/{platforms}\.json'
1030
1031 - job-template:
1032     name: '{project-name}-packer-merge-{platforms}-{templates}'
1033     id: github-packer-merge
1034     <<: *lf_packer_common
1035     # yamllint disable-line rule:key-duplicates
1036     <<: *lf_packer_merge
1037
1038     #####################
1039     # Job Configuration #
1040     #####################
1041
1042     properties:
1043       - lf-infra-properties:
1044           project: '{project}'
1045           build-days-to-keep: 7
1046       - github:
1047           url: '{git-url}/{github-org}/{project}'
1048
1049     scm:
1050       - lf-infra-github-scm:
1051           url: '{git-clone-url}{github-org}/{project}'
1052           refspec: ''
1053           branch: 'refs/heads/{branch}'
1054           submodule-recursive: '{submodule-recursive}'
1055           choosing-strategy: default
1056           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1057
1058     triggers:
1059       - timed: '{cron}'
1060       - github
1061       - pollscm:
1062           cron: ''
1063
1064       - github-pull-request:
1065           trigger-phrase: '^remerge$'
1066           only-trigger-phrase: true
1067           status-context: 'Packer {platforms}-{templates} Merge'
1068           permit-all: false
1069           github-hooks: true
1070           org-list:
1071             - '{github-org}'
1072           white-list: '{obj:github_pr_whitelist}'
1073           admin-list: '{obj:github_pr_admin_list}'
1074           # included-regions MUST match Gerrit Trigger file-paths
1075           included-regions:
1076             - 'packer\/provision\/.*\.sh'
1077             - 'packer\/provision\/.*\.bat'
1078             - 'packer\/provision\/.*\.ps1'
1079             - 'packer\/provision\/{templates}\.yaml'
1080             - 'packer\/provision\/local-{templates}\.yaml'
1081             - 'packer\/templates\/{templates}\.json'
1082             - 'packer\/vars\/{platforms}\.json'
1083
1084 #################
1085 # Packer Verify #
1086 #################
1087
1088 - lf_packer_verify: &lf_packer_verify
1089     name: lf-packer-verify
1090
1091     ######################
1092     # Default parameters #
1093     ######################
1094
1095     build-timeout: 10
1096
1097     gerrit_verify_triggers:
1098       - patchset-created-event:
1099           exclude-drafts: true
1100           exclude-trivial-rebase: false
1101           exclude-no-code-change: false
1102       - draft-published-event
1103       - comment-added-contains-event:
1104           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
1105
1106     gerrit_trigger_file_paths:
1107       - compare-type: REG_EXP
1108         pattern: 'packer\/.*'
1109
1110     # github_included_regions MUST match gerrit_trigger_file_paths
1111     github_included_regions:
1112       - 'packer\/.*'
1113
1114     #####################
1115     # Job Configuration #
1116     #####################
1117
1118     concurrent: true
1119
1120     builders:
1121       - lf-infra-packer-validate:
1122           packer-cloud-settings: '{packer-cloud-settings}'
1123           packer-version: '{packer-version}'
1124
1125 - job-template:
1126     name: '{project-name}-packer-verify'
1127     id: gerrit-packer-verify
1128     <<: *lf_packer_common
1129     # yamllint disable-line rule:key-duplicates
1130     <<: *lf_packer_verify
1131
1132     ######################
1133     # Default parameters #
1134     ######################
1135
1136     git-url: '$GIT_URL/$GERRIT_PROJECT'
1137
1138     #####################
1139     # Job Configuration #
1140     #####################
1141
1142     scm:
1143       - lf-infra-gerrit-scm:
1144           git-url: '{git-url}'
1145           refspec: '$GERRIT_REFSPEC'
1146           branch: '$GERRIT_BRANCH'
1147           submodule-recursive: '{submodule-recursive}'
1148           choosing-strategy: gerrit
1149           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1150
1151     triggers:
1152       - gerrit:
1153           server-name: '{gerrit-server-name}'
1154           trigger-on: '{obj:gerrit_verify_triggers}'
1155           projects:
1156             - project-compare-type: ANT
1157               project-pattern: '{project}'
1158               branches:
1159                 - branch-compare-type: ANT
1160                   branch-pattern: '**/{branch}'
1161               file-paths: '{obj:gerrit_trigger_file_paths}'
1162
1163 - job-template:
1164     name: '{project-name}-packer-verify'
1165     id: github-packer-verify
1166     <<: *lf_packer_common
1167     # yamllint disable-line rule:key-duplicates
1168     <<: *lf_packer_verify
1169
1170     #####################
1171     # Job Configuration #
1172     #####################
1173
1174     properties:
1175       - lf-infra-properties:
1176           project: '{project}'
1177           build-days-to-keep: 7
1178       - github:
1179           url: '{git-url}/{github-org}/{project}'
1180
1181     scm:
1182       - lf-infra-github-scm:
1183           url: '{git-clone-url}{github-org}/{project}'
1184           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1185           branch: '$sha1'
1186           submodule-recursive: '{submodule-recursive}'
1187           choosing-strategy: default
1188           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1189
1190     triggers:
1191       - github-pull-request:
1192           trigger-phrase: '^(recheck|reverify)$'
1193           only-trigger-phrase: false
1194           status-context: 'Packer Verify'
1195           permit-all: true
1196           github-hooks: true
1197           included-regions: '{obj:github_included_regions}'