GIT_URL variable corruption in script
[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}-packer-jobs'
22
23     packer-version: 1.1.3
24
25     jobs:
26       - gerrit-packer-merge
27       - gerrit-packer-verify
28
29
30 - job-group:
31     name: '{project-name}-github-packer-jobs'
32
33     packer-version: 1.1.3
34
35     jobs:
36       - github-packer-merge
37       - github-packer-verify
38
39 ####################
40 # COMMON FUNCTIONS #
41 ####################
42
43 - builder:
44     name: lf-infra-jjbini
45     builders:
46       - config-file-provider:
47           files:
48             - file-id: jjbini
49               target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
50
51 - builder:
52     name: lf-infra-jjbini-sandbox
53     # TODO: Consolidate this into jjbini when JJB2.0 is available.
54     builders:
55       - config-file-provider:
56           files:
57             - file-id: jjbini-sandbox
58               target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
59
60 - lf_packer_file_paths: &lf_packer_file_paths
61     name: lf-packer-file-paths
62     file-paths:
63       - compare-type: ANT
64         pattern: 'packer/vars/{platforms}.json'
65       - compare-type: ANT
66         pattern: 'packer/templates/{templates}.json'
67       - compare-type: ANT
68         pattern: 'packer/provision/*.sh'
69       - compare-type: ANT
70         pattern: 'packer/provision/{templates}.yaml'
71       - compare-type: ANT
72         pattern: 'packer/provision/local-{templates}.yaml'
73       - compare-type: ANT
74         pattern: 'packer/provision/lib/**'
75
76 - lf_packer: &lf_packer_common
77     name: lf-packer-common
78     # Provide configuration common in packer jobs.
79
80     ######################
81     # Default parameters #
82     ######################
83
84     branch: master
85     build-timeout: 90
86     stream: master
87     submodule-recursive: true
88     packer-cloud-settings: packer-cloud-env
89
90     #####################
91     # Job Configuration #
92     #####################
93
94     project-type: freestyle
95     node: '{build-node}'
96
97     properties:
98       - lf-infra-properties:
99           project: '{project}'
100           build-days-to-keep: 7
101
102     parameters:
103       - lf-infra-parameters:
104           project: '{project}'
105           stream: '{stream}'
106           branch: '{branch}'
107           lftools-version: '{lftools-version}'
108       - lf-infra-packer-parameters:
109           packer-version: '{packer-version}'
110
111     wrappers:
112       - lf-infra-wrappers:
113           build-timeout: '{build-timeout}'
114           jenkins-ssh-credential: '{jenkins-ssh-credential}'
115
116     publishers:
117       - lf-infra-publish
118
119 - parameter:
120     name: lf-infra-jjb-parameters
121     parameters:
122       - string:
123           name: JJB_VERSION
124           default: '{jjb-version}'
125           description: Jenkins Job Builder version to download and install.
126
127 - parameter:
128     name: lf-infra-packer-parameters
129     parameters:
130       - string:
131           name: PACKER_VERSION
132           default: '{packer-version}'
133           description: Packer version to download and install.
134
135 - lf_jjb_common: &lf_jjb_common
136     name: lf-jjb-common
137
138     ######################
139     # Default parameters #
140     ######################
141
142     branch: master
143     build-timeout: 10
144     jjb-version: 1.6.2
145     stream: master
146     submodule-recursive: true
147
148     gerrit_trigger_file_paths:
149       - compare-type: ANT
150         pattern: '**/*.sh'
151       - compare-type: ANT
152         pattern: '**/*.yaml'
153       - compare-type: ANT
154         pattern: '**/global-jjb'
155
156     #####################
157     # Job Configuration #
158     #####################
159
160     project-type: freestyle
161     node: '{build-node}'
162
163     properties:
164       - lf-infra-properties:
165           project: '{project}'
166           build-days-to-keep: 7
167
168     parameters:
169       - lf-infra-parameters:
170           project: '{project}'
171           stream: '{stream}'
172           branch: '{branch}'
173           lftools-version: '{lftools-version}'
174       - lf-infra-jjb-parameters:
175           jjb-version: '{jjb-version}'
176
177     wrappers:
178       - lf-infra-wrappers:
179           build-timeout: '{build-timeout}'
180           jenkins-ssh-credential: '{jenkins-ssh-credential}'
181
182     publishers:
183       - lf-infra-publish
184
185 ######################
186 # Gerrit Branch Lock #
187 ######################
188
189 - job-template:
190     name: '{project-name}-gerrit-branch-lock-{stream}'
191     id: gerrit-branch-lock
192
193     ######################
194     # Default parameters #
195     ######################
196
197     branch: master
198     git-url: '$GIT_URL/$GERRIT_PROJECT'
199     stream: master
200     gerrit_merge_triggers:
201       - comment-added-contains-event:
202           comment-contains-value: (un)?lock branch$
203
204     #####################
205     # Job Configuration #
206     #####################
207
208     project-type: freestyle
209     node: '{build-node}'
210
211     properties:
212       - lf-infra-properties:
213           project: '{project}'
214           build-days-to-keep: 1
215
216     parameters:
217       - lf-infra-parameters:
218           project: '{project}'
219           stream: '{stream}'
220           branch: '{branch}'
221           lftools-version: '{lftools-version}'
222
223     wrappers:
224       - lf-infra-wrappers:
225           build-timeout: 5
226           jenkins-ssh-credential: '{jenkins-ssh-credential}'
227
228     scm:
229       - lf-infra-gerrit-scm:
230           git-url: '{git-url}'
231           refspec: ''
232           branch: '{branch}'
233           submodule-recursive: false
234           choosing-strategy: default
235           jenkins-ssh-credential: '{jenkins-ssh-credential}'
236
237     triggers:
238       - gerrit:
239           server-name: '{gerrit-server-name}'
240           trigger-on: '{obj:gerrit_merge_triggers}'
241           projects:
242             - project-compare-type: ANT
243               project-pattern: '{project}'
244               branches:
245                 - branch-compare-type: ANT
246                   branch-pattern: '**/{branch}'
247
248     builders:
249       - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
250
251
252     publishers:
253       - lf-infra-publish
254
255 ##########################################
256 # Jenkins Configuration Management Merge #
257 ##########################################
258
259 - builder:
260     name: lf-jenkins-cfg-global-vars
261     builders:
262       - lf-infra-jjbini
263       - inject:
264           properties-content: 'jenkins_silos={jenkins-silos}'
265       - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
266       - shell: rm "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
267
268 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
269     name: lf-jenkins-cfg-merge
270
271     ######################
272     # Default parameters #
273     ######################
274
275     branch: master
276     git-url: '$GIT_URL/$GERRIT_PROJECT'
277     jenkins-silos: production sandbox
278
279     #####################
280     # Job Configuration #
281     #####################
282
283     project-type: freestyle
284     node: '{build-node}'
285     concurrent: false
286
287     properties:
288       - lf-infra-properties:
289           project: '{project}'
290           build-days-to-keep: 1
291
292     parameters:
293       - lf-infra-parameters:
294           project: '{project}'
295           stream: ''
296           branch: master
297           lftools-version: '{lftools-version}'
298
299     wrappers:
300       - lf-infra-wrappers:
301           build-timeout: 10
302           jenkins-ssh-credential: '{jenkins-ssh-credential}'
303
304     builders:
305       - shell: !include-raw-escape:
306           - ../shell/lftools-install.sh
307       - lf-jenkins-cfg-global-vars:
308           jenkins-silos: '{jenkins-silos}'
309
310     publishers:
311       - lf-infra-publish
312
313 - job-template:
314     name: '{project-name}-jenkins-cfg-merge'
315     id: gerrit-jenkins-cfg-merge
316     <<: *lf_jenkins_cfg_merge
317
318     scm:
319       - lf-infra-gerrit-scm:
320           git-url: '{git-url}'
321           refspec: 'refs/heads/{branch}'
322           branch: '{branch}'
323           submodule-recursive: true
324           choosing-strategy: default
325           jenkins-ssh-credential: '{jenkins-ssh-credential}'
326
327 - job-template:
328     name: '{project-name}-jenkins-cfg-merge'
329     id: github-jenkins-cfg-merge
330     <<: *lf_jenkins_cfg_merge
331
332     properties:
333       - github:
334           url: '{git-url}/{github-org}/{project}'
335
336     scm:
337       - lf-infra-github-scm:
338           url: '{git-clone-url}{github-org}/{project}'
339           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
340           branch: '$sha1'
341           submodule-recursive: true
342           choosing-strategy: default
343           jenkins-ssh-credential: '{jenkins-ssh-credential}'
344
345
346 ##################
347 # JJB DEPLOY JOB #
348 ##################
349
350 - lf_jjb_deploy_job: &lf_jjb_deploy_job
351     name: lf-jjb-deploy-job
352
353     ######################
354     # Default parameters #
355     ######################
356
357     branch: master
358     git-url: '$GIT_URL/$GERRIT_PROJECT'
359     stream: master
360     gerrit_jjb_deploy_job_triggers:
361       - comment-added-contains-event:
362           comment-contains-value: 'jjb-deploy[:]* (?!\*+$).+$'
363
364     #####################
365     # Job Configuration #
366     #####################
367
368     project-type: freestyle
369     node: '{build-node}'
370     concurrent: true
371
372     properties:
373       - lf-infra-properties:
374           project: '{project}'
375           build-days-to-keep: 1
376
377     parameters:
378       - lf-infra-parameters:
379           project: '{project}'
380           stream: '{stream}'
381           branch: '{branch}'
382           lftools-version: '{lftools-version}'
383
384     wrappers:
385       - lf-infra-wrappers:
386           build-timeout: 5
387           jenkins-ssh-credential: '{jenkins-ssh-credential}'
388
389     builders:
390       - lf-pip-install:
391           pip-packages: jenkins-job-builder
392       - lf-infra-jjbini-sandbox
393       - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
394
395     publishers:
396       - lf-infra-publish
397
398 - job-template:
399     name: '{project-name}-jjb-deploy-job'
400     id: gerrit-jjb-deploy-job
401     <<: *lf_jjb_deploy_job
402
403     scm:
404       - lf-infra-gerrit-scm:
405           git-url: '{git-url}'
406           refspec: 'refs/heads/{branch}'
407           branch: '{branch}'
408           submodule-recursive: true
409           choosing-strategy: default
410           jenkins-ssh-credential: '{jenkins-ssh-credential}'
411
412     triggers:
413       - gerrit:
414           server-name: '{gerrit-server-name}'
415           trigger-on: '{obj:gerrit_jjb_deploy_job_triggers}'
416           projects:
417             - project-compare-type: ANT
418               project-pattern: '{project}'
419               branches:
420                 - branch-compare-type: ANT
421                   branch-pattern: '**/{branch}'
422
423 - job-template:
424     name: '{project-name}-jjb-deploy-job'
425     id: github-jjb-deploy-job
426     <<: *lf_jjb_deploy_job
427
428     properties:
429       - github:
430           url: '{git-url}/{github-org}/{project}'
431
432     scm:
433       - lf-infra-github-scm:
434           url: '{git-clone-url}{github-org}/{project}'
435           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
436           branch: '$sha1'
437           submodule-recursive: true
438           choosing-strategy: default
439           jenkins-ssh-credential: '{jenkins-ssh-credential}'
440
441     triggers:
442       - lf-infra-github-pr-trigger:
443           trigger-phrase: '^jjb-deploy (?!\*+$).+$'
444           only-trigger-phrase: true
445           status-context: 'JJB Deploy Job'
446           permit-all: true
447           github-hooks: true
448           github-org: ''
449           github_pr_whitelist:
450             - ''
451           github_pr_admin_list:
452             - ''
453
454 #############
455 # JJB Merge #
456 #############
457
458 - lf_jjb_merge: &lf_jjb_merge
459     name: lf-jjb-merge
460
461     ######################
462     # Default parameters #
463     ######################
464
465     gerrit_merge_triggers:
466       - change-merged-event
467       - comment-added-contains-event:
468           comment-contains-value: remerge$
469
470     #####################
471     # Job Configuration #
472     #####################
473
474     builders:
475       - lf-infra-jjbini
476       - shell: !include-raw-escape:
477           - ../shell/jjb-install.sh
478           - ../shell/jjb-merge-job.sh
479
480 - job-template:
481     name: '{project-name}-jjb-merge'
482     id: gerrit-jjb-merge
483     <<: *lf_jjb_common
484     # yamllint disable-line rule:key-duplicates
485     <<: *lf_jjb_merge
486
487     git-url: '$GIT_URL/$GERRIT_PROJECT'
488
489     scm:
490       - lf-infra-gerrit-scm:
491           git-url: '{git-url}'
492           refspec: ''
493           branch: '{branch}'
494           submodule-recursive: '{submodule-recursive}'
495           choosing-strategy: default
496           jenkins-ssh-credential: '{jenkins-ssh-credential}'
497
498     triggers:
499       - gerrit:
500           server-name: '{gerrit-server-name}'
501           trigger-on: '{obj:gerrit_merge_triggers}'
502           projects:
503             - project-compare-type: ANT
504               project-pattern: '{project}'
505               branches:
506                 - branch-compare-type: ANT
507                   branch-pattern: '**/{branch}'
508               file-paths: '{obj:gerrit_trigger_file_paths}'
509
510 - job-template:
511     name: '{project-name}-jjb-merge'
512     id: github-jjb-merge
513     <<: *lf_jjb_common
514     # yamllint disable-line rule:key-duplicates
515     <<: *lf_jjb_merge
516
517     properties:
518       - github:
519           url: '{git-url}/{github-org}/{project}'
520
521     scm:
522       - lf-infra-github-scm:
523           url: '{git-clone-url}{github-org}/{project}'
524           refspec: ''
525           branch: 'refs/heads/{branch}'
526           submodule-recursive: '{submodule-recursive}'
527           choosing-strategy: default
528           jenkins-ssh-credential: '{jenkins-ssh-credential}'
529
530     triggers:
531       - github
532       - pollscm:
533           cron: ''
534       - lf-infra-github-pr-trigger:
535           trigger-phrase: '^remerge$'
536           only-trigger-phrase: true
537           status-context: 'JJB Merge'
538           permit-all: false
539           github-hooks: true
540           github-org: '{github-org}'
541           github_pr_whitelist: '{obj:github_pr_whitelist}'
542           github_pr_admin_list: '{obj:github_pr_admin_list}'
543
544 ##############
545 # JJB Verify #
546 ##############
547
548 - lf_jjb_verify: &lf_jjb_verify
549     name: lf-jjb-verify
550
551     ######################
552     # Default parameters #
553     ######################
554
555     gerrit_verify_triggers:
556       - patchset-created-event:
557           exclude-drafts: true
558           exclude-trivial-rebase: false
559           exclude-no-code-change: false
560       - draft-published-event
561       - comment-added-contains-event:
562           comment-contains-value: recheck$
563
564     #####################
565     # Job Configuration #
566     #####################
567
568     concurrent: true
569
570     builders:
571       - lf-infra-jjbini
572       - shell: !include-raw-escape:
573           - ../shell/git-validate-jira-urls.sh
574           - ../shell/jjb-install.sh
575           - ../shell/jjb-verify-job.sh
576           - ../shell/jjb-check-unicode.sh
577       - lf-infra-gpg-verify-git-signature
578
579 - job-template:
580     name: '{project-name}-jjb-verify'
581     id: gerrit-jjb-verify
582     <<: *lf_jjb_common
583     # yamllint disable-line rule:key-duplicates
584     <<: *lf_jjb_verify
585
586     git-url: '$GIT_URL/$GERRIT_PROJECT'
587
588     scm:
589       - lf-infra-gerrit-scm:
590           git-url: '{git-url}'
591           refspec: '$GERRIT_REFSPEC'
592           branch: '$GERRIT_BRANCH'
593           submodule-recursive: '{submodule-recursive}'
594           choosing-strategy: gerrit
595           jenkins-ssh-credential: '{jenkins-ssh-credential}'
596
597     triggers:
598       - gerrit:
599           server-name: '{gerrit-server-name}'
600           trigger-on: '{obj:gerrit_verify_triggers}'
601           projects:
602             - project-compare-type: ANT
603               project-pattern: '{project}'
604               branches:
605                 - branch-compare-type: ANT
606                   branch-pattern: '**/{branch}'
607               file-paths: '{obj:gerrit_trigger_file_paths}'
608
609 - job-template:
610     name: '{project-name}-jjb-verify'
611     id: github-jjb-verify
612     <<: *lf_jjb_common
613     # yamllint disable-line rule:key-duplicates
614     <<: *lf_jjb_verify
615
616     properties:
617       - github:
618           url: '{git-url}/{github-org}/{project}'
619
620     scm:
621       - lf-infra-github-scm:
622           url: '{git-clone-url}{github-org}/{project}'
623           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
624           branch: '$sha1'
625           submodule-recursive: '{submodule-recursive}'
626           choosing-strategy: default
627           jenkins-ssh-credential: '{jenkins-ssh-credential}'
628
629     triggers:
630       - lf-infra-github-pr-trigger:
631           trigger-phrase: '^recheck$'
632           only-trigger-phrase: false
633           status-context: 'JJB Verify'
634           permit-all: true
635           github-hooks: true
636           github-org: ''
637           github_pr_whitelist:
638             - ''
639           github_pr_admin_list:
640             - ''
641
642 ################
643 # Packer Merge #
644 ################
645
646 - lf_packer_merge: &lf_packer_merge
647     name: lf-packer-merge
648
649     ######################
650     # Default parameters #
651     ######################
652
653     gerrit_merge_triggers:
654       - change-merged-event
655       - comment-added-contains-event:
656           comment-contains-value: remerge$
657
658     #####################
659     # Job Configuration #
660     #####################
661
662     builders:
663       - lf-infra-packer-validate:
664           packer-cloud-settings: '{packer-cloud-settings}'
665           packer-version: '{packer-version}'
666       - lf-infra-packer-build:
667           packer-cloud-settings: '{packer-cloud-settings}'
668           packer-version: '{packer-version}'
669           platform: '{platforms}'
670           template: '{templates}'
671
672 - job-template:
673     name: '{project-name}-packer-merge-{platforms}-{templates}'
674     id: gerrit-packer-merge
675     <<: *lf_packer_common
676     # yamllint disable-line rule:key-duplicates
677     <<: *lf_packer_merge
678
679     git-url: '$GIT_URL/$GERRIT_PROJECT'
680
681     scm:
682       - lf-infra-gerrit-scm:
683           git-url: '{git-url}'
684           refspec: '$GERRIT_REFSPEC'
685           branch: '$GERRIT_BRANCH'
686           submodule-recursive: '{submodule-recursive}'
687           choosing-strategy: gerrit
688           jenkins-ssh-credential: '{jenkins-ssh-credential}'
689
690     triggers:
691       - timed: '00 10 1 * *'
692       - gerrit:
693           server-name: '{gerrit-server-name}'
694           trigger-on: '{obj:gerrit_merge_triggers}'
695           projects:
696             - project-compare-type: ANT
697               project-pattern: '{project}'
698               branches:
699                 - branch-compare-type: ANT
700                   branch-pattern: '**/{branch}'
701               <<: *lf_packer_file_paths
702
703 - job-template:
704     name: '{project-name}-packer-merge-{platforms}-{templates}'
705     id: github-packer-merge
706     <<: *lf_packer_common
707     # yamllint disable-line rule:key-duplicates
708     <<: *lf_packer_merge
709
710     properties:
711       - github:
712           url: '{git-url}/{github-org}/{project}'
713
714     scm:
715       - lf-infra-github-scm:
716           url: '{git-clone-url}{github-org}/{project}'
717           refspec: ''
718           branch: 'refs/heads/{branch}'
719           submodule-recursive: '{submodule-recursive}'
720           choosing-strategy: default
721           jenkins-ssh-credential: '{jenkins-ssh-credential}'
722
723     triggers:
724       - timed: '00 10 1 * *'
725       - github
726       - pollscm:
727           cron: ''
728       - lf-infra-github-pr-trigger:
729           trigger-phrase: '^remerge$'
730           only-trigger-phrase: true
731           status-context: 'Packer {platforms}-${templates} Merge'
732           permit-all: false
733           github-hooks: true
734           github-org: '{github-org}'
735           github_pr_whitelist: '{obj:github_pr_whitelist}'
736           github_pr_admin_list: '{obj:github_pr_admin_list}'
737
738 #################
739 # Packer Verify #
740 #################
741
742 - lf_packer_verify: &lf_packer_verify
743     name: lf-packer-verify
744
745     ######################
746     # Default parameters #
747     ######################
748
749     build-timeout: 10
750
751     gerrit_verify_triggers:
752       - patchset-created-event:
753           exclude-drafts: true
754           exclude-trivial-rebase: false
755           exclude-no-code-change: false
756       - draft-published-event
757       - comment-added-contains-event:
758           comment-contains-value: recheck$
759
760     gerrit_trigger_file_paths:
761       - compare-type: ANT
762         pattern: 'packer/vars/**.json'
763       - compare-type: ANT
764         pattern: 'packer/templates/**.json'
765       - compare-type: ANT
766         pattern: 'packer/provision/**.sh'
767       - compare-type: ANT
768         pattern: 'packer/provision/lib/**'
769
770     #####################
771     # Job Configuration #
772     #####################
773
774     concurrent: true
775
776     builders:
777       - lf-infra-packer-validate:
778           packer-cloud-settings: '{packer-cloud-settings}'
779           packer-version: '{packer-version}'
780
781 - job-template:
782     name: '{project-name}-packer-verify'
783     id: gerrit-packer-verify
784     <<: *lf_packer_common
785     # yamllint disable-line rule:key-duplicates
786     <<: *lf_packer_verify
787
788     git-url: '$GIT_URL/$GERRIT_PROJECT'
789
790     scm:
791       - lf-infra-gerrit-scm:
792           git-url: '{git-url}'
793           refspec: '$GERRIT_REFSPEC'
794           branch: '$GERRIT_BRANCH'
795           submodule-recursive: '{submodule-recursive}'
796           choosing-strategy: gerrit
797           jenkins-ssh-credential: '{jenkins-ssh-credential}'
798
799     triggers:
800       - gerrit:
801           server-name: '{gerrit-server-name}'
802           trigger-on: '{obj:gerrit_verify_triggers}'
803           projects:
804             - project-compare-type: ANT
805               project-pattern: '{project}'
806               branches:
807                 - branch-compare-type: ANT
808                   branch-pattern: '**/{branch}'
809               file-paths: '{obj:gerrit_trigger_file_paths}'
810
811 - job-template:
812     name: '{project-name}-packer-verify'
813     id: github-packer-verify
814     <<: *lf_packer_common
815     # yamllint disable-line rule:key-duplicates
816     <<: *lf_packer_verify
817
818     properties:
819       - github:
820           url: '{git-url}/{github-org}/{project}'
821
822     scm:
823       - lf-infra-github-scm:
824           url: '{git-clone-url}{github-org}/{project}'
825           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
826           branch: '$sha1'
827           submodule-recursive: '{submodule-recursive}'
828           choosing-strategy: default
829           jenkins-ssh-credential: '{jenkins-ssh-credential}'
830
831     triggers:
832       - lf-infra-github-pr-trigger:
833           trigger-phrase: '^recheck$'
834           only-trigger-phrase: false
835           status-context: 'Packer Verify'
836           permit-all: true
837           github-hooks: true
838           github-org: ''
839           github_pr_whitelist:
840             - ''
841           github_pr_admin_list:
842             - ''