Revert "Pass the builder type to verify jobs"
[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       - global-jjb-email-notification:
1416           email-recipients: "{failure-notification}"
1417           email-prefix: "{failure-notification-prefix}"
1418
1419 - job-template:
1420     name: "{project-name}-openstack-cron"
1421     id: gerrit-openstack-cron
1422     <<: *lf_openstack_cron
1423
1424     scm:
1425       - lf-infra-gerrit-scm:
1426           git-url: "{git-url}"
1427           refspec: "refs/heads/{branch}"
1428           branch: "{branch}"
1429           submodule-recursive: true
1430           submodule-timeout: "{submodule-timeout}"
1431           submodule-disable: "{submodule-disable}"
1432           choosing-strategy: default
1433           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1434
1435 - job-template:
1436     name: "{project-name}-openstack-cron"
1437     id: github-openstack-cron
1438     <<: *lf_openstack_cron
1439
1440     scm:
1441       - lf-infra-github-scm:
1442           url: "{git-clone-url}{github-org}/{project}"
1443           refspec: ""
1444           branch: "refs/heads/{branch}"
1445           submodule-recursive: true
1446           submodule-timeout: "{submodule-timeout}"
1447           submodule-disable: "{submodule-disable}"
1448           choosing-strategy: default
1449           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1450
1451 ################
1452 # Packer Merge #
1453 ################
1454
1455 - lf_packer_merge: &lf_packer_merge
1456     name: lf-packer-merge
1457
1458     ######################
1459     # Default parameters #
1460     ######################
1461
1462     openstack: true
1463     openstack-cloud: vex
1464     update-cloud-image: false
1465
1466     #####################
1467     # Job Configuration #
1468     #####################
1469
1470     parameters:
1471       - lf-infra-parameters:
1472           project: "{project}"
1473           stream: "{stream}"
1474           branch: "{branch}"
1475       - lf-packer-parameters:
1476           packer-version: "{packer-version}"
1477       - bool:
1478           name: UPDATE_CLOUD_IMAGE
1479           default: "{update-cloud-image}"
1480           description: "Update new built image on the cloud."
1481
1482     builders:
1483       - lf-infra-packer-build:
1484           openstack: "{openstack}"
1485           openstack-cloud: "{openstack-cloud}"
1486           packer-builder: "{packer-builder}"
1487           packer-cloud-settings: "{packer-cloud-settings}"
1488           packer-version: "{packer-version}"
1489           platform: "{platforms}"
1490           template: "{templates}"
1491           update-cloud-image: "{update-cloud-image}"
1492       - description-setter:
1493           regexp: '(\s+.*)(ZZCI\s+.*\d+-\d+\.\d+)'
1494           description: 'Image: \2'
1495       # - trigger-builds:
1496       #     - project: '{project-name}-openstack-update-cloud-image'
1497       #       block: false
1498       #       predefined-parameters: |
1499       #         GERRIT_BRANCH=$GERRIT_BRANCH
1500       #         GERRIT_PROJECT=$GERRIT_PROJECT
1501       #         GERRIT_REFSPEC=$GERRIT_REFSPEC
1502       #         NEW_IMAGE_NAME=$NEW_IMAGE_NAME
1503       #       property-file: variables.jenkins-trigger
1504       #       property-file-fail-on-missing: true
1505
1506     publishers:
1507       - lf-infra-publish
1508       - trigger-parameterized-builds:
1509           - project: "{project-name}-openstack-update-cloud-image"
1510             condition: UNSTABLE_OR_BETTER
1511             predefined-parameters: |
1512               NEW_IMAGE_NAME=$NEW_IMAGE_NAME
1513             property-file: variables.jenkins-trigger
1514             fail-on-missing: true
1515
1516 - job-template:
1517     name: "{project-name}-packer-merge-{platforms}-{templates}"
1518     id: gerrit-packer-merge
1519     <<: *lf_packer_common
1520     # yamllint disable-line rule:key-duplicates
1521     <<: *lf_packer_merge
1522
1523     ######################
1524     # Default parameters #
1525     ######################
1526
1527     git-url: "$GIT_URL/$GERRIT_PROJECT"
1528
1529     gerrit_merge_triggers:
1530       - change-merged-event
1531       - comment-added-contains-event:
1532           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
1533
1534     #####################
1535     # Job Configuration #
1536     #####################
1537
1538     scm:
1539       - lf-infra-gerrit-scm:
1540           git-url: "{git-url}"
1541           refspec: "$GERRIT_REFSPEC"
1542           branch: "$GERRIT_BRANCH"
1543           submodule-recursive: "{submodule-recursive}"
1544           submodule-timeout: "{submodule-timeout}"
1545           submodule-disable: "{submodule-disable}"
1546           choosing-strategy: default
1547           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1548
1549     triggers:
1550       - timed: "{obj:cron}"
1551       - gerrit:
1552           server-name: "{gerrit-server-name}"
1553           trigger-on: "{obj:gerrit_merge_triggers}"
1554           projects:
1555             - project-compare-type: ANT
1556               project-pattern: "{project}"
1557               branches:
1558                 - branch-compare-type: ANT
1559                   branch-pattern: "**/{branch}"
1560               file-paths:
1561                 - compare-type: REG_EXP
1562                   pattern: 'packer\/provision\/.*\.sh'
1563                 - compare-type: REG_EXP
1564                   pattern: 'packer\/provision\/.*\.bat'
1565                 - compare-type: REG_EXP
1566                   pattern: 'packer\/provision\/.*\.ps1'
1567                 - compare-type: REG_EXP
1568                   pattern: 'packer\/provision\/{templates}\.yaml'
1569                 - compare-type: REG_EXP
1570                   pattern: 'packer\/provision\/local-{templates}\.yaml'
1571                 - compare-type: REG_EXP
1572                   pattern: 'packer\/templates\/{templates}\.json'
1573                 - compare-type: REG_EXP
1574                   pattern: 'packer\/vars\/{platforms}\.json'
1575
1576 - job-template:
1577     name: "{project-name}-packer-merge-{platforms}-{templates}"
1578     id: github-packer-merge
1579     <<: *lf_packer_common
1580     # yamllint disable-line rule:key-duplicates
1581     <<: *lf_packer_merge
1582
1583     #####################
1584     # Job Configuration #
1585     #####################
1586
1587     properties:
1588       - lf-infra-properties:
1589           project: "{project}"
1590           build-days-to-keep: 7
1591       - github:
1592           url: "{github-url}/{github-org}/{project}"
1593
1594     scm:
1595       - lf-infra-github-scm:
1596           url: "{git-clone-url}{github-org}/{project}"
1597           refspec: >
1598             +refs/heads/*:refs/remotes/origin/*
1599             +refs/pull/*:refs/remotes/origin/pr/*
1600           branch: "$GERRIT_REFSPEC"
1601           submodule-recursive: "{submodule-recursive}"
1602           submodule-timeout: "{submodule-timeout}"
1603           submodule-disable: "{submodule-disable}"
1604           choosing-strategy: default
1605           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1606
1607     triggers:
1608       - timed: "{obj:cron}"
1609       - github
1610       - pollscm:
1611           cron: ""
1612
1613       - github-pull-request:
1614           trigger-phrase: "^remerge$"
1615           only-trigger-phrase: true
1616           status-context: "Packer {platforms}-{templates} Merge"
1617           permit-all: true
1618           github-hooks: true
1619           org-list:
1620             - "{github-org}"
1621           white-list: "{obj:github_pr_whitelist}"
1622           admin-list: "{obj:github_pr_admin_list}"
1623           # included-regions MUST match Gerrit Trigger file-paths
1624           included-regions:
1625             - 'packer\/provision\/.*\.sh'
1626             - 'packer\/provision\/.*\.bat'
1627             - 'packer\/provision\/.*\.ps1'
1628             - 'packer\/provision\/{templates}\.yaml'
1629             - 'packer\/provision\/local-{templates}\.yaml'
1630             - 'packer\/templates\/{templates}\.json'
1631             - 'packer\/vars\/{platforms}\.json'
1632           white-list-target-branches:
1633             - "{branch}"
1634
1635 - job-template:
1636     name: "{project-name}-packer-verify-build-{platforms}-{templates}"
1637     id: gerrit-packer-verify-build
1638     <<: *lf_packer_common
1639     # yamllint disable-line rule:key-duplicates
1640     <<: *lf_packer_merge
1641
1642     ######################
1643     # Default parameters #
1644     ######################
1645
1646     git-url: "$GIT_URL/$GERRIT_PROJECT"
1647
1648     gerrit_verify_triggers:
1649       - comment-added-contains-event:
1650           comment-contains-value: '^Patch Set\s+\d+:\s+(verify-build|packer-build)\s*$'
1651
1652     #####################
1653     # Job Configuration #
1654     #####################
1655
1656     scm:
1657       - lf-infra-gerrit-scm:
1658           git-url: "{git-url}"
1659           refspec: "$GERRIT_REFSPEC"
1660           branch: "$GERRIT_BRANCH"
1661           submodule-recursive: "{submodule-recursive}"
1662           submodule-timeout: "{submodule-timeout}"
1663           submodule-disable: "{submodule-disable}"
1664           choosing-strategy: gerrit
1665           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1666
1667     triggers:
1668       - gerrit:
1669           server-name: "{gerrit-server-name}"
1670           trigger-on: "{obj:gerrit_verify_triggers}"
1671           projects:
1672             - project-compare-type: ANT
1673               project-pattern: "{project}"
1674               branches:
1675                 - branch-compare-type: ANT
1676                   branch-pattern: "**/{branch}"
1677               file-paths:
1678                 - compare-type: REG_EXP
1679                   pattern: 'packer\/provision\/.*\.sh'
1680                 - compare-type: REG_EXP
1681                   pattern: 'packer\/provision\/.*\.bat'
1682                 - compare-type: REG_EXP
1683                   pattern: 'packer\/provision\/.*\.ps1'
1684                 - compare-type: REG_EXP
1685                   pattern: 'packer\/provision\/{templates}\.yaml'
1686                 - compare-type: REG_EXP
1687                   pattern: 'packer\/provision\/local-{templates}\.yaml'
1688                 - compare-type: REG_EXP
1689                   pattern: 'packer\/templates\/{templates}\.json'
1690                 - compare-type: REG_EXP
1691                   pattern: 'packer\/vars\/{platforms}\.json'
1692
1693 - job-template:
1694     name: "{project-name}-packer-verify-build-{platforms}-{templates}"
1695     id: github-packer-verify-build
1696     <<: *lf_packer_common
1697     # yamllint disable-line rule:key-duplicates
1698     <<: *lf_packer_merge
1699
1700     #####################
1701     # Job Configuration #
1702     #####################
1703
1704     properties:
1705       - lf-infra-properties:
1706           project: "{project}"
1707           build-days-to-keep: 7
1708       - github:
1709           url: "{github-url}/{github-org}/{project}"
1710
1711     scm:
1712       - lf-infra-github-scm:
1713           url: "{git-clone-url}{github-org}/{project}"
1714           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1715           branch: "$sha1"
1716           submodule-recursive: "{submodule-recursive}"
1717           submodule-timeout: "{submodule-timeout}"
1718           submodule-disable: "{submodule-disable}"
1719           choosing-strategy: default
1720           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1721
1722     triggers:
1723       - github-pull-request:
1724           trigger-phrase: "^(verify-build|packer-build)$"
1725           only-trigger-phrase: true
1726           status-context: "Packer {platforms}-{templates} Verify Build"
1727           permit-all: true
1728           github-hooks: true
1729           white-list-target-branches:
1730             - "{branch}"
1731           # included-regions MUST match Gerrit Trigger file-paths
1732           included-regions:
1733             - 'packer\/provision\/.*\.sh'
1734             - 'packer\/provision\/.*\.bat'
1735             - 'packer\/provision\/.*\.ps1'
1736             - 'packer\/provision\/{templates}\.yaml'
1737             - 'packer\/provision\/local-{templates}\.yaml'
1738             - 'packer\/templates\/{templates}\.json'
1739             - 'packer\/vars\/{platforms}\.json'
1740
1741 #################
1742 # Packer Verify #
1743 #################
1744
1745 - lf_packer_verify: &lf_packer_verify
1746     name: lf-packer-verify
1747
1748     ######################
1749     # Default parameters #
1750     ######################
1751
1752     build-timeout: 10
1753     openstack: true
1754     openstack-cloud: vex
1755
1756     gerrit_verify_triggers:
1757       - patchset-created-event:
1758           exclude-drafts: true
1759           exclude-trivial-rebase: false
1760           exclude-no-code-change: false
1761       - draft-published-event
1762       - comment-added-contains-event:
1763           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1764
1765     gerrit_trigger_file_paths:
1766       - compare-type: REG_EXP
1767         pattern: 'packer\/.*'
1768
1769     # github_included_regions MUST match gerrit_trigger_file_paths
1770     github_included_regions:
1771       - 'packer\/.*'
1772
1773     #####################
1774     # Job Configuration #
1775     #####################
1776
1777     concurrent: true
1778
1779     builders:
1780       - lf-infra-packer-validate:
1781           openstack: "{openstack}"
1782           openstack-cloud: "{openstack-cloud}"
1783           packer-cloud-settings: "{packer-cloud-settings}"
1784           packer-version: "{packer-version}"
1785
1786 - job-template:
1787     name: "{project-name}-packer-verify"
1788     id: gerrit-packer-verify
1789     <<: *lf_packer_common
1790     # yamllint disable-line rule:key-duplicates
1791     <<: *lf_packer_verify
1792
1793     ######################
1794     # Default parameters #
1795     ######################
1796
1797     git-url: "$GIT_URL/$GERRIT_PROJECT"
1798
1799     #####################
1800     # Job Configuration #
1801     #####################
1802
1803     scm:
1804       - lf-infra-gerrit-scm:
1805           git-url: "{git-url}"
1806           refspec: "$GERRIT_REFSPEC"
1807           branch: "$GERRIT_BRANCH"
1808           submodule-recursive: "{submodule-recursive}"
1809           submodule-timeout: "{submodule-timeout}"
1810           submodule-disable: "{submodule-disable}"
1811           choosing-strategy: gerrit
1812           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1813
1814     triggers:
1815       - gerrit:
1816           server-name: "{gerrit-server-name}"
1817           trigger-on: "{obj:gerrit_verify_triggers}"
1818           projects:
1819             - project-compare-type: ANT
1820               project-pattern: "{project}"
1821               branches:
1822                 - branch-compare-type: ANT
1823                   branch-pattern: "**/{branch}"
1824               file-paths: "{obj:gerrit_trigger_file_paths}"
1825
1826 - job-template:
1827     name: "{project-name}-packer-verify"
1828     id: github-packer-verify
1829     <<: *lf_packer_common
1830     # yamllint disable-line rule:key-duplicates
1831     <<: *lf_packer_verify
1832
1833     #####################
1834     # Job Configuration #
1835     #####################
1836
1837     properties:
1838       - lf-infra-properties:
1839           project: "{project}"
1840           build-days-to-keep: 7
1841       - github:
1842           url: "{github-url}/{github-org}/{project}"
1843
1844     scm:
1845       - lf-infra-github-scm:
1846           url: "{git-clone-url}{github-org}/{project}"
1847           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1848           branch: "$sha1"
1849           submodule-recursive: "{submodule-recursive}"
1850           submodule-timeout: "{submodule-timeout}"
1851           submodule-disable: "{submodule-disable}"
1852           choosing-strategy: default
1853           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1854
1855     triggers:
1856       - github-pull-request:
1857           trigger-phrase: "^(recheck|reverify)$"
1858           only-trigger-phrase: false
1859           status-context: "Packer Verify"
1860           permit-all: true
1861           github-hooks: true
1862           included-regions: "{obj:github_included_regions}"
1863           white-list-target-branches:
1864             - "{branch}"
1865
1866 ################################
1867 # Openstack Update Cloud Image #
1868 ################################
1869
1870 - lf_openstack_cron: &lf_openstack_update_cloud_image
1871     name: lf-openstack-update-cloud-image
1872
1873     ######################
1874     # Default parameters #
1875     ######################
1876
1877     branch: master
1878     build-days-to-keep: 7
1879     build-timeout: 10
1880     cron: "@monthly"
1881     disable-job: false
1882     git-url: "$GIT_URL/$PROJECT"
1883     github-url: "https://github.com"
1884     new-image-name: "all"
1885     openstack-cloud: vex
1886     stream: master
1887     submodule-timeout: 10
1888     submodule-disable: false
1889     update-cloud-image: false
1890
1891     #####################
1892     # Job Configuration #
1893     #####################
1894
1895     project-type: freestyle
1896     node: "{build-node}"
1897     concurrent: false
1898     disabled: "{disable-job}"
1899
1900     properties:
1901       - lf-infra-properties:
1902           build-days-to-keep: "{build-days-to-keep}"
1903
1904     parameters:
1905       - lf-infra-parameters:
1906           project: "{project}"
1907           stream: "{stream}"
1908           branch: "{branch}"
1909       - string:
1910           name: NEW_IMAGE_NAME
1911           default: "{new-image-name}"
1912           description: "Name of cloud image to update in Jenkins"
1913
1914     wrappers:
1915       - lf-infra-wrappers:
1916           build-timeout: "{build-timeout}"
1917           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1918       # Listed after to override openstack-infra-wrappers clouds.yaml definition
1919       - config-file-provider:
1920           files:
1921             - file-id: clouds-yaml
1922               target: "$HOME/.config/openstack/clouds.yaml"
1923             - file-id: npmrc
1924               target: "$HOME/.npmrc"
1925             - file-id: pipconf
1926               target: "$HOME/.config/pip/pip.conf"
1927
1928     builders:
1929       - lf-infra-pre-build
1930       - inject:
1931           properties-content: |
1932             OS_CLOUD={openstack-cloud}
1933       - shell: |
1934           #!/bin/bash
1935           echo "Extract the image type for commit message"
1936           # echo IMAGE_TYPE=${{NEW_IMAGE_NAME% -*}} >> image-type.txt
1937           IMAGE_TYPE=$(echo ${{NEW_IMAGE_NAME}} | tr -d "\'\"\ " | awk -F- '{{ print $2 " " $3 " " $4 }}')
1938           echo IMAGE_TYPE=${{IMAGE_TYPE}} >> image-type.txt
1939           cat image-type.txt
1940       - inject:
1941           properties-file: "image-type.txt"
1942       - lf-infra-update-packer-images
1943       - lf-infra-push-gerrit-patch:
1944           project: "{project}"
1945           gerrit-user: "{gerrit-user}"
1946           gerrit-host: "{gerrit-host}"
1947           gerrit-topic: "{gerrit-topic}"
1948           gerrit-commit-message: "Update cloud image $IMAGE_TYPE"
1949           reviewers-email: "{reviewers-email}"
1950
1951     publishers:
1952       - lf-infra-publish
1953
1954 - job-template:
1955     name: "{project-name}-openstack-update-cloud-image"
1956     id: gerrit-openstack-update-cloud-image
1957     <<: *lf_openstack_update_cloud_image
1958
1959     ######################
1960     # Default parameters #
1961     ######################
1962
1963     git-url: "$GIT_URL/$GERRIT_PROJECT"
1964
1965     #####################
1966     # Job Configuration #
1967     #####################
1968
1969     scm:
1970       - lf-infra-gerrit-scm:
1971           git-url: "{git-url}"
1972           refspec: "$GERRIT_REFSPEC"
1973           branch: "$GERRIT_BRANCH"
1974           submodule-recursive: false
1975           submodule-timeout: "{submodule-timeout}"
1976           submodule-disable: "{submodule-disable}"
1977           choosing-strategy: gerrit
1978           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1979
1980     triggers:
1981       - timed: "{obj:cron}"
1982
1983 #################
1984 # Puppet Verify #
1985 #################
1986
1987 - lf_puppet_verify: &lf_puppet_verify
1988     name: lf-puppet-verify
1989
1990     ######################
1991     # Default parameters #
1992     ######################
1993
1994     branch: master
1995     build-days-to-keep: 7
1996     build-timeout: 15
1997     disable-job: false
1998     git-url: "$GIT_URL/$GERRIT_PROJECT"
1999     github-url: "https://github.com"
2000     parallel: true
2001     puppet-dir: ""
2002     puppet-lint-version: 2.3.6
2003     stream: master
2004     submodule-recursive: true
2005     submodule-timeout: 10
2006     submodule-disable: false
2007
2008     gerrit_trigger_file_paths:
2009       - compare-type: REG_EXP
2010         pattern: ".*"
2011
2012     # github_included_regions MUST match gerrit_trigger_file_paths
2013     github_included_regions:
2014       - ".*"
2015
2016     #####################
2017     # Job Configuration #
2018     #####################
2019
2020     project-type: freestyle
2021     node: "{build-node}"
2022     concurrent: true
2023     disabled: "{disable-job}"
2024
2025     properties:
2026       - lf-infra-properties:
2027           build-days-to-keep: "{build-days-to-keep}"
2028
2029     parameters:
2030       - lf-infra-parameters:
2031           project: "{project}"
2032           branch: "{branch}"
2033           stream: "{stream}"
2034       - lf-puppet-parameters:
2035           puppet-lint-version: "{puppet-lint-version}"
2036
2037     wrappers:
2038       - lf-infra-wrappers:
2039           build-timeout: "{build-timeout}"
2040           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2041
2042     builders:
2043       - shell: !include-raw-escape: ../shell/puppet-lint.sh
2044
2045     publishers:
2046       - lf-infra-publish
2047
2048 - job-template:
2049     name: "{project-name}-puppet-verify"
2050     id: gerrit-puppet-verify
2051     <<: *lf_puppet_verify
2052
2053     ######################
2054     # Default parameters #
2055     ######################
2056
2057     gerrit_verify_triggers:
2058       - patchset-created-event:
2059           exclude-drafts: true
2060           exclude-trivial-rebase: false
2061           exclude-no-code-change: false
2062       - draft-published-event
2063       - comment-added-contains-event:
2064           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
2065
2066     #####################
2067     # Job Configuration #
2068     #####################
2069
2070     scm:
2071       - lf-infra-gerrit-scm:
2072           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2073           git-url: "{git-url}"
2074           refspec: "$GERRIT_REFSPEC"
2075           branch: "$GERRIT_BRANCH"
2076           submodule-recursive: "{submodule-recursive}"
2077           submodule-timeout: "{submodule-timeout}"
2078           submodule-disable: "{submodule-disable}"
2079           choosing-strategy: gerrit
2080
2081     triggers:
2082       - gerrit:
2083           server-name: "{gerrit-server-name}"
2084           trigger-on: "{obj:gerrit_verify_triggers}"
2085           projects:
2086             - project-compare-type: ANT
2087               project-pattern: "{project}"
2088               branches:
2089                 - branch-compare-type: ANT
2090                   branch-pattern: "**/{branch}"
2091               file-paths: "{obj:gerrit_trigger_file_paths}"
2092
2093 - job-template:
2094     name: "{project-name}-puppet-verify"
2095     id: github-puppet-verify
2096     <<: *lf_puppet_verify
2097
2098     #####################
2099     # Job Configuration #
2100     #####################
2101
2102     properties:
2103       - lf-infra-properties:
2104           project: "{project}"
2105           build-days-to-keep: 7
2106       - github:
2107           url: "{github-url}/{github-org}/{project}"
2108
2109     scm:
2110       - lf-infra-github-scm:
2111           url: "{git-clone-url}{github-org}/{project}"
2112           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
2113           branch: "$sha1"
2114           submodule-recursive: "{submodule-recursive}"
2115           submodule-timeout: "{submodule-timeout}"
2116           submodule-disable: "{submodule-disable}"
2117           choosing-strategy: default
2118           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2119
2120     triggers:
2121       - github-pull-request:
2122           trigger-phrase: "^(recheck|reverify)$"
2123           only-trigger-phrase: false
2124           status-context: "Puppet Verify"
2125           permit-all: true
2126           github-hooks: true
2127           included-regions: "{obj:github_included_regions}"
2128           white-list-target-branches:
2129             - "{branch}"
2130
2131 #########
2132 # Sonar #
2133 #########
2134
2135 - lf_sonar_common: &lf_sonar_common
2136     name: lf-sonar-common
2137
2138     ######################
2139     # Default parameters #
2140     ######################
2141
2142     archive-artifacts: >
2143       **/*.log
2144
2145     branch: master # Sonar should always be run on master branch
2146     build-days-to-keep: 7
2147     build-timeout: 60
2148     cron: "H H * * *" # run daily
2149     disable-job: false
2150     git-url: "$GIT_URL/$PROJECT"
2151     github-url: "https://github.com"
2152     stream: master
2153     submodule-recursive: true
2154     submodule-timeout: 10
2155     submodule-disable: false
2156
2157     # Sonar properties
2158     sonar-task: ""
2159     sonar-project-file: "sonar-project.properties"
2160     sonar-properties: ""
2161     sonar-java-opts: ""
2162     sonar-additional-args: ""
2163
2164     gerrit_trigger_file_paths:
2165       - compare-type: REG_EXP
2166         pattern: ".*"
2167
2168     # github_included_regions MUST match gerrit_trigger_file_paths
2169     github_included_regions:
2170       - ".*"
2171
2172     #####################
2173     # Job Configuration #
2174     #####################
2175
2176     project-type: freestyle
2177     node: "{build-node}"
2178
2179     properties:
2180       - lf-infra-properties:
2181           build-days-to-keep: "{build-days-to-keep}"
2182
2183     wrappers:
2184       - lf-infra-wrappers:
2185           build-timeout: "{build-timeout}"
2186           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2187
2188     disabled: "{disable-job}"
2189
2190     parameters:
2191       - lf-infra-parameters:
2192           project: "{project}"
2193           branch: "{branch}"
2194           stream: "{stream}"
2195       - string:
2196           name: ARCHIVE_ARTIFACTS
2197           default: "{archive-artifacts}"
2198           description: Artifacts to archive to the logs server.
2199
2200     publishers:
2201       - lf-infra-publish
2202
2203 - lf_sonar_builders: &lf_sonar_builders
2204     name: lf-sonar-builders
2205     builders:
2206       - lf-infra-pre-build
2207       - lf-infra-sonar:
2208           sonar-task: "{sonar-task}"
2209           sonar-project-file: "{sonar-project-file}"
2210           sonar-properties: "{sonar-properties}"
2211           sonar-java-opts: "{sonar-java-opts}"
2212           sonar-additional-args: "{sonar-additional-args}"
2213
2214 - lf_sonar_builders_prescan: &lf_sonar_builders_prescan
2215     name: lf-sonar-builders-prescan
2216     builders:
2217       - lf-infra-pre-build
2218       - lf-infra-sonar-with-prescan:
2219           sonar-task: "{sonar-task}"
2220           sonar-project-file: "{sonar-project-file}"
2221           sonar-properties: "{sonar-properties}"
2222           sonar-java-opts: "{sonar-java-opts}"
2223           sonar-additional-args: "{sonar-additional-args}"
2224
2225 - lf_sonar_builders_prescan_script: &lf_sonar_builders_prescan_script
2226     name: lf-sonar-builders-prescan-script
2227     builders:
2228       - lf-infra-pre-build
2229       - shell: "{sonar-prescan-script}"
2230       - lf-infra-sonar:
2231           sonar-task: "{sonar-task}"
2232           sonar-project-file: "{sonar-project-file}"
2233           sonar-properties: "{sonar-properties}"
2234           sonar-java-opts: "{sonar-java-opts}"
2235           sonar-additional-args: "{sonar-additional-args}"
2236
2237 - lf_sonar_gerrit_common: &lf_sonar_gerrit_common
2238     name: lf-sonar-gerrit-common
2239     gerrit_sonar_triggers:
2240       - comment-added-contains-event:
2241           comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
2242
2243     scm:
2244       - lf-infra-gerrit-scm:
2245           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2246           git-url: "{git-url}"
2247           refspec: $GERRIT_REFSPEC
2248           branch: $GERRIT_BRANCH
2249           submodule-recursive: "{submodule-recursive}"
2250           submodule-timeout: "{submodule-timeout}"
2251           submodule-disable: "{submodule-disable}"
2252           choosing-strategy: default
2253
2254     triggers:
2255       - timed: "{obj:cron}"
2256       - gerrit:
2257           server-name: "{gerrit-server-name}"
2258           trigger-on: "{obj:gerrit_sonar_triggers}"
2259           projects:
2260             - project-compare-type: "ANT"
2261               project-pattern: "{project}"
2262               branches:
2263                 - branch-compare-type: "ANT"
2264                   branch-pattern: "**/{branch}"
2265               file-paths: "{obj:gerrit_trigger_file_paths}"
2266           skip-vote:
2267             successful: true
2268             failed: true
2269             unstable: true
2270             notbuilt: true
2271
2272 - lf_sonar_github_common: &lf_sonar_github_common
2273     name: lf-sonar-github-common
2274     properties:
2275       - lf-infra-properties:
2276           build-days-to-keep: "{build-days-to-keep}"
2277       - github:
2278           url: "{github-url}/{github-org}/{project}"
2279
2280     scm:
2281       - lf-infra-github-scm:
2282           url: "{git-clone-url}{github-org}/{project}"
2283           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
2284           branch: "$sha1"
2285           submodule-recursive: "{submodule-recursive}"
2286           submodule-timeout: "{submodule-timeout}"
2287           submodule-disable: "{submodule-disable}"
2288           choosing-strategy: default
2289           jenkins-ssh-credential: "{jenkins-ssh-credential}"
2290
2291     triggers:
2292       - github-pull-request:
2293           trigger-phrase: "^run-sonar$"
2294           only-trigger-phrase: false
2295           status-context: "Python Sonar"
2296           permit-all: true
2297           github-hooks: true
2298           white-list-target-branches:
2299             - "{branch}"
2300           included-regions: "{obj:github_included_regions}"
2301
2302 - job-template:
2303     name: "{project-name}-sonar"
2304     id: gerrit-sonar
2305     <<: *lf_sonar_common
2306     # yamllint disable-line rule:key-duplicates
2307     <<: *lf_sonar_builders
2308     # yamllint disable-line rule:key-duplicates
2309     <<: *lf_sonar_gerrit_common
2310
2311 - job-template:
2312     name: "{project-name}-sonar"
2313     id: github-sonar
2314     <<: *lf_sonar_common
2315     # yamllint disable-line rule:key-duplicates
2316     <<: *lf_sonar_builders
2317     # yamllint disable-line rule:key-duplicates
2318     <<: *lf_sonar_github_common
2319
2320 - job-template:
2321     name: "{project-name}-sonar-prescan"
2322     id: gerrit-sonar-prescan
2323     <<: *lf_sonar_common
2324     # yamllint disable-line rule:key-duplicates
2325     <<: *lf_sonar_builders_prescan
2326     # yamllint disable-line rule:key-duplicates
2327     <<: *lf_sonar_gerrit_common
2328
2329 - job-template:
2330     name: "{project-name}-sonar-prescan"
2331     id: github-sonar-prescan
2332     <<: *lf_sonar_common
2333     # yamllint disable-line rule:key-duplicates
2334     <<: *lf_sonar_builders_prescan
2335     # yamllint disable-line rule:key-duplicates
2336     <<: *lf_sonar_github_common
2337
2338 - job-template:
2339     name: "{project-name}-sonar-prescan-script"
2340     id: gerrit-sonar-prescan-script
2341     <<: *lf_sonar_common
2342     # yamllint disable-line rule:key-duplicates
2343     <<: *lf_sonar_builders_prescan_script
2344     # yamllint disable-line rule:key-duplicates
2345     <<: *lf_sonar_gerrit_common
2346
2347 - job-template:
2348     name: "{project-name}-sonar-prescan-script"
2349     id: github-sonar-prescan-script
2350     <<: *lf_sonar_common
2351     # yamllint disable-line rule:key-duplicates
2352     <<: *lf_sonar_builders_prescan_script
2353     # yamllint disable-line rule:key-duplicates
2354     <<: *lf_sonar_github_common
2355
2356 #############
2357 # Pipelines #
2358 #############
2359
2360 - lf_pipelines_common: &lf_pipelines_common
2361     name: lf-pipelines-common
2362
2363     ######################
2364     # Default parameters #
2365     ######################
2366
2367     branch: master
2368     build-timeout: 90
2369     disable-job: false
2370     stream: master
2371     submodule-recursive: true
2372     submodule-timeout: 10
2373     submodule-disable: false
2374
2375 - lf_global_pipelines_common: &lf_global_pipelines_common
2376     name: lf-global-pipelines-common
2377
2378     # All jobs are triggering from the same source
2379     git-url: https://gerrit.linuxfoundation.org/infra/releng/pipelines
2380     triggers:
2381       - gerrit:
2382           server-name: "lf-releng"
2383           trigger-on:
2384             - patchset-created-event:
2385                 exclude-drafts: true
2386                 exclude-trivial-rebase: false
2387                 exclude-no-code-change: false
2388             - draft-published-event
2389             - comment-added-contains-event:
2390                 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
2391           projects:
2392             - project-compare-type: ANT
2393               project-pattern: "releng/pipelines"
2394               branches:
2395                 - branch-compare-type: ANT
2396                   branch-pattern: "**/master"
2397
2398 - job-template:
2399     name: "lf-pipelines-verify"
2400     id: lf-pipelines-verify
2401     <<: *lf_pipelines_common
2402     <<: *lf_global_pipelines_common
2403
2404     project-type: pipeline
2405     pipeline-scm:
2406       scm:
2407         - lf-infra-gerrit-scm:
2408             git-url: "{git-url}"
2409             refspec: "$GERRIT_REFSPEC"
2410             branch: "$GERRIT_BRANCH"
2411             submodule-recursive: "{submodule-recursive}"
2412             submodule-timeout: "{submodule-timeout}"
2413             submodule-disable: "{submodule-disable}"
2414             choosing-strategy: gerrit
2415             jenkins-ssh-credential: "{jenkins-ssh-credential}"
2416     sandbox: true