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