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