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