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