4fd2c0c8ee6d8016ea352b88ff5f80dcb2da2e9b
[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: true
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: true
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 # OPENSTACK CRON #
1106 ##################
1107
1108 - lf_openstack_cron: &lf_openstack_cron
1109     name: lf-openstack-cron
1110
1111     ######################
1112     # Default parameters #
1113     ######################
1114
1115     branch: master
1116     build-days-to-keep: 7
1117     build-timeout: 10
1118     cron: '@daily'
1119     git-url: '$GIT_URL/$PROJECT'
1120     github-url: 'https://github.com'
1121     openstack-cloud: vex
1122     stream: master
1123
1124     #####################
1125     # Job Configuration #
1126     #####################
1127
1128     project-type: freestyle
1129     node: '{build-node}'
1130     concurrent: false
1131
1132     properties:
1133       - lf-infra-properties:
1134           build-days-to-keep: '{build-days-to-keep}'
1135
1136     parameters:
1137       - lf-infra-parameters:
1138           project: '{project}'
1139           stream: '{stream}'
1140           branch: '{branch}'
1141           lftools-version: '{lftools-version}'
1142
1143     wrappers:
1144       - lf-infra-wrappers:
1145           build-timeout: '{build-timeout}'
1146           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1147       # Listed after to override openstack-infra-wrappers clouds.yaml definition
1148       - config-file-provider:
1149           files:
1150             - file-id: clouds-yaml
1151               target: '$HOME/.config/openstack/clouds.yaml'
1152             - file-id: npmrc
1153               target: '$HOME/.npmrc'
1154             - file-id: pipconf
1155               target: '$HOME/.config/pip/pip.conf'
1156
1157     triggers:
1158       - timed: '{obj:cron}'
1159
1160     builders:
1161       - inject:
1162           properties-content: OS_CLOUD={openstack-cloud}
1163       - shell: !include-raw-escape: ../shell/openstack-install.sh
1164       - shell: !include-raw-escape: ../shell/openstack-protect-in-use-images.sh
1165
1166     publishers:
1167       - lf-infra-publish
1168
1169 - job-template:
1170     name: '{project-name}-openstack-cron'
1171     id: gerrit-openstack-cron
1172     <<: *lf_openstack_cron
1173
1174     scm:
1175       - lf-infra-gerrit-scm:
1176           git-url: '{git-url}'
1177           refspec: 'refs/heads/{branch}'
1178           branch: '{branch}'
1179           submodule-recursive: true
1180           choosing-strategy: default
1181           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1182
1183 - job-template:
1184     name: '{project-name}-openstack-cron'
1185     id: github-openstack-cron
1186     <<: *lf_openstack_cron
1187
1188     scm:
1189       - lf-infra-github-scm:
1190           url: '{git-clone-url}{github-org}/{project}'
1191           refspec: ''
1192           branch: 'refs/heads/{branch}'
1193           submodule-recursive: true
1194           choosing-strategy: default
1195           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1196
1197 ################
1198 # Packer Merge #
1199 ################
1200
1201 - lf_packer_merge: &lf_packer_merge
1202     name: lf-packer-merge
1203
1204     #####################
1205     # Job Configuration #
1206     #####################
1207
1208     builders:
1209       - lf-infra-packer-build:
1210           packer-cloud-settings: '{packer-cloud-settings}'
1211           packer-version: '{packer-version}'
1212           platform: '{platforms}'
1213           template: '{templates}'
1214
1215 - job-template:
1216     name: '{project-name}-packer-merge-{platforms}-{templates}'
1217     id: gerrit-packer-merge
1218     <<: *lf_packer_common
1219     # yamllint disable-line rule:key-duplicates
1220     <<: *lf_packer_merge
1221
1222     ######################
1223     # Default parameters #
1224     ######################
1225
1226     git-url: '$GIT_URL/$GERRIT_PROJECT'
1227
1228     gerrit_merge_triggers:
1229       - change-merged-event
1230       - comment-added-contains-event:
1231           comment-contains-value: remerge$
1232
1233     #####################
1234     # Job Configuration #
1235     #####################
1236
1237     scm:
1238       - lf-infra-gerrit-scm:
1239           git-url: '{git-url}'
1240           refspec: '$GERRIT_REFSPEC'
1241           branch: '$GERRIT_BRANCH'
1242           submodule-recursive: '{submodule-recursive}'
1243           choosing-strategy: gerrit
1244           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1245
1246     triggers:
1247       - timed: '{obj:cron}'
1248       - gerrit:
1249           server-name: '{gerrit-server-name}'
1250           trigger-on: '{obj:gerrit_merge_triggers}'
1251           projects:
1252             - project-compare-type: ANT
1253               project-pattern: '{project}'
1254               branches:
1255                 - branch-compare-type: ANT
1256                   branch-pattern: '**/{branch}'
1257               file-paths:
1258                 - compare-type: REG_EXP
1259                   pattern: 'packer\/provision\/.*\.sh'
1260                 - compare-type: REG_EXP
1261                   pattern: 'packer\/provision\/.*\.bat'
1262                 - compare-type: REG_EXP
1263                   pattern: 'packer\/provision\/.*\.ps1'
1264                 - compare-type: REG_EXP
1265                   pattern: 'packer\/provision\/{templates}\.yaml'
1266                 - compare-type: REG_EXP
1267                   pattern: 'packer\/provision\/local-{templates}\.yaml'
1268                 - compare-type: REG_EXP
1269                   pattern: 'packer\/templates\/{templates}\.json'
1270                 - compare-type: REG_EXP
1271                   pattern: 'packer\/vars\/{platforms}\.json'
1272
1273 - job-template:
1274     name: '{project-name}-packer-merge-{platforms}-{templates}'
1275     id: github-packer-merge
1276     <<: *lf_packer_common
1277     # yamllint disable-line rule:key-duplicates
1278     <<: *lf_packer_merge
1279
1280     #####################
1281     # Job Configuration #
1282     #####################
1283
1284     properties:
1285       - lf-infra-properties:
1286           project: '{project}'
1287           build-days-to-keep: 7
1288       - github:
1289           url: '{github-url}/{github-org}/{project}'
1290
1291     scm:
1292       - lf-infra-github-scm:
1293           url: '{git-clone-url}{github-org}/{project}'
1294           refspec: ''
1295           branch: 'refs/heads/{branch}'
1296           submodule-recursive: '{submodule-recursive}'
1297           choosing-strategy: default
1298           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1299
1300     triggers:
1301       - timed: '{obj:cron}'
1302       - github
1303       - pollscm:
1304           cron: ''
1305
1306       - github-pull-request:
1307           trigger-phrase: '^remerge$'
1308           only-trigger-phrase: true
1309           status-context: 'Packer {platforms}-{templates} Merge'
1310           permit-all: true
1311           github-hooks: true
1312           org-list:
1313             - '{github-org}'
1314           white-list: '{obj:github_pr_whitelist}'
1315           admin-list: '{obj:github_pr_admin_list}'
1316           # included-regions MUST match Gerrit Trigger file-paths
1317           included-regions:
1318             - 'packer\/provision\/.*\.sh'
1319             - 'packer\/provision\/.*\.bat'
1320             - 'packer\/provision\/.*\.ps1'
1321             - 'packer\/provision\/{templates}\.yaml'
1322             - 'packer\/provision\/local-{templates}\.yaml'
1323             - 'packer\/templates\/{templates}\.json'
1324             - 'packer\/vars\/{platforms}\.json'
1325           white-list-target-branches:
1326             - '{branch}'
1327
1328 #################
1329 # Packer Verify #
1330 #################
1331
1332 - lf_packer_verify: &lf_packer_verify
1333     name: lf-packer-verify
1334
1335     ######################
1336     # Default parameters #
1337     ######################
1338
1339     build-timeout: 10
1340
1341     gerrit_verify_triggers:
1342       - patchset-created-event:
1343           exclude-drafts: true
1344           exclude-trivial-rebase: false
1345           exclude-no-code-change: false
1346       - draft-published-event
1347       - comment-added-contains-event:
1348           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
1349
1350     gerrit_trigger_file_paths:
1351       - compare-type: REG_EXP
1352         pattern: 'packer\/.*'
1353
1354     # github_included_regions MUST match gerrit_trigger_file_paths
1355     github_included_regions:
1356       - 'packer\/.*'
1357
1358     #####################
1359     # Job Configuration #
1360     #####################
1361
1362     concurrent: true
1363
1364     builders:
1365       - lf-infra-packer-validate:
1366           packer-cloud-settings: '{packer-cloud-settings}'
1367           packer-version: '{packer-version}'
1368
1369 - job-template:
1370     name: '{project-name}-packer-verify'
1371     id: gerrit-packer-verify
1372     <<: *lf_packer_common
1373     # yamllint disable-line rule:key-duplicates
1374     <<: *lf_packer_verify
1375
1376     ######################
1377     # Default parameters #
1378     ######################
1379
1380     git-url: '$GIT_URL/$GERRIT_PROJECT'
1381
1382     #####################
1383     # Job Configuration #
1384     #####################
1385
1386     scm:
1387       - lf-infra-gerrit-scm:
1388           git-url: '{git-url}'
1389           refspec: '$GERRIT_REFSPEC'
1390           branch: '$GERRIT_BRANCH'
1391           submodule-recursive: '{submodule-recursive}'
1392           choosing-strategy: gerrit
1393           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1394
1395     triggers:
1396       - gerrit:
1397           server-name: '{gerrit-server-name}'
1398           trigger-on: '{obj:gerrit_verify_triggers}'
1399           projects:
1400             - project-compare-type: ANT
1401               project-pattern: '{project}'
1402               branches:
1403                 - branch-compare-type: ANT
1404                   branch-pattern: '**/{branch}'
1405               file-paths: '{obj:gerrit_trigger_file_paths}'
1406
1407 - job-template:
1408     name: '{project-name}-packer-verify'
1409     id: github-packer-verify
1410     <<: *lf_packer_common
1411     # yamllint disable-line rule:key-duplicates
1412     <<: *lf_packer_verify
1413
1414     #####################
1415     # Job Configuration #
1416     #####################
1417
1418     properties:
1419       - lf-infra-properties:
1420           project: '{project}'
1421           build-days-to-keep: 7
1422       - github:
1423           url: '{github-url}/{github-org}/{project}'
1424
1425     scm:
1426       - lf-infra-github-scm:
1427           url: '{git-clone-url}{github-org}/{project}'
1428           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1429           branch: '$sha1'
1430           submodule-recursive: '{submodule-recursive}'
1431           choosing-strategy: default
1432           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1433
1434     triggers:
1435       - github-pull-request:
1436           trigger-phrase: '^(recheck|reverify)$'
1437           only-trigger-phrase: false
1438           status-context: 'Packer Verify'
1439           permit-all: true
1440           github-hooks: true
1441           included-regions: '{obj:github_included_regions}'
1442           white-list-target-branches:
1443             - '{branch}'