Run packer against a specific builder
[releng/global-jjb.git] / jjb / lf-ci-jobs.yaml
1 ---
2 ####################
3 # COMMON FUNCTIONS #
4 ####################
5
6 - builder:
7     name: lf-infra-jjbini
8     builders:
9       - config-file-provider:
10           files:
11             - file-id: jjbini
12               target: "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
13
14 - lf_packer: &lf_packer_common
15     name: lf-packer-common
16     # Provide configuration common in packer jobs.
17
18     ######################
19     # Default parameters #
20     ######################
21
22     branch: master
23     build-timeout: 90
24     cron: "@monthly"
25     disable-job: false
26     github-url: "https://github.com"
27     stream: master
28     submodule-recursive: true
29     submodule-timeout: 10
30     submodule-disable: false
31     packer-builder: openstack
32     packer-cloud-settings: packer-cloud-env
33     packer-version: 1.4.2
34
35     #####################
36     # Job Configuration #
37     #####################
38
39     project-type: freestyle
40     node: "{build-node}"
41     disabled: "{disable-job}"
42
43     properties:
44       - lf-infra-properties:
45           project: "{project}"
46           build-days-to-keep: 7
47
48     parameters:
49       - lf-infra-parameters:
50           project: "{project}"
51           stream: "{stream}"
52           branch: "{branch}"
53       - lf-packer-parameters:
54           packer-version: "{packer-version}"
55
56     wrappers:
57       - lf-infra-wrappers:
58           build-timeout: "{build-timeout}"
59           jenkins-ssh-credential: "{jenkins-ssh-credential}"
60
61     publishers:
62       - lf-infra-publish
63
64 - parameter:
65     name: lf-infra-jjb-parameters
66     parameters:
67       - string:
68           name: JJB_VERSION
69           default: "{jjb-version}"
70           description: Jenkins Job Builder version to download and install.
71       - string:
72           name: XDG_CACHE_HOME
73           default: "{jjb-cache}"
74           description: Jenkins Job Builder cache location.
75
76 - parameter:
77     name: lf-packer-parameters
78     parameters:
79       - string:
80           name: PACKER_VERSION
81           default: "{packer-version}"
82           description: Packer version to download and install.
83
84 - parameter:
85     name: lf-puppet-parameters
86     parameters:
87       - string:
88           name: PUPPET_LINT_VERSION
89           default: "{puppet-lint-version}"
90           description: Puppet-lint version to download and install.
91
92 - lf_jjb_common: &lf_jjb_common
93     name: lf-jjb-common
94
95     ######################
96     # Default parameters #
97     ######################
98
99     branch: master
100     build-timeout: 10
101     disable-job: false
102     github-url: "https://github.com"
103     jjb-cache: "$HOME/.cache/jenkins_jobs"
104     jjb-version: 2.8.0
105     stream: master
106     submodule-recursive: true
107     submodule-timeout: 10
108     submodule-disable: false
109     throttle_categories: []
110     throttle-enabled: false
111     throttle-max-per-node: 1
112     throttle-max-total: 0
113     throttle-option: "project"
114
115     gerrit_trigger_file_paths:
116       - compare-type: REG_EXP
117         pattern: "jjb/.*"
118       - compare-type: REG_EXP
119         pattern: "global-jjb"
120       - compare-type: REG_EXP
121         pattern: "shell/.*"
122
123     # github_included_regions MUST match gerrit_trigger_file_paths
124     github_included_regions:
125       - "jjb/.*"
126       - "global-jjb"
127       - "shell/.*"
128
129     #####################
130     # Job Configuration #
131     #####################
132
133     project-type: freestyle
134     node: "{build-node}"
135     disabled: "{disable-job}"
136
137     properties:
138       - lf-infra-properties:
139           project: "{project}"
140           build-days-to-keep: 7
141       - throttle:
142           categories: "{obj:throttle_categories}"
143           enabled: "{throttle-enabled}"
144           max-per-node: "{throttle-max-per-node}"
145           max-total: "{throttle-max-total}"
146           option: "{throttle-option}"
147
148     parameters:
149       - lf-infra-parameters:
150           project: "{project}"
151           stream: "{stream}"
152           branch: "{branch}"
153       - lf-infra-jjb-parameters:
154           jjb-cache: "{jjb-cache}"
155           jjb-version: "{jjb-version}"
156
157     wrappers:
158       - lf-infra-wrappers:
159           build-timeout: "{build-timeout}"
160           jenkins-ssh-credential: "{jenkins-ssh-credential}"
161
162     publishers:
163       - lf-infra-publish
164
165 ######################
166 # Gerrit Branch Lock #
167 ######################
168
169 - job-template:
170     name: "{project-name}-gerrit-branch-lock"
171     id: gerrit-branch-lock
172
173     ######################
174     # Default parameters #
175     ######################
176
177     branch: "**"
178     disable-job: false
179     git-url: "$GIT_URL/$GERRIT_PROJECT"
180     submodule-timeout: 10
181     submodule-disable: true
182     gerrit_merge_triggers:
183       - comment-added-contains-event:
184           comment-contains-value: (un)?lock branch$
185
186     #####################
187     # Job Configuration #
188     #####################
189
190     project-type: freestyle
191     node: "{build-node}"
192     disabled: "{disable-job}"
193
194     properties:
195       - lf-infra-properties:
196           project: "{project}"
197           build-days-to-keep: 1
198
199     parameters:
200       - lf-infra-parameters:
201           project: "{project}"
202           stream: ""
203           branch: "{branch}"
204
205     wrappers:
206       - lf-infra-wrappers:
207           build-timeout: 5
208           jenkins-ssh-credential: "{jenkins-ssh-credential}"
209
210     scm:
211       - lf-infra-gerrit-scm:
212           git-url: "{git-url}"
213           refspec: ""
214           branch: "$GERRIT_BRANCH"
215           submodule-recursive: false
216           submodule-timeout: "{submodule-timeout}"
217           submodule-disable: "{submodule-disable}"
218           choosing-strategy: default
219           jenkins-ssh-credential: "{jenkins-ssh-credential}"
220
221     triggers:
222       - gerrit:
223           server-name: "{gerrit-server-name}"
224           trigger-on: "{obj:gerrit_merge_triggers}"
225           projects:
226             - project-compare-type: ANT
227               project-pattern: "**"
228               branches:
229                 - branch-compare-type: ANT
230                   branch-pattern: "**/{branch}"
231           comment-text-parameter-mode: PLAIN
232
233     builders:
234       - shell: !include-raw-escape: ../shell/gerrit-branch-lock.sh
235
236     publishers:
237       - lf-infra-publish
238
239 ##########################################
240 # Jenkins Configuration Management Merge #
241 ##########################################
242
243 - builder:
244     name: lf-jenkins-cfg-clouds
245     builders:
246       - lf-infra-jjbini
247       - inject:
248           properties-content: "jenkins_silos={jenkins-silos}"
249       - shell: !include-raw-escape: ../shell/jenkins-configure-clouds.sh
250       - shell: rm -f "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
251
252 - builder:
253     name: lf-jenkins-cfg-global-vars
254     builders:
255       - lf-infra-jjbini
256       - inject:
257           properties-content: "jenkins_silos={jenkins-silos}"
258       - shell: !include-raw-escape: ../shell/jenkins-configure-global-vars.sh
259       - shell: rm -f "$HOME/.config/jenkins_jobs/jenkins_jobs.ini"
260
261 - lf_jenkins_configuration: &lf_jenkins_cfg_merge
262     name: lf-jenkins-cfg-merge
263
264     ######################
265     # Default parameters #
266     ######################
267
268     branch: master
269     cron: "@daily"
270     disable-job: false
271     git-url: "$GIT_URL/$GERRIT_PROJECT"
272     github-url: "https://github.com"
273     jenkins-silos: production sandbox
274     submodule-timeout: 10
275     submodule-disable: false
276
277     gerrit_merge_triggers:
278       - change-merged-event
279       - comment-added-contains-event:
280           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
281
282     gerrit_trigger_file_paths:
283       - compare-type: REG_EXP
284         pattern: 'jenkins-config\/.*'
285
286     # github_included_regions MUST match gerrit_trigger_file_paths
287     github_included_regions:
288       - 'jenkins-config\/.*'
289
290     #####################
291     # Job Configuration #
292     #####################
293
294     project-type: freestyle
295     node: "{build-node}"
296     concurrent: false
297     disabled: "{disable-job}"
298
299     properties:
300       - lf-infra-properties:
301           project: "{project}"
302           build-days-to-keep: 1
303
304     parameters:
305       - lf-infra-parameters:
306           project: "{project}"
307           stream: ""
308           branch: master
309
310     wrappers:
311       - lf-infra-wrappers:
312           build-timeout: 10
313           jenkins-ssh-credential: "{jenkins-ssh-credential}"
314
315     builders:
316       - lf-infra-pre-build
317       - lf-jenkins-cfg-global-vars:
318           jenkins-silos: "{jenkins-silos}"
319       - lf-jenkins-cfg-clouds:
320           jenkins-silos: "{jenkins-silos}"
321
322     publishers:
323       - lf-infra-publish
324
325 - job-template:
326     name: "{project-name}-jenkins-cfg-merge"
327     id: gerrit-jenkins-cfg-merge
328     <<: *lf_jenkins_cfg_merge
329
330     scm:
331       - lf-infra-gerrit-scm:
332           git-url: "{git-url}"
333           refspec: "refs/heads/{branch}"
334           branch: "{branch}"
335           submodule-recursive: true
336           submodule-timeout: "{submodule-timeout}"
337           submodule-disable: "{submodule-disable}"
338           choosing-strategy: default
339           jenkins-ssh-credential: "{jenkins-ssh-credential}"
340
341     triggers:
342       - timed: "{obj:cron}"
343       - gerrit:
344           server-name: "{gerrit-server-name}"
345           trigger-on: "{obj:gerrit_merge_triggers}"
346           projects:
347             - project-compare-type: ANT
348               project-pattern: "{project}"
349               branches:
350                 - branch-compare-type: ANT
351                   branch-pattern: "**/{branch}"
352               file-paths: "{obj:gerrit_trigger_file_paths}"
353
354 - job-template:
355     name: "{project-name}-jenkins-cfg-merge"
356     id: github-jenkins-cfg-merge
357     <<: *lf_jenkins_cfg_merge
358
359     properties:
360       - lf-infra-properties:
361           project: "{project}"
362           build-days-to-keep: 1
363       - github:
364           url: "{github-url}/{github-org}/{project}"
365
366     scm:
367       - lf-infra-github-scm:
368           url: "{git-clone-url}{github-org}/{project}"
369           refspec: ""
370           branch: "refs/heads/{branch}"
371           submodule-recursive: true
372           submodule-timeout: "{submodule-timeout}"
373           submodule-disable: "{submodule-disable}"
374           choosing-strategy: default
375           jenkins-ssh-credential: "{jenkins-ssh-credential}"
376
377     triggers:
378       - timed: "{obj:cron}"
379       - github
380       - pollscm:
381           cron: ""
382       - github-pull-request:
383           trigger-phrase: "^remerge$"
384           only-trigger-phrase: true
385           status-context: "Jenkins CFG Merge"
386           permit-all: true
387           github-hooks: true
388           org-list:
389             - "{github-org}"
390           white-list: "{obj:github_pr_whitelist}"
391           admin-list: "{obj:github_pr_admin_list}"
392           included-regions: "{obj:github_included_regions}"
393           white-list-target-branches:
394             - "{branch}"
395
396 ###########################################
397 # Jenkins Configuration Management Verify #
398 ###########################################
399
400 - lf_jenkins_configuration: &lf_jenkins_cfg_verify
401     name: lf-jenkins-cfg-verify
402
403     ######################
404     # Default parameters #
405     ######################
406
407     branch: master
408     build-days-to-keep: 7
409     disable-job: false
410     git-url: "$GIT_URL/$GERRIT_PROJECT"
411     github-url: "https://github.com"
412     submodule-timeout: 10
413     submodule-disable: false
414
415     gerrit_verify_triggers:
416       - patchset-created-event:
417           exclude-drafts: true
418           exclude-trivial-rebase: false
419           exclude-no-code-change: false
420       - draft-published-event
421       - comment-added-contains-event:
422           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
423
424     gerrit_trigger_file_paths:
425       - compare-type: REG_EXP
426         pattern: 'jenkins-config\/.*'
427
428     # github_included_regions MUST match gerrit_trigger_file_paths
429     github_included_regions:
430       - 'jenkins-config\/.*'
431
432     #####################
433     # Job Configuration #
434     #####################
435
436     project-type: freestyle
437     node: "{build-node}"
438     concurrent: true
439     disabled: "{disable-job}"
440
441     properties:
442       - lf-infra-properties:
443           project: "{project}"
444           build-days-to-keep: 1
445
446     parameters:
447       - lf-infra-parameters:
448           project: "{project}"
449           stream: ""
450           branch: master
451
452     wrappers:
453       - lf-infra-wrappers:
454           build-timeout: 10
455           jenkins-ssh-credential: "{jenkins-ssh-credential}"
456       - config-file-provider:
457           # Listed after to override openstack-infra-wrappers clouds.yaml
458           # definition
459           files:
460             - file-id: clouds-yaml
461               target: "$HOME/.config/openstack/clouds.yaml"
462             - file-id: npmrc
463               target: "$HOME/.npmrc"
464             - file-id: pipconf
465               target: "$HOME/.config/pip/pip.conf"
466
467     builders:
468       - lf-infra-pre-build
469       - shell: !include-raw-escape: ../shell/jenkins-verify-images.sh
470
471     publishers:
472       - lf-infra-publish
473
474 - job-template:
475     name: "{project-name}-jenkins-cfg-verify"
476     id: gerrit-jenkins-cfg-verify
477     <<: *lf_jenkins_cfg_verify
478
479     scm:
480       - lf-infra-gerrit-scm:
481           git-url: "{git-url}"
482           refspec: "$GERRIT_REFSPEC"
483           branch: "$GERRIT_BRANCH"
484           submodule-recursive: true
485           submodule-timeout: "{submodule-timeout}"
486           submodule-disable: "{submodule-disable}"
487           choosing-strategy: gerrit
488           jenkins-ssh-credential: "{jenkins-ssh-credential}"
489
490     triggers:
491       - gerrit:
492           server-name: "{gerrit-server-name}"
493           trigger-on: "{obj:gerrit_verify_triggers}"
494           projects:
495             - project-compare-type: ANT
496               project-pattern: "{project}"
497               branches:
498                 - branch-compare-type: ANT
499                   branch-pattern: "**/{branch}"
500               file-paths: "{obj:gerrit_trigger_file_paths}"
501
502 - job-template:
503     name: "{project-name}-jenkins-cfg-verify"
504     id: github-jenkins-cfg-verify
505     <<: *lf_jenkins_cfg_verify
506
507     properties:
508       - github:
509           url: "{github-url}/{github-org}/{project}"
510
511     scm:
512       - lf-infra-github-scm:
513           url: "{git-clone-url}{github-org}/{project}"
514           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
515           branch: "$sha1"
516           submodule-recursive: true
517           submodule-timeout: "{submodule-timeout}"
518           submodule-disable: "{submodule-disable}"
519           choosing-strategy: default
520           jenkins-ssh-credential: "{jenkins-ssh-credential}"
521
522     triggers:
523       - github-pull-request:
524           trigger-phrase: "^(recheck|reverify)$"
525           only-trigger-phrase: false
526           status-context: "Jenkins CFG Verify"
527           permit-all: true
528           github-hooks: true
529           included-regions: "{obj:github_included_regions}"
530           white-list-target-branches:
531             - "{branch}"
532
533 ###########################
534 # JENKINS SANDBOX CLEANUP #
535 ###########################
536
537 - lf_jenkins_sandbox_cleanup: &lf_jenkins_sandbox_cleanup
538     name: lf-jenkins-sandbox-cleanup
539
540     ######################
541     # Default parameters #
542     ######################
543
544     build-timeout: 30
545     # Run every Saturday at 08:00 UTC
546     cron: "0 8 * * 6"
547     disable-job: false
548
549     #####################
550     # Job Configuration #
551     #####################
552
553     project-type: freestyle
554     node: "{build-node}"
555     concurrent: true
556     disabled: "{disable-job}"
557
558     parameters:
559       - lf-infra-jjb-parameters:
560           jjb-cache: "{jjb-cache}"
561           jjb-version: "{jjb-version}"
562
563     triggers:
564       - timed: "{obj:cron}"
565
566     builders:
567       - lf-infra-jjbini
568       - shell: !include-raw-escape:
569           - ../shell/jenkins-sandbox-cleanup.sh
570
571 - job-template:
572     name: "{project-name}-jenkins-sandbox-cleanup"
573     id: gerrit-jenkins-sandbox-cleanup
574     <<: *lf_jjb_common
575     # yamllint disable-line rule:key-duplicates
576     <<: *lf_jenkins_sandbox_cleanup
577
578 - job-template:
579     name: "{project-name}-jenkins-sandbox-cleanup"
580     id: github-jenkins-sandbox-cleanup
581     <<: *lf_jjb_common
582     # yamllint disable-line rule:key-duplicates
583     <<: *lf_jenkins_sandbox_cleanup
584
585 ##################
586 # JJB DEPLOY JOB #
587 ##################
588
589 - lf_jjb_deploy_job: &lf_jjb_deploy_job
590     name: lf-jjb-deploy-job
591
592     ######################
593     # Default parameters #
594     ######################
595
596     branch: master
597     disable-job: false
598     # jjb-deploy should always clone $PROJECT regardless of what
599     # $GERRIT_PROJECT triggered the job.
600     git-url: "$GIT_URL/$PROJECT"
601     github-url: "https://github.com"
602     stream: master
603     submodule-timeout: 10
604     submodule-disable: false
605     gerrit_jjb_deploy_job_triggers:
606       - comment-added-contains-event:
607           comment-contains-value: '^Patch Set\s+\d+:\s+(jjb-deploy[:]* (?!\*+$).+$)'
608
609     #####################
610     # Job Configuration #
611     #####################
612
613     project-type: freestyle
614     node: "{build-node}"
615     concurrent: true
616     disabled: "{disable-job}"
617
618     properties:
619       - lf-infra-properties:
620           project: "{project}"
621           build-days-to-keep: 1
622
623     parameters:
624       - lf-infra-parameters:
625           project: "{project}"
626           stream: "{stream}"
627           branch: "{branch}"
628       - lf-infra-jjb-parameters:
629           jjb-cache: "{jjb-cache}"
630           jjb-version: "{jjb-version}"
631
632     wrappers:
633       - lf-infra-wrappers:
634           build-timeout: 5
635           jenkins-ssh-credential: "{jenkins-ssh-credential}"
636
637     builders:
638       - lf-infra-jjbini
639       - shell: !include-raw-escape: ../shell/jjb-deploy-job.sh
640
641     publishers:
642       - lf-infra-publish
643
644 - job-template:
645     name: "{project-name}-jjb-deploy-job"
646     id: gerrit-jjb-deploy-job
647     <<: *lf_jjb_common
648     # yamllint disable-line rule:key-duplicates
649     <<: *lf_jjb_deploy_job
650
651     scm:
652       - lf-infra-gerrit-scm:
653           git-url: "{git-url}"
654           refspec: "refs/heads/{branch}"
655           branch: "{branch}"
656           submodule-recursive: true
657           submodule-timeout: "{submodule-timeout}"
658           submodule-disable: "{submodule-disable}"
659           choosing-strategy: default
660           jenkins-ssh-credential: "{jenkins-ssh-credential}"
661
662     triggers:
663       - gerrit:
664           server-name: "{gerrit-server-name}"
665           trigger-on: "{obj:gerrit_jjb_deploy_job_triggers}"
666           projects:
667             - project-compare-type: ANT
668               project-pattern: "**"
669               branches:
670                 - branch-compare-type: ANT
671                   branch-pattern: "**"
672           skip-vote:
673             success: true
674             failed: true
675             unstable: true
676             notbuilt: true
677           comment-text-parameter-mode: PLAIN
678
679 - job-template:
680     name: "{project-name}-jjb-deploy-job"
681     id: github-jjb-deploy-job
682     <<: *lf_jjb_common
683     # yamllint disable-line rule:key-duplicates
684     <<: *lf_jjb_deploy_job
685
686     properties:
687       - lf-infra-properties:
688           project: "{project}"
689           build-days-to-keep: 1
690       - github:
691           url: "{github-url}/{github-org}/{project}"
692
693     scm:
694       - lf-infra-github-scm:
695           url: "{git-clone-url}{github-org}/{project}"
696           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
697           branch: "$sha1"
698           submodule-recursive: true
699           submodule-timeout: "{submodule-timeout}"
700           submodule-disable: "{submodule-disable}"
701           choosing-strategy: default
702           jenkins-ssh-credential: "{jenkins-ssh-credential}"
703
704     triggers:
705       - github-pull-request:
706           trigger-phrase: '^jjb-deploy (?!\*+$).+$'
707           only-trigger-phrase: true
708           status-context: "JJB Deploy Job"
709           permit-all: true
710           github-hooks: true
711           white-list-target-branches:
712             - "{branch}"
713
714 #############
715 # JJB Merge #
716 #############
717
718 - lf_jjb_merge: &lf_jjb_merge
719     name: lf-jjb-merge
720
721     ######################
722     # Default parameters #
723     ######################
724
725     jjb-workers: 0
726
727     gerrit_merge_triggers:
728       - change-merged-event
729       - comment-added-contains-event:
730           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
731
732     #####################
733     # Job Configuration #
734     #####################
735
736     builders:
737       - lf-infra-pre-build
738       - lf-infra-jjbini
739       - inject:
740           properties-content: JJB_WORKERS={jjb-workers}
741       - shell: !include-raw-escape:
742           - ../shell/jjb-merge-job.sh
743
744 - job-template:
745     name: "{project-name}-jjb-merge"
746     id: gerrit-jjb-merge
747     <<: *lf_jjb_common
748     # yamllint disable-line rule:key-duplicates
749     <<: *lf_jjb_merge
750
751     git-url: "$GIT_URL/$GERRIT_PROJECT"
752
753     scm:
754       - lf-infra-gerrit-scm:
755           git-url: "{git-url}"
756           refspec: ""
757           branch: "{branch}"
758           submodule-recursive: "{submodule-recursive}"
759           submodule-timeout: "{submodule-timeout}"
760           submodule-disable: "{submodule-disable}"
761           choosing-strategy: default
762           jenkins-ssh-credential: "{jenkins-ssh-credential}"
763
764     triggers:
765       - gerrit:
766           server-name: "{gerrit-server-name}"
767           trigger-on: "{obj:gerrit_merge_triggers}"
768           projects:
769             - project-compare-type: ANT
770               project-pattern: "{project}"
771               branches:
772                 - branch-compare-type: ANT
773                   branch-pattern: "**/{branch}"
774               file-paths: "{obj:gerrit_trigger_file_paths}"
775
776 - job-template:
777     name: "{project-name}-jjb-merge"
778     id: github-jjb-merge
779     <<: *lf_jjb_common
780     # yamllint disable-line rule:key-duplicates
781     <<: *lf_jjb_merge
782
783     #####################
784     # Job Configuration #
785     #####################
786
787     properties:
788       - lf-infra-properties:
789           project: "{project}"
790           build-days-to-keep: 7
791       - github:
792           url: "{github-url}/{github-org}/{project}"
793
794     scm:
795       - lf-infra-github-scm:
796           url: "{git-clone-url}{github-org}/{project}"
797           refspec: ""
798           branch: "refs/heads/{branch}"
799           submodule-recursive: "{submodule-recursive}"
800           submodule-timeout: "{submodule-timeout}"
801           submodule-disable: "{submodule-disable}"
802           choosing-strategy: default
803           jenkins-ssh-credential: "{jenkins-ssh-credential}"
804
805     triggers:
806       - github
807       - pollscm:
808           cron: ""
809       - github-pull-request:
810           trigger-phrase: "^remerge$"
811           only-trigger-phrase: true
812           status-context: "JJB Merge"
813           permit-all: true
814           github-hooks: true
815           org-list:
816             - "{github-org}"
817           white-list: "{obj:github_pr_whitelist}"
818           admin-list: "{obj:github_pr_admin_list}"
819           included-regions: "{obj:github_included_regions}"
820           white-list-target-branches:
821             - "{branch}"
822
823 ##############
824 # JJB Verify #
825 ##############
826
827 - lf_jjb_verify: &lf_jjb_verify
828     name: lf-jjb-verify
829
830     ######################
831     # Default parameters #
832     ######################
833
834     build-concurrent: true
835     build-node-label-check: false
836     build-node-label-list: ""
837
838     gerrit_verify_triggers:
839       - patchset-created-event:
840           exclude-drafts: true
841           exclude-trivial-rebase: false
842           exclude-no-code-change: false
843       - draft-published-event
844       - comment-added-contains-event:
845           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
846
847     #####################
848     # Job Configuration #
849     #####################
850
851     concurrent: "{build-concurrent}"
852
853     builders:
854       - lf-infra-pre-build
855       - lf-infra-jjbini
856       - shell: !include-raw-escape:
857           - ../shell/jjb-verify-job.sh
858       - conditional-step:
859           condition-kind: boolean-expression
860           condition-expression: "{build-node-label-check}"
861           on-evaluation-failure: dont-run
862           steps:
863             - inject:
864                 properties-content: EXTERNAL_LABELS="{build-node-label-list}"
865             - shell: !include-raw-escape:
866                 - ../shell/jjb-verify-build-nodes.sh
867       - lf-infra-gpg-verify-git-signature
868
869 - job-template:
870     name: "{project-name}-jjb-verify"
871     id: gerrit-jjb-verify
872     <<: *lf_jjb_common
873     # yamllint disable-line rule:key-duplicates
874     <<: *lf_jjb_verify
875
876     ######################
877     # Default parameters #
878     ######################
879
880     git-url: "$GIT_URL/$GERRIT_PROJECT"
881
882     #####################
883     # Job Configuration #
884     #####################
885
886     scm:
887       - lf-infra-gerrit-scm:
888           git-url: "{git-url}"
889           refspec: "$GERRIT_REFSPEC"
890           branch: "$GERRIT_BRANCH"
891           submodule-recursive: "{submodule-recursive}"
892           submodule-timeout: "{submodule-timeout}"
893           submodule-disable: "{submodule-disable}"
894           choosing-strategy: gerrit
895           jenkins-ssh-credential: "{jenkins-ssh-credential}"
896
897     triggers:
898       - gerrit:
899           server-name: "{gerrit-server-name}"
900           trigger-on: "{obj:gerrit_verify_triggers}"
901           projects:
902             - project-compare-type: ANT
903               project-pattern: "{project}"
904               branches:
905                 - branch-compare-type: ANT
906                   branch-pattern: "**/{branch}"
907               file-paths: "{obj:gerrit_trigger_file_paths}"
908
909 - job-template:
910     name: "{project-name}-jjb-verify"
911     id: github-jjb-verify
912     <<: *lf_jjb_common
913     # yamllint disable-line rule:key-duplicates
914     <<: *lf_jjb_verify
915
916     #####################
917     # Job Configuration #
918     #####################
919
920     properties:
921       - lf-infra-properties:
922           project: "{project}"
923           build-days-to-keep: 7
924       - github:
925           url: "{github-url}/{github-org}/{project}"
926
927     scm:
928       - lf-infra-github-scm:
929           url: "{git-clone-url}{github-org}/{project}"
930           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
931           branch: "$sha1"
932           submodule-recursive: "{submodule-recursive}"
933           submodule-timeout: "{submodule-timeout}"
934           submodule-disable: "{submodule-disable}"
935           choosing-strategy: default
936           jenkins-ssh-credential: "{jenkins-ssh-credential}"
937
938     triggers:
939       - github-pull-request:
940           trigger-phrase: "^(recheck|reverify)$"
941           only-trigger-phrase: false
942           status-context: "JJB Verify"
943           permit-all: true
944           github-hooks: true
945           included-regions: "{obj:github_included_regions}"
946           white-list-target-branches:
947             - "{branch}"
948
949 ############################
950 # JJB Verify Upstream GJJB #
951 ############################
952
953 - lf_jjb_verify: &lf_jjb_verify_upstream_gjjb
954     name: lf-jjb-verify-upstream-gjjb
955
956     #####################
957     # Job Configuration #
958     #####################
959
960     concurrent: true
961
962     builders:
963       - shell: |
964           cd global-jjb
965           git fetch https://gerrit.linuxfoundation.org/infra/releng/global-jjb $GERRIT_REFSPEC
966           git cherry-pick FETCH_HEAD
967       - lf-infra-jjbini
968       - shell: !include-raw-escape:
969           - ../shell/jjb-verify-job.sh
970
971     # All jobs are triggering from the same source
972     triggers:
973       - gerrit:
974           server-name: "lf-releng"
975           trigger-on:
976             - patchset-created-event:
977                 exclude-drafts: true
978                 exclude-trivial-rebase: false
979                 exclude-no-code-change: false
980             - draft-published-event
981             - comment-added-contains-event:
982                 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
983           projects:
984             - project-compare-type: ANT
985               project-pattern: "releng/global-jjb"
986               branches:
987                 - branch-compare-type: ANT
988                   branch-pattern: "**/master"
989           override-votes: true
990           gerrit-build-failed-codereview-value: -1
991           gerrit-build-failed-verified-value: 0
992           gerrit-build-successful-codereview-value: 1
993           gerrit-build-successful-verified-value: 0
994
995 - job-template:
996     name: "{project-name}-jjb-verify-upstream-gjjb"
997     id: gerrit-jjb-verify-upstream-gjjb
998     <<: *lf_jjb_common
999     # yamllint disable-line rule:key-duplicates
1000     <<: *lf_jjb_verify_upstream_gjjb
1001
1002     ######################
1003     # Default parameters #
1004     ######################
1005
1006     git-url: "$GIT_URL/$PROJECT"
1007     submodule-timeout: 10
1008     submodule-disable: false
1009
1010     #####################
1011     # Job Configuration #
1012     #####################
1013
1014     scm:
1015       - lf-infra-gerrit-scm:
1016           git-url: "{git-url}"
1017           refspec: ""
1018           branch: "master"
1019           submodule-recursive: true
1020           submodule-timeout: "{submodule-timeout}"
1021           submodule-disable: "{submodule-disable}"
1022           choosing-strategy: default
1023           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1024
1025 - job-template:
1026     name: "{project-name}-jjb-verify-upstream-gjjb"
1027     id: github-jjb-verify-upstream-gjjb
1028     <<: *lf_jjb_common
1029     # yamllint disable-line rule:key-duplicates
1030     <<: *lf_jjb_verify_upstream_gjjb
1031
1032     ######################
1033     # Default parameters #
1034     ######################
1035
1036     git-url: "$GIT_URL/$PROJECT"
1037     submodule-timeout: 10
1038     submodule-disable: false
1039
1040     #####################
1041     # Job Configuration #
1042     #####################
1043
1044     properties:
1045       - lf-infra-properties:
1046           project: "{project}"
1047           build-days-to-keep: 7
1048       - github:
1049           url: "{github-url}/{github-org}/{project}"
1050
1051     scm:
1052       - lf-infra-github-scm:
1053           url: "{git-clone-url}{github-org}/{project}"
1054           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1055           branch: "$sha1"
1056           submodule-recursive: "{submodule-recursive}"
1057           submodule-timeout: "{submodule-timeout}"
1058           submodule-disable: "{submodule-disable}"
1059           choosing-strategy: default
1060           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1061
1062 #################
1063 # License Check #
1064 #################
1065
1066 - lf_license_check: &lf_license_check
1067     name: lf-license-check
1068
1069     ######################
1070     # Default parameters #
1071     ######################
1072
1073     branch: master
1074     build-days-to-keep: 7
1075     build-timeout: 15
1076     disable-job: false
1077     file-patterns: >
1078       *.go
1079       *.groovy
1080       *.java
1081       *.py
1082       *.sh
1083     git-url: "$GIT_URL/$PROJECT"
1084     github-url: "https://github.com"
1085     lhc-version: 0.2.0
1086     license-exclude-paths: ""
1087     licenses-allowed: Apache-2.0,EPL-1.0,MIT
1088     project-pattern: "**"
1089     spdx-disable: false
1090     stream: master
1091     submodule-timeout: 10
1092     submodule-disable: false
1093
1094     #####################
1095     # Job Configuration #
1096     #####################
1097
1098     project-type: freestyle
1099     node: "{build-node}"
1100     concurrent: true
1101     disabled: "{disable-job}"
1102
1103     properties:
1104       - lf-infra-properties:
1105           build-days-to-keep: "{build-days-to-keep}"
1106
1107     parameters:
1108       - lf-infra-parameters:
1109           project: "{project}"
1110           branch: "{branch}"
1111           stream: "{stream}"
1112
1113     wrappers:
1114       - lf-infra-wrappers:
1115           build-timeout: "{build-timeout}"
1116           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1117
1118     builders:
1119       - lf-license-check:
1120           file-patterns: "{file-patterns}"
1121           spdx-disable: "{spdx-disable}"
1122           lhc-version: "{lhc-version}"
1123           license-exclude-paths: "{license-exclude-paths}"
1124           licenses-allowed: "{licenses-allowed}"
1125
1126     publishers:
1127       - lf-infra-publish
1128
1129 - job-template:
1130     name: "{project-name}-license-check"
1131     id: gerrit-license-check
1132     <<: *lf_license_check
1133
1134     git-url: "$GIT_URL/$GERRIT_PROJECT"
1135
1136     scm:
1137       - lf-infra-gerrit-scm:
1138           git-url: "{git-url}"
1139           refspec: "$GERRIT_REFSPEC"
1140           branch: "$GERRIT_BRANCH"
1141           # Submodules are out of the project's control
1142           submodule-recursive: false
1143           submodule-timeout: "{submodule-timeout}"
1144           submodule-disable: "{submodule-disable}"
1145           choosing-strategy: gerrit
1146           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1147
1148     triggers:
1149       - gerrit:
1150           server-name: "{gerrit-server-name}"
1151           # Trigger should not be overridable as we want to always run
1152           trigger-on:
1153             - patchset-created-event:
1154                 exclude-drafts: false
1155                 exclude-trivial-rebase: false
1156                 exclude-no-code-change: false
1157             - draft-published-event
1158             - comment-added-contains-event:
1159                 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1160           projects:
1161             - project-compare-type: ANT
1162               project-pattern: "{project-pattern}"
1163               branches:
1164                 - branch-compare-type: ANT
1165                   branch-pattern: "**"
1166
1167 - job-template:
1168     name: "{project-name}-license-check"
1169     id: github-license-check
1170     <<: *lf_license_check
1171
1172     properties:
1173       - lf-infra-properties:
1174           build-days-to-keep: "{build-days-to-keep}"
1175       - github:
1176           url: "{github-url}/{github-org}/{project}"
1177
1178     scm:
1179       - lf-infra-github-scm:
1180           url: "{git-clone-url}{github-org}/{project}"
1181           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1182           branch: "$sha1"
1183           # Submodules are out of the project's control
1184           submodule-recursive: false
1185           submodule-timeout: "{submodule-timeout}"
1186           submodule-disable: "{submodule-disable}"
1187           choosing-strategy: default
1188           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1189
1190     triggers:
1191       - github-pull-request:
1192           trigger-phrase: "^recheck$"
1193           only-trigger-phrase: false
1194           status-context: "License Check"
1195           permit-all: true
1196           github-hooks: true
1197           white-list-target-branches:
1198             - "{branch}"
1199
1200 ####################
1201 # Info YAML Verify #
1202 ####################
1203
1204 - lf_info_yaml_verify: &lf_info_yaml_verify
1205     name: lf-info-yaml-verify
1206
1207     ######################
1208     # Default parameters #
1209     ######################
1210
1211     gerrit_verify_triggers:
1212       - patchset-created-event:
1213           exclude-drafts: true
1214           exclude-trivial-rebase: false
1215           exclude-no-code-change: false
1216       - draft-published-event
1217       - comment-added-contains-event:
1218           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1219
1220     #####################
1221     # Job Configuration #
1222     #####################
1223
1224     concurrent: true
1225
1226     builders:
1227       - shell: !include-raw-escape:
1228           - ../shell/git-validate-info-yaml.sh
1229           - ../shell/info-file-validate.sh
1230
1231 - job-template:
1232     name: "{project-name}-info-yaml-verify"
1233     id: gerrit-info-yaml-verify
1234     <<: *lf_jjb_common
1235     # yamllint disable-line rule:key-duplicates
1236     <<: *lf_info_yaml_verify
1237
1238     git-url: "$GIT_URL/$GERRIT_PROJECT"
1239
1240     scm:
1241       - lf-infra-gerrit-scm:
1242           git-url: "{git-url}"
1243           refspec: "$GERRIT_REFSPEC"
1244           branch: "$GERRIT_BRANCH"
1245           submodule-recursive: "{submodule-recursive}"
1246           submodule-timeout: "{submodule-timeout}"
1247           submodule-disable: "{submodule-disable}"
1248           choosing-strategy: gerrit
1249           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1250
1251     triggers:
1252       - gerrit:
1253           server-name: "{gerrit-server-name}"
1254           trigger-on: "{obj:gerrit_verify_triggers}"
1255           projects:
1256             - project-compare-type: ANT
1257               project-pattern: "{project}"
1258               branches:
1259                 - branch-compare-type: ANT
1260                   branch-pattern: "**/{branch}"
1261               file-paths:
1262                 - compare-type: REG_EXP
1263                   pattern: "INFO.yaml"
1264
1265 - job-template:
1266     name: "{project-name}-info-yaml-verify"
1267     id: github-info-yaml-verify
1268     <<: *lf_jjb_common
1269     # yamllint disable-line rule:key-duplicates
1270     <<: *lf_info_yaml_verify
1271
1272     github-url: "https://github.com"
1273     properties:
1274       - github:
1275           url: "{github-url}/{github-org}/{project}"
1276
1277     scm:
1278       - lf-infra-github-scm:
1279           url: "{git-clone-url}{github-org}/{project}"
1280           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1281           branch: "$sha1"
1282           submodule-recursive: "{submodule-recursive}"
1283           submodule-timeout: "{submodule-timeout}"
1284           submodule-disable: "{submodule-disable}"
1285           choosing-strategy: default
1286           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1287
1288     triggers:
1289       - github-pull-request:
1290           trigger-phrase: "^(recheck|reverify)$"
1291           only-trigger-phrase: false
1292           status-context: "INFO File Verify"
1293           permit-all: true
1294           github-hooks: true
1295           # included-regions MUST match gerrit file-paths
1296           included-regions: "INFO.yaml"
1297           white-list-target-branches:
1298             - "{branch}"
1299
1300 ##################
1301 # OPENSTACK CRON #
1302 ##################
1303
1304 - lf_openstack_cron: &lf_openstack_cron
1305     name: lf-openstack-cron
1306
1307     ######################
1308     # Default parameters #
1309     ######################
1310
1311     branch: master
1312     build-days-to-keep: 7
1313     build-timeout: 10
1314     cron: "@hourly"
1315     disable-job: false
1316     git-url: "$GIT_URL/$PROJECT"
1317     github-url: "https://github.com"
1318     openstack-cloud: vex
1319     openstack-image-cleanup: true
1320     openstack-image-cleanup-age: 30
1321     openstack-image-protect: true
1322     openstack-port-cleanup: true
1323     openstack-server-cleanup: true
1324     openstack-stack-cleanup: true
1325     openstack-volume-cleanup: true
1326     stream: master
1327     submodule-timeout: 10
1328     submodule-disable: false
1329
1330     #####################
1331     # Job Configuration #
1332     #####################
1333
1334     project-type: freestyle
1335     node: "{build-node}"
1336     concurrent: false
1337     disabled: "{disable-job}"
1338
1339     properties:
1340       - lf-infra-properties:
1341           build-days-to-keep: "{build-days-to-keep}"
1342
1343     parameters:
1344       - lf-infra-parameters:
1345           project: "{project}"
1346           stream: "{stream}"
1347           branch: "{branch}"
1348       - string:
1349           name: JENKINS_URLS
1350           default: "{jenkins-urls}"
1351           description: |
1352             Space separated list of Jenkins URLs to check for active builds.
1353
1354     wrappers:
1355       - lf-infra-wrappers:
1356           build-timeout: "{build-timeout}"
1357           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1358       # Listed after to override openstack-infra-wrappers clouds.yaml definition
1359       - config-file-provider:
1360           files:
1361             - file-id: clouds-yaml
1362               target: "$HOME/.config/openstack/clouds.yaml"
1363             - file-id: npmrc
1364               target: "$HOME/.npmrc"
1365             - file-id: pipconf
1366               target: "$HOME/.config/pip/pip.conf"
1367
1368     triggers:
1369       - timed: "{obj:cron}"
1370
1371     builders:
1372       - lf-infra-pre-build
1373       - inject:
1374           properties-content: OS_CLOUD={openstack-cloud}
1375       # Stacks
1376       - conditional-step:
1377           condition-kind: boolean-expression
1378           condition-expression: "{openstack-stack-cleanup}"
1379           steps:
1380             - shell: !include-raw-escape: ../shell/openstack-cleanup-orphaned-stacks.sh
1381       # Servers
1382       - conditional-step:
1383           condition-kind: boolean-expression
1384           condition-expression: "{openstack-server-cleanup}"
1385           steps:
1386             - shell: !include-raw-escape: ../shell/openstack-cleanup-orphaned-servers.sh
1387       # Ports
1388       - conditional-step:
1389           condition-kind: boolean-expression
1390           condition-expression: "{openstack-port-cleanup}"
1391           steps:
1392             - shell: !include-raw-escape: ../shell/openstack-cleanup-orphaned-ports.sh
1393       # Volumes
1394       - conditional-step:
1395           condition-kind: boolean-expression
1396           condition-expression: "{openstack-volume-cleanup}"
1397           steps:
1398             - shell: !include-raw-escape: ../shell/openstack-cleanup-orphaned-volumes.sh
1399       # Images
1400       - conditional-step:
1401           condition-kind: boolean-expression
1402           condition-expression: "{openstack-image-protect}"
1403           steps:
1404             - shell: !include-raw-escape: ../shell/openstack-protect-in-use-images.sh
1405       - conditional-step:
1406           condition-kind: boolean-expression
1407           condition-expression: "{openstack-image-cleanup}"
1408           steps:
1409             - inject:
1410                 properties-content: OS_IMAGE_CLEANUP_AGE={openstack-image-cleanup-age}
1411             - shell: !include-raw-escape: ../shell/openstack-cleanup-old-images.sh
1412
1413     publishers:
1414       - lf-infra-publish
1415
1416 - job-template:
1417     name: "{project-name}-openstack-cron"
1418     id: gerrit-openstack-cron
1419     <<: *lf_openstack_cron
1420
1421     scm:
1422       - lf-infra-gerrit-scm:
1423           git-url: "{git-url}"
1424           refspec: "refs/heads/{branch}"
1425           branch: "{branch}"
1426           submodule-recursive: true
1427           submodule-timeout: "{submodule-timeout}"
1428           submodule-disable: "{submodule-disable}"
1429           choosing-strategy: default
1430           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1431
1432 - job-template:
1433     name: "{project-name}-openstack-cron"
1434     id: github-openstack-cron
1435     <<: *lf_openstack_cron
1436
1437     scm:
1438       - lf-infra-github-scm:
1439           url: "{git-clone-url}{github-org}/{project}"
1440           refspec: ""
1441           branch: "refs/heads/{branch}"
1442           submodule-recursive: true
1443           submodule-timeout: "{submodule-timeout}"
1444           submodule-disable: "{submodule-disable}"
1445           choosing-strategy: default
1446           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1447
1448 ################
1449 # Packer Merge #
1450 ################
1451
1452 - lf_packer_merge: &lf_packer_merge
1453     name: lf-packer-merge
1454
1455     ######################
1456     # Default parameters #
1457     ######################
1458
1459     openstack: true
1460     openstack-cloud: vex
1461     update-cloud-image: false
1462
1463     #####################
1464     # Job Configuration #
1465     #####################
1466
1467     parameters:
1468       - lf-infra-parameters:
1469           project: "{project}"
1470           stream: "{stream}"
1471           branch: "{branch}"
1472       - lf-packer-parameters:
1473           packer-version: "{packer-version}"
1474       - bool:
1475           name: UPDATE_CLOUD_IMAGE
1476           default: "{update-cloud-image}"
1477           description: "Update new built image on the cloud."
1478
1479     builders:
1480       - lf-infra-packer-build:
1481           openstack: "{openstack}"
1482           openstack-cloud: "{openstack-cloud}"
1483           packer-builder: "{packer-builder}"
1484           packer-cloud-settings: "{packer-cloud-settings}"
1485           packer-version: "{packer-version}"
1486           platform: "{platforms}"
1487           template: "{templates}"
1488           update-cloud-image: "{update-cloud-image}"
1489       - description-setter:
1490           regexp: '(\s+.*)(ZZCI\s+.*\d+-\d+\.\d+)'
1491           description: 'Image: \2'
1492       # - trigger-builds:
1493       #     - project: '{project-name}-openstack-update-cloud-image'
1494       #       block: false
1495       #       predefined-parameters: |
1496       #         GERRIT_BRANCH=$GERRIT_BRANCH
1497       #         GERRIT_PROJECT=$GERRIT_PROJECT
1498       #         GERRIT_REFSPEC=$GERRIT_REFSPEC
1499       #         NEW_IMAGE_NAME=$NEW_IMAGE_NAME
1500       #       property-file: variables.jenkins-trigger
1501       #       property-file-fail-on-missing: true
1502
1503     publishers:
1504       - lf-infra-publish
1505       - trigger-parameterized-builds:
1506           - project: "{project-name}-openstack-update-cloud-image"
1507             condition: UNSTABLE_OR_BETTER
1508             predefined-parameters: |
1509               NEW_IMAGE_NAME=$NEW_IMAGE_NAME
1510             property-file: variables.jenkins-trigger
1511             fail-on-missing: true
1512
1513 - job-template:
1514     name: "{project-name}-packer-merge-{platforms}-{templates}"
1515     id: gerrit-packer-merge
1516     <<: *lf_packer_common
1517     # yamllint disable-line rule:key-duplicates
1518     <<: *lf_packer_merge
1519
1520     ######################
1521     # Default parameters #
1522     ######################
1523
1524     git-url: "$GIT_URL/$GERRIT_PROJECT"
1525
1526     gerrit_merge_triggers:
1527       - change-merged-event
1528       - comment-added-contains-event:
1529           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
1530
1531     #####################
1532     # Job Configuration #
1533     #####################
1534
1535     scm:
1536       - lf-infra-gerrit-scm:
1537           git-url: "{git-url}"
1538           refspec: "$GERRIT_REFSPEC"
1539           branch: "$GERRIT_BRANCH"
1540           submodule-recursive: "{submodule-recursive}"
1541           submodule-timeout: "{submodule-timeout}"
1542           submodule-disable: "{submodule-disable}"
1543           choosing-strategy: default
1544           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1545
1546     triggers:
1547       - timed: "{obj:cron}"
1548       - gerrit:
1549           server-name: "{gerrit-server-name}"
1550           trigger-on: "{obj:gerrit_merge_triggers}"
1551           projects:
1552             - project-compare-type: ANT
1553               project-pattern: "{project}"
1554               branches:
1555                 - branch-compare-type: ANT
1556                   branch-pattern: "**/{branch}"
1557               file-paths:
1558                 - compare-type: REG_EXP
1559                   pattern: 'packer\/provision\/.*\.sh'
1560                 - compare-type: REG_EXP
1561                   pattern: 'packer\/provision\/.*\.bat'
1562                 - compare-type: REG_EXP
1563                   pattern: 'packer\/provision\/.*\.ps1'
1564                 - compare-type: REG_EXP
1565                   pattern: 'packer\/provision\/{templates}\.yaml'
1566                 - compare-type: REG_EXP
1567                   pattern: 'packer\/provision\/local-{templates}\.yaml'
1568                 - compare-type: REG_EXP
1569                   pattern: 'packer\/templates\/{templates}\.json'
1570                 - compare-type: REG_EXP
1571                   pattern: 'packer\/vars\/{platforms}\.json'
1572
1573 - job-template:
1574     name: "{project-name}-packer-merge-{platforms}-{templates}"
1575     id: github-packer-merge
1576     <<: *lf_packer_common
1577     # yamllint disable-line rule:key-duplicates
1578     <<: *lf_packer_merge
1579
1580     #####################
1581     # Job Configuration #
1582     #####################
1583
1584     properties:
1585       - lf-infra-properties:
1586           project: "{project}"
1587           build-days-to-keep: 7
1588       - github:
1589           url: "{github-url}/{github-org}/{project}"
1590
1591     scm:
1592       - lf-infra-github-scm:
1593           url: "{git-clone-url}{github-org}/{project}"
1594           refspec: >
1595             +refs/heads/*:refs/remotes/origin/*
1596             +refs/pull/*:refs/remotes/origin/pr/*
1597           branch: "$GERRIT_REFSPEC"
1598           submodule-recursive: "{submodule-recursive}"
1599           submodule-timeout: "{submodule-timeout}"
1600           submodule-disable: "{submodule-disable}"
1601           choosing-strategy: default
1602           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1603
1604     triggers:
1605       - timed: "{obj:cron}"
1606       - github
1607       - pollscm:
1608           cron: ""
1609
1610       - github-pull-request:
1611           trigger-phrase: "^remerge$"
1612           only-trigger-phrase: true
1613           status-context: "Packer {platforms}-{templates} Merge"
1614           permit-all: true
1615           github-hooks: true
1616           org-list:
1617             - "{github-org}"
1618           white-list: "{obj:github_pr_whitelist}"
1619           admin-list: "{obj:github_pr_admin_list}"
1620           # included-regions MUST match Gerrit Trigger file-paths
1621           included-regions:
1622             - 'packer\/provision\/.*\.sh'
1623             - 'packer\/provision\/.*\.bat'
1624             - 'packer\/provision\/.*\.ps1'
1625             - 'packer\/provision\/{templates}\.yaml'
1626             - 'packer\/provision\/local-{templates}\.yaml'
1627             - 'packer\/templates\/{templates}\.json'
1628             - 'packer\/vars\/{platforms}\.json'
1629           white-list-target-branches:
1630             - "{branch}"
1631
1632 - job-template:
1633     name: "{project-name}-packer-verify-build-{platforms}-{templates}"
1634     id: gerrit-packer-verify-build
1635     <<: *lf_packer_common
1636     # yamllint disable-line rule:key-duplicates
1637     <<: *lf_packer_merge
1638
1639     ######################
1640     # Default parameters #
1641     ######################
1642
1643     git-url: "$GIT_URL/$GERRIT_PROJECT"
1644
1645     gerrit_verify_triggers:
1646       - comment-added-contains-event:
1647           comment-contains-value: '^Patch Set\s+\d+:\s+(verify-build|packer-build)\s*$'
1648
1649     #####################
1650     # Job Configuration #
1651     #####################
1652
1653     scm:
1654       - lf-infra-gerrit-scm:
1655           git-url: "{git-url}"
1656           refspec: "$GERRIT_REFSPEC"
1657           branch: "$GERRIT_BRANCH"
1658           submodule-recursive: "{submodule-recursive}"
1659           submodule-timeout: "{submodule-timeout}"
1660           submodule-disable: "{submodule-disable}"
1661           choosing-strategy: gerrit
1662           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1663
1664     triggers:
1665       - gerrit:
1666           server-name: "{gerrit-server-name}"
1667           trigger-on: "{obj:gerrit_verify_triggers}"
1668           projects:
1669             - project-compare-type: ANT
1670               project-pattern: "{project}"
1671               branches:
1672                 - branch-compare-type: ANT
1673                   branch-pattern: "**/{branch}"
1674               file-paths:
1675                 - compare-type: REG_EXP
1676                   pattern: 'packer\/provision\/.*\.sh'
1677                 - compare-type: REG_EXP
1678                   pattern: 'packer\/provision\/.*\.bat'
1679                 - compare-type: REG_EXP
1680                   pattern: 'packer\/provision\/.*\.ps1'
1681                 - compare-type: REG_EXP
1682                   pattern: 'packer\/provision\/{templates}\.yaml'
1683                 - compare-type: REG_EXP
1684                   pattern: 'packer\/provision\/local-{templates}\.yaml'
1685                 - compare-type: REG_EXP
1686                   pattern: 'packer\/templates\/{templates}\.json'
1687                 - compare-type: REG_EXP
1688                   pattern: 'packer\/vars\/{platforms}\.json'
1689
1690 - job-template:
1691     name: "{project-name}-packer-verify-build-{platforms}-{templates}"
1692     id: github-packer-verify-build
1693     <<: *lf_packer_common
1694     # yamllint disable-line rule:key-duplicates
1695     <<: *lf_packer_merge
1696
1697     #####################
1698     # Job Configuration #
1699     #####################
1700
1701     properties:
1702       - lf-infra-properties:
1703           project: "{project}"
1704           build-days-to-keep: 7
1705       - github:
1706           url: "{github-url}/{github-org}/{project}"
1707
1708     scm:
1709       - lf-infra-github-scm:
1710           url: "{git-clone-url}{github-org}/{project}"
1711           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1712           branch: "$sha1"
1713           submodule-recursive: "{submodule-recursive}"
1714           submodule-timeout: "{submodule-timeout}"
1715           submodule-disable: "{submodule-disable}"
1716           choosing-strategy: default
1717           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1718
1719     triggers:
1720       - github-pull-request:
1721           trigger-phrase: "^(verify-build|packer-build)$"
1722           only-trigger-phrase: true
1723           status-context: "Packer {platforms}-{templates} Verify Build"
1724           permit-all: true
1725           github-hooks: true
1726           white-list-target-branches:
1727             - "{branch}"
1728           # included-regions MUST match Gerrit Trigger file-paths
1729           included-regions:
1730             - 'packer\/provision\/.*\.sh'
1731             - 'packer\/provision\/.*\.bat'
1732             - 'packer\/provision\/.*\.ps1'
1733             - 'packer\/provision\/{templates}\.yaml'
1734             - 'packer\/provision\/local-{templates}\.yaml'
1735             - 'packer\/templates\/{templates}\.json'
1736             - 'packer\/vars\/{platforms}\.json'
1737
1738 #################
1739 # Packer Verify #
1740 #################
1741
1742 - lf_packer_verify: &lf_packer_verify
1743     name: lf-packer-verify
1744
1745     ######################
1746     # Default parameters #
1747     ######################
1748
1749     build-timeout: 10
1750     openstack: true
1751     openstack-cloud: vex
1752
1753     gerrit_verify_triggers:
1754       - patchset-created-event:
1755           exclude-drafts: true
1756           exclude-trivial-rebase: false
1757           exclude-no-code-change: false
1758       - draft-published-event
1759       - comment-added-contains-event:
1760           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1761
1762     gerrit_trigger_file_paths:
1763       - compare-type: REG_EXP
1764         pattern: 'packer\/.*'
1765
1766     # github_included_regions MUST match gerrit_trigger_file_paths
1767     github_included_regions:
1768       - 'packer\/.*'
1769
1770     #####################
1771     # Job Configuration #
1772     #####################
1773
1774     concurrent: true
1775
1776     builders:
1777       - lf-infra-packer-validate:
1778           openstack: "{openstack}"
1779           openstack-cloud: "{openstack-cloud}"
1780           packer-cloud-settings: "{packer-cloud-settings}"
1781           packer-version: "{packer-version}"
1782
1783 - job-template:
1784     name: "{project-name}-packer-verify"
1785     id: gerrit-packer-verify
1786     <<: *lf_packer_common
1787     # yamllint disable-line rule:key-duplicates
1788     <<: *lf_packer_verify
1789
1790     ######################
1791     # Default parameters #
1792     ######################
1793
1794     git-url: "$GIT_URL/$GERRIT_PROJECT"
1795
1796     #####################
1797     # Job Configuration #
1798     #####################
1799
1800     scm:
1801       - lf-infra-gerrit-scm:
1802           git-url: "{git-url}"
1803           refspec: "$GERRIT_REFSPEC"
1804           branch: "$GERRIT_BRANCH"
1805           submodule-recursive: "{submodule-recursive}"
1806           submodule-timeout: "{submodule-timeout}"
1807           submodule-disable: "{submodule-disable}"
1808           choosing-strategy: gerrit
1809           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1810
1811     triggers:
1812       - gerrit:
1813           server-name: "{gerrit-server-name}"
1814           trigger-on: "{obj:gerrit_verify_triggers}"
1815           projects:
1816             - project-compare-type: ANT
1817               project-pattern: "{project}"
1818               branches:
1819                 - branch-compare-type: ANT
1820                   branch-pattern: "**/{branch}"
1821               file-paths: "{obj:gerrit_trigger_file_paths}"
1822
1823 - job-template:
1824     name: "{project-name}-packer-verify"
1825     id: github-packer-verify
1826     <<: *lf_packer_common
1827     # yamllint disable-line rule:key-duplicates
1828     <<: *lf_packer_verify
1829
1830     #####################
1831     # Job Configuration #
1832     #####################
1833
1834     properties:
1835       - lf-infra-properties:
1836           project: "{project}"
1837           build-days-to-keep: 7
1838       - github:
1839           url: "{github-url}/{github-org}/{project}"
1840
1841     scm:
1842       - lf-infra-github-scm:
1843           url: "{git-clone-url}{github-org}/{project}"
1844           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1845           branch: "$sha1"
1846           submodule-recursive: "{submodule-recursive}"
1847           submodule-timeout: "{submodule-timeout}"
1848           submodule-disable: "{submodule-disable}"
1849           choosing-strategy: default
1850           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1851
1852     triggers:
1853       - github-pull-request:
1854           trigger-phrase: "^(recheck|reverify)$"
1855           only-trigger-phrase: false
1856           status-context: "Packer Verify"
1857           permit-all: true
1858           github-hooks: true
1859           included-regions: "{obj:github_included_regions}"
1860           white-list-target-branches:
1861             - "{branch}"
1862
1863 ################################
1864 # Openstack Update Cloud Image #
1865 ################################
1866
1867 - lf_openstack_cron: &lf_openstack_update_cloud_image
1868     name: lf-openstack-update-cloud-image
1869
1870     ######################
1871     # Default parameters #
1872     ######################
1873
1874     branch: master
1875     build-days-to-keep: 7
1876     build-timeout: 10
1877     cron: "@monthly"
1878     disable-job: false
1879     git-url: "$GIT_URL/$PROJECT"
1880     github-url: "https://github.com"
1881     new-image-name: "all"
1882     openstack-cloud: vex
1883     stream: master
1884     submodule-timeout: 10
1885     submodule-disable: false
1886     update-cloud-image: false
1887
1888     #####################
1889     # Job Configuration #
1890     #####################
1891
1892     project-type: freestyle
1893     node: "{build-node}"
1894     concurrent: false
1895     disabled: "{disable-job}"
1896
1897     properties:
1898       - lf-infra-properties:
1899           build-days-to-keep: "{build-days-to-keep}"
1900
1901     parameters:
1902       - lf-infra-parameters:
1903           project: "{project}"
1904           stream: "{stream}"
1905           branch: "{branch}"
1906       - string:
1907           name: NEW_IMAGE_NAME
1908           default: "{new-image-name}"
1909           description: "Name of cloud image to update in Jenkins"
1910
1911     wrappers:
1912       - lf-infra-wrappers:
1913           build-timeout: "{build-timeout}"
1914           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1915       # Listed after to override openstack-infra-wrappers clouds.yaml definition
1916       - config-file-provider:
1917           files:
1918             - file-id: clouds-yaml
1919               target: "$HOME/.config/openstack/clouds.yaml"
1920             - file-id: npmrc
1921               target: "$HOME/.npmrc"
1922             - file-id: pipconf
1923               target: "$HOME/.config/pip/pip.conf"
1924
1925     builders:
1926       - lf-infra-pre-build
1927       - inject:
1928           properties-content: |
1929             OS_CLOUD={openstack-cloud}
1930       - shell: |
1931           #!/bin/bash
1932           echo "Extract the image type for commit message"
1933           # echo IMAGE_TYPE=${{NEW_IMAGE_NAME% -*}} >> image-type.txt
1934           IMAGE_TYPE=$(echo ${{NEW_IMAGE_NAME}} | tr -d "\'\"\ " | awk -F- '{{ print $2 " " $3 " " $4 }}')
1935           echo IMAGE_TYPE=${{IMAGE_TYPE}} >> image-type.txt
1936           cat image-type.txt
1937       - inject:
1938           properties-file: "image-type.txt"
1939       - lf-infra-update-packer-images
1940       - lf-infra-push-gerrit-patch:
1941           project: "{project}"
1942           gerrit-user: "{gerrit-user}"
1943           gerrit-host: "{gerrit-host}"
1944           gerrit-topic: "{gerrit-topic}"
1945           gerrit-commit-message: "Update cloud image $IMAGE_TYPE"
1946           reviewers-email: "{reviewers-email}"
1947
1948     publishers:
1949       - lf-infra-publish
1950
1951 - job-template:
1952     name: "{project-name}-openstack-update-cloud-image"
1953     id: gerrit-openstack-update-cloud-image
1954     <<: *lf_openstack_update_cloud_image
1955
1956     ######################
1957     # Default parameters #
1958     ######################
1959
1960     git-url: "$GIT_URL/$GERRIT_PROJECT"
1961
1962     #####################
1963     # Job Configuration #
1964     #####################
1965
1966     scm:
1967       - lf-infra-gerrit-scm:
1968           git-url: "{git-url}"
1969           refspec: "$GERRIT_REFSPEC"
1970           branch: "$GERRIT_BRANCH"
1971           submodule-recursive: false
1972           submodule-timeout: "{submodule-timeout}"
1973           submodule-disable: "{submodule-disable}"
1974           choosing-strategy: gerrit
1975           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1976
1977     triggers:
1978       - timed: "{obj:cron}"
1979
1980 #################
1981 # Puppet Verify #
1982 #################
1983
1984 - lf_puppet_verify: &lf_puppet_verify
1985     name: lf-puppet-verify
1986
1987     ######################
1988     # Default parameters #
1989     ######################
1990
1991     branch: master
1992     build-days-to-keep: 7
1993     build-timeout: 15
1994     disable-job: false
1995     git-url: "$GIT_URL/$GERRIT_PROJECT"
1996     github-url: "https://github.com"
1997     parallel: true
1998     puppet-dir: ""
1999     puppet-lint-version: 2.3.6
2000     stream: master
2001     submodule-recursive: true
2002     submodule-timeout: 10
2003     submodule-disable: false
2004
2005     gerrit_trigger_file_paths:
2006       - compare-type: REG_EXP
2007         pattern: ".*"
2008
2009     # github_included_regions MUST match gerrit_trigger_file_paths
2010     github_included_regions:
2011       - ".*"
2012
2013     #####################
2014     # Job Configuration #
2015     #####################
2016
2017     project-type: freestyle
2018     node: "{build-node}"
2019     concurrent: true
2020     disabled: "{disable-job}"
2021
2022     properties:
2023       - lf-infra-properties:
2024           build-days-to-keep: "{build-days-to-keep}"
2025
2026     parameters:
2027       - lf-infra-parameters:
2028           project: "{project}"
2029           branch: "{branch}"
2030           stream: "{stream}"
2031       - lf-puppet-parameters:
2032           puppet-lint-version: "{puppet-lint-version}"
2033
2034     wrappers:
2035       - lf-infra-wrappers:
2036           build-timeout: "{build-timeout}"
2037           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2038
2039     builders:
2040       - shell: !include-raw-escape: ../shell/puppet-lint.sh
2041
2042     publishers:
2043       - lf-infra-publish
2044
2045 - job-template:
2046     name: "{project-name}-puppet-verify"
2047     id: gerrit-puppet-verify
2048     <<: *lf_puppet_verify
2049
2050     ######################
2051     # Default parameters #
2052     ######################
2053
2054     gerrit_verify_triggers:
2055       - patchset-created-event:
2056           exclude-drafts: true
2057           exclude-trivial-rebase: false
2058           exclude-no-code-change: false
2059       - draft-published-event
2060       - comment-added-contains-event:
2061           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
2062
2063     #####################
2064     # Job Configuration #
2065     #####################
2066
2067     scm:
2068       - lf-infra-gerrit-scm:
2069           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2070           git-url: "{git-url}"
2071           refspec: "$GERRIT_REFSPEC"
2072           branch: "$GERRIT_BRANCH"
2073           submodule-recursive: "{submodule-recursive}"
2074           submodule-timeout: "{submodule-timeout}"
2075           submodule-disable: "{submodule-disable}"
2076           choosing-strategy: gerrit
2077
2078     triggers:
2079       - gerrit:
2080           server-name: "{gerrit-server-name}"
2081           trigger-on: "{obj:gerrit_verify_triggers}"
2082           projects:
2083             - project-compare-type: ANT
2084               project-pattern: "{project}"
2085               branches:
2086                 - branch-compare-type: ANT
2087                   branch-pattern: "**/{branch}"
2088               file-paths: "{obj:gerrit_trigger_file_paths}"
2089
2090 - job-template:
2091     name: "{project-name}-puppet-verify"
2092     id: github-puppet-verify
2093     <<: *lf_puppet_verify
2094
2095     #####################
2096     # Job Configuration #
2097     #####################
2098
2099     properties:
2100       - lf-infra-properties:
2101           project: "{project}"
2102           build-days-to-keep: 7
2103       - github:
2104           url: "{github-url}/{github-org}/{project}"
2105
2106     scm:
2107       - lf-infra-github-scm:
2108           url: "{git-clone-url}{github-org}/{project}"
2109           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
2110           branch: "$sha1"
2111           submodule-recursive: "{submodule-recursive}"
2112           submodule-timeout: "{submodule-timeout}"
2113           submodule-disable: "{submodule-disable}"
2114           choosing-strategy: default
2115           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2116
2117     triggers:
2118       - github-pull-request:
2119           trigger-phrase: "^(recheck|reverify)$"
2120           only-trigger-phrase: false
2121           status-context: "Puppet Verify"
2122           permit-all: true
2123           github-hooks: true
2124           included-regions: "{obj:github_included_regions}"
2125           white-list-target-branches:
2126             - "{branch}"
2127
2128 #########
2129 # Sonar #
2130 #########
2131
2132 - lf_sonar_common: &lf_sonar_common
2133     name: lf-sonar-common
2134
2135     ######################
2136     # Default parameters #
2137     ######################
2138
2139     archive-artifacts: >
2140       **/*.log
2141
2142     branch: master # Sonar should always be run on master branch
2143     build-days-to-keep: 7
2144     build-timeout: 60
2145     cron: "H H * * *" # run daily
2146     disable-job: false
2147     git-url: "$GIT_URL/$PROJECT"
2148     github-url: "https://github.com"
2149     stream: master
2150     submodule-recursive: true
2151     submodule-timeout: 10
2152     submodule-disable: false
2153
2154     # Sonar properties
2155     sonar-task: ""
2156     sonar-project-file: "sonar-project.properties"
2157     sonar-properties: ""
2158     sonar-java-opts: ""
2159     sonar-additional-args: ""
2160
2161     gerrit_trigger_file_paths:
2162       - compare-type: REG_EXP
2163         pattern: ".*"
2164
2165     # github_included_regions MUST match gerrit_trigger_file_paths
2166     github_included_regions:
2167       - ".*"
2168
2169     #####################
2170     # Job Configuration #
2171     #####################
2172
2173     project-type: freestyle
2174     node: "{build-node}"
2175
2176     properties:
2177       - lf-infra-properties:
2178           build-days-to-keep: "{build-days-to-keep}"
2179
2180     wrappers:
2181       - lf-infra-wrappers:
2182           build-timeout: "{build-timeout}"
2183           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2184
2185     disabled: "{disable-job}"
2186
2187     parameters:
2188       - lf-infra-parameters:
2189           project: "{project}"
2190           branch: "{branch}"
2191           stream: "{stream}"
2192       - string:
2193           name: ARCHIVE_ARTIFACTS
2194           default: "{archive-artifacts}"
2195           description: Artifacts to archive to the logs server.
2196
2197     publishers:
2198       - lf-infra-publish
2199
2200 - lf_sonar_builders: &lf_sonar_builders
2201     name: lf-sonar-builders
2202     builders:
2203       - lf-infra-pre-build
2204       - lf-infra-sonar:
2205           sonar-task: "{sonar-task}"
2206           sonar-project-file: "{sonar-project-file}"
2207           sonar-properties: "{sonar-properties}"
2208           sonar-java-opts: "{sonar-java-opts}"
2209           sonar-additional-args: "{sonar-additional-args}"
2210
2211 - lf_sonar_builders_prescan: &lf_sonar_builders_prescan
2212     name: lf-sonar-builders-prescan
2213     builders:
2214       - lf-infra-pre-build
2215       - lf-infra-sonar-with-prescan:
2216           sonar-task: "{sonar-task}"
2217           sonar-project-file: "{sonar-project-file}"
2218           sonar-properties: "{sonar-properties}"
2219           sonar-java-opts: "{sonar-java-opts}"
2220           sonar-additional-args: "{sonar-additional-args}"
2221
2222 - lf_sonar_builders_prescan_script: &lf_sonar_builders_prescan_script
2223     name: lf-sonar-builders-prescan-script
2224     builders:
2225       - lf-infra-pre-build
2226       - shell: "{sonar-prescan-script}"
2227       - lf-infra-sonar:
2228           sonar-task: "{sonar-task}"
2229           sonar-project-file: "{sonar-project-file}"
2230           sonar-properties: "{sonar-properties}"
2231           sonar-java-opts: "{sonar-java-opts}"
2232           sonar-additional-args: "{sonar-additional-args}"
2233
2234 - lf_sonar_gerrit_common: &lf_sonar_gerrit_common
2235     name: lf-sonar-gerrit-common
2236     gerrit_sonar_triggers:
2237       - comment-added-contains-event:
2238           comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
2239
2240     scm:
2241       - lf-infra-gerrit-scm:
2242           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2243           git-url: "{git-url}"
2244           refspec: $GERRIT_REFSPEC
2245           branch: $GERRIT_BRANCH
2246           submodule-recursive: "{submodule-recursive}"
2247           submodule-timeout: "{submodule-timeout}"
2248           submodule-disable: "{submodule-disable}"
2249           choosing-strategy: default
2250
2251     triggers:
2252       - timed: "{obj:cron}"
2253       - gerrit:
2254           server-name: "{gerrit-server-name}"
2255           trigger-on: "{obj:gerrit_sonar_triggers}"
2256           projects:
2257             - project-compare-type: "ANT"
2258               project-pattern: "{project}"
2259               branches:
2260                 - branch-compare-type: "ANT"
2261                   branch-pattern: "**/{branch}"
2262               file-paths: "{obj:gerrit_trigger_file_paths}"
2263           skip-vote:
2264             successful: true
2265             failed: true
2266             unstable: true
2267             notbuilt: true
2268
2269 - lf_sonar_github_common: &lf_sonar_github_common
2270     name: lf-sonar-github-common
2271     properties:
2272       - lf-infra-properties:
2273           build-days-to-keep: "{build-days-to-keep}"
2274       - github:
2275           url: "{github-url}/{github-org}/{project}"
2276
2277     scm:
2278       - lf-infra-github-scm:
2279           url: "{git-clone-url}{github-org}/{project}"
2280           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
2281           branch: "$sha1"
2282           submodule-recursive: "{submodule-recursive}"
2283           submodule-timeout: "{submodule-timeout}"
2284           submodule-disable: "{submodule-disable}"
2285           choosing-strategy: default
2286           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2287
2288     triggers:
2289       - github-pull-request:
2290           trigger-phrase: "^run-sonar$"
2291           only-trigger-phrase: false
2292           status-context: "Python Sonar"
2293           permit-all: true
2294           github-hooks: true
2295           white-list-target-branches:
2296             - "{branch}"
2297           included-regions: "{obj:github_included_regions}"
2298
2299 - job-template:
2300     name: "{project-name}-sonar"
2301     id: gerrit-sonar
2302     <<: *lf_sonar_common
2303     # yamllint disable-line rule:key-duplicates
2304     <<: *lf_sonar_builders
2305     # yamllint disable-line rule:key-duplicates
2306     <<: *lf_sonar_gerrit_common
2307
2308 - job-template:
2309     name: "{project-name}-sonar"
2310     id: github-sonar
2311     <<: *lf_sonar_common
2312     # yamllint disable-line rule:key-duplicates
2313     <<: *lf_sonar_builders
2314     # yamllint disable-line rule:key-duplicates
2315     <<: *lf_sonar_github_common
2316
2317 - job-template:
2318     name: "{project-name}-sonar-prescan"
2319     id: gerrit-sonar-prescan
2320     <<: *lf_sonar_common
2321     # yamllint disable-line rule:key-duplicates
2322     <<: *lf_sonar_builders_prescan
2323     # yamllint disable-line rule:key-duplicates
2324     <<: *lf_sonar_gerrit_common
2325
2326 - job-template:
2327     name: "{project-name}-sonar-prescan"
2328     id: github-sonar-prescan
2329     <<: *lf_sonar_common
2330     # yamllint disable-line rule:key-duplicates
2331     <<: *lf_sonar_builders_prescan
2332     # yamllint disable-line rule:key-duplicates
2333     <<: *lf_sonar_github_common
2334
2335 - job-template:
2336     name: "{project-name}-sonar-prescan-script"
2337     id: gerrit-sonar-prescan-script
2338     <<: *lf_sonar_common
2339     # yamllint disable-line rule:key-duplicates
2340     <<: *lf_sonar_builders_prescan_script
2341     # yamllint disable-line rule:key-duplicates
2342     <<: *lf_sonar_gerrit_common
2343
2344 - job-template:
2345     name: "{project-name}-sonar-prescan-script"
2346     id: github-sonar-prescan-script
2347     <<: *lf_sonar_common
2348     # yamllint disable-line rule:key-duplicates
2349     <<: *lf_sonar_builders_prescan_script
2350     # yamllint disable-line rule:key-duplicates
2351     <<: *lf_sonar_github_common
2352
2353 #############
2354 # Pipelines #
2355 #############
2356
2357 - lf_pipelines_common: &lf_pipelines_common
2358     name: lf-pipelines-common
2359
2360     ######################
2361     # Default parameters #
2362     ######################
2363
2364     branch: master
2365     build-timeout: 90
2366     disable-job: false
2367     stream: master
2368     submodule-recursive: true
2369     submodule-timeout: 10
2370     submodule-disable: false
2371
2372 - lf_global_pipelines_common: &lf_global_pipelines_common
2373     name: lf-global-pipelines-common
2374
2375     # All jobs are triggering from the same source
2376     git-url: https://gerrit.linuxfoundation.org/infra/releng/pipelines
2377     triggers:
2378       - gerrit:
2379           server-name: "lf-releng"
2380           trigger-on:
2381             - patchset-created-event:
2382                 exclude-drafts: true
2383                 exclude-trivial-rebase: false
2384                 exclude-no-code-change: false
2385             - draft-published-event
2386             - comment-added-contains-event:
2387                 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
2388           projects:
2389             - project-compare-type: ANT
2390               project-pattern: "releng/pipelines"
2391               branches:
2392                 - branch-compare-type: ANT
2393                   branch-pattern: "**/master"
2394
2395 - job-template:
2396     name: "lf-pipelines-verify"
2397     id: lf-pipelines-verify
2398     <<: *lf_pipelines_common
2399     <<: *lf_global_pipelines_common
2400
2401     project-type: pipeline
2402     pipeline-scm:
2403       scm:
2404         - lf-infra-gerrit-scm:
2405             git-url: "{git-url}"
2406             refspec: "$GERRIT_REFSPEC"
2407             branch: "$GERRIT_BRANCH"
2408             submodule-recursive: "{submodule-recursive}"
2409             submodule-timeout: "{submodule-timeout}"
2410             submodule-disable: "{submodule-disable}"
2411             choosing-strategy: gerrit
2412             jenkins-ssh-credential: "{jenkins-ssh-credential}"
2413     sandbox: true