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