Disable CLM jobs by default
[releng/global-jjb.git] / jjb / lf-maven-jobs.yaml
1 ---
2 # This file contains job templates for Maven projects.
3
4 - job-group:
5     name: '{project-name}-maven-jobs'
6
7     # This job group contains all the recommended jobs that should be deployed
8     # for any project ci.
9
10     # TODO: Add Maven Merge job to this list once it's been fully tested.
11     jobs:
12       - gerrit-maven-clm
13       - gerrit-maven-merge
14       - gerrit-maven-release
15       - gerrit-maven-verify
16       - gerrit-maven-verify-dependencies
17
18 - job-group:
19     name: '{project-name}-github-maven-jobs'
20
21     # This job group contains all the recommended jobs that should be deployed
22     # for any project ci that is using github.
23
24     # TODO: Add Maven Merge job to this list once it's been fully tested.
25     jobs:
26       - github-maven-clm
27       - github-maven-merge
28       - github-maven-release
29       - github-maven-verify
30
31 - job-group:
32     name: '{project-name}-maven-javadoc-jobs'
33
34     # This job group contains all the recommended jobs that should be deployed
35     # for any project ci.
36
37     jobs:
38       - gerrit-maven-javadoc-publish
39       - gerrit-maven-javadoc-verify
40
41 - job-group:
42     name: '{project-name}-github-maven-javadoc-jobs'
43
44     # This job group contains all the recommended jobs that should be deployed
45     # for any project ci.
46
47     jobs:
48       - github-maven-javadoc-publish
49       - github-maven-javadoc-verify
50
51 ##########
52 # Macros #
53 ##########
54
55 - builder:
56     name: lf-maven-build
57     builders:
58       - inject:
59           properties-content: 'MAVEN_GOALS={mvn-goals}'
60       - shell: !include-raw-escape:
61           - ../shell/common-variables.sh
62           - ../shell/maven-build.sh
63
64 - builder:
65     name: lf-maven-deploy
66     builders:
67       - shell: !include-raw:
68           - ../shell/common-variables.sh
69           - ../shell/maven-deploy.sh
70
71 - builder:
72     name: lf-maven-stage
73     builders:
74       # include-raw-escape fails due to JJB bug
75       - shell: !include-raw:
76           - ../shell/common-variables.sh
77           - ../shell/maven-stage.sh
78
79 - builder:
80     name: lf-update-java-alternatives
81     builders:
82       - inject:
83           # Work around inject plugin overriding our GIT_URL variable incorrectly
84           # https://issues.jenkins-ci.org/browse/JENKINS-49775
85           properties-content: |
86             SET_JDK_VERSION={java-version}
87             GIT_URL="$GIT_URL"
88       - shell: !include-raw-escape: ../shell/update-java-alternatives.sh
89       - inject:
90           properties-file: '/tmp/java.env'
91
92 ####################
93 # COMMON FUNCTIONS #
94 ####################
95
96 - lf_maven_common: &lf_maven_common
97     name: lf-maven-common
98
99     ######################
100     # Default parameters #
101     ######################
102
103     archive-artifacts: >
104       **/*.log
105       **/hs_err_*.log
106       **/target/**/feature.xml
107       **/target/failsafe-reports/failsafe-summary.xml
108       **/target/surefire-reports/*-output.txt
109
110     #####################
111     # Job Configuration #
112     #####################
113
114     project-type: freestyle
115     node: '{build-node}'
116
117     properties:
118       - lf-infra-properties:
119           build-days-to-keep: '{build-days-to-keep}'
120
121     parameters:
122       - lf-infra-parameters:
123           project: '{project}'
124           branch: '{branch}'
125           stream: '{stream}'
126           lftools-version: '{lftools-version}'
127       - lf-infra-maven-parameters:
128           mvn-opts: '{mvn-opts}'
129           mvn-params: '{mvn-params}'
130           mvn-version: '{mvn-version}'
131           # Staging repos do not make sense for CLM jobs so set it blank.
132           staging-profile-id: '{staging-profile-id}'
133       - string:
134           name: ARCHIVE_ARTIFACTS
135           default: '{archive-artifacts}'
136           description: Artifacts to archive to the logs server.
137
138     wrappers:
139       - lf-infra-wrappers:
140           build-timeout: '{build-timeout}'
141           jenkins-ssh-credential: '{jenkins-ssh-credential}'
142
143     publishers:
144       # TODO: Make email notification work.
145       # - lf-infra-email-notify:
146       #     email-recipients: '{email-recipients}'
147       #     email-prefix: '[releng]'
148       - lf-infra-publish
149
150 #############
151 # Maven CLM #
152 #############
153
154 - lf_maven_clm: &lf_maven_clm
155     name: lf-maven-clm
156
157     ######################
158     # Default parameters #
159     ######################
160
161     branch: master
162     build-days-to-keep: 30  # 30 days for troubleshooting purposes
163     build-timeout: 60
164     git-url: '$GIT_URL/$PROJECT'
165     github-url: 'https://github.com'
166     java-version: openjdk8
167     mvn-global-settings: global-settings
168     mvn-opts: ''
169     mvn-params: ''
170     mvn-version: mvn35
171     nexus-iq-stage: 'build'
172     staging-profile-id: ''  # Unused in this job
173     stream: master
174     submodule-recursive: true
175
176     nexus_iq_scan_patterns:
177       - '**/*.ear'
178       - '**/*.jar'
179       - '**/*.tar.gz'
180       - '**/*.war'
181       - '**/*.zip'
182
183     gerrit_clm_triggers:
184       - comment-added-contains-event:
185           comment-contains-value: run-clm$
186
187     parameters:
188       - lf-infra-parameters:
189           project: '{project}'
190           branch: '{branch}'
191           stream: '{stream}'
192           lftools-version: '{lftools-version}'
193       - lf-infra-maven-parameters:
194           mvn-opts: '{mvn-opts}'
195           mvn-params: '{mvn-params}'
196           mvn-version: '{mvn-version}'
197           # Staging repos do not make sense for CLM jobs so set it blank.
198           staging-profile-id: '{staging-profile-id}'
199       - string:
200           name: ARCHIVE_ARTIFACTS
201           default: '{archive-artifacts}'
202           description: Artifacts to archive to the logs server.
203       - lf-clm-parameters:
204           nexus-iq-stage: '{nexus-iq-stage}'
205
206     #####################
207     # Job Configuration #
208     #####################
209
210     builders:
211       - lf-maven-install:
212           mvn-version: '{mvn-version}'
213       - lf-update-java-alternatives:
214           java-version: '{java-version}'
215       - lf-provide-maven-settings:
216           global-settings-file: '{mvn-global-settings}'
217           settings-file: '{mvn-settings}'
218       - shell: !include-raw-escape:
219           - ../shell/common-variables.sh
220           - ../shell/sonatype-clm.sh
221       - lf-provide-maven-settings-cleanup
222       - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
223       - nexus-iq-policy-evaluator:
224           stage: '{nexus-iq-stage}'
225           application-type: 'manual'
226           application-id: '{project-name}'
227           scan-patterns: '{obj:nexus_iq_scan_patterns}'
228           fail-build-network-error: true
229
230 - job-template:
231     name: '{project-name}-maven-clm-{stream}'
232     id: gerrit-maven-clm
233     <<: *lf_maven_common
234     # yamllint disable-line rule:key-duplicates
235     <<: *lf_maven_clm
236
237     disabled: true
238     scm:
239       - lf-infra-gerrit-scm:
240           jenkins-ssh-credential: '{jenkins-ssh-credential}'
241           git-url: '{git-url}'
242           refspec: '$GERRIT_REFSPEC'
243           branch: '$GERRIT_BRANCH'
244           submodule-recursive: '{submodule-recursive}'
245           choosing-strategy: default
246
247     triggers:
248       # Build weekly on Saturdays
249       - timed: 'H H * * 6'
250       - gerrit:
251           server-name: '{gerrit-server-name}'
252           trigger-on: '{obj:gerrit_clm_triggers}'
253           projects:
254             - project-compare-type: ANT
255               project-pattern: '{project}'
256               branches:
257                 - branch-compare-type: ANT
258                   branch-pattern: '**/{branch}'
259           skip-vote:
260             successful: true
261             failed: true
262             unstable: true
263             notbuilt: true
264
265 - job-template:
266     name: '{project-name}-maven-clm-{stream}'
267     id: github-maven-clm
268     <<: *lf_maven_common
269     # yamllint disable-line rule:key-duplicates
270     <<: *lf_maven_clm
271
272     disabled: true
273     properties:
274       - lf-infra-properties:
275           build-days-to-keep: '{build-days-to-keep}'
276       - github:
277           url: '{github-url}/{github-org}/{project}'
278
279     scm:
280       - lf-infra-github-scm:
281           url: '{git-clone-url}{github-org}/{project}'
282           refspec: ''
283           branch: 'refs/heads/{branch}'
284           submodule-recursive: '{submodule-recursive}'
285           choosing-strategy: default
286           jenkins-ssh-credential: '{jenkins-ssh-credential}'
287
288     triggers:
289       # Build weekly on Saturdays
290       - timed: 'H H * * 6'
291       - github-pull-request:
292           trigger-phrase: '^run-clm$'
293           only-trigger-phrase: true
294           status-context: 'CLM'
295           permit-all: true
296           github-hooks: true
297           org-list:
298             - '{github-org}'
299           white-list: '{obj:github_pr_whitelist}'
300           admin-list: '{obj:github_pr_admin_list}'
301           white-list-target-branches:
302             - '{branch}'
303
304 #########################
305 # Maven Javadoc Publish #
306 #########################
307
308 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
309     name: lf-maven-javadoc-publish
310
311     ######################
312     # Default parameters #
313     ######################
314
315     branch: master
316     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
317     build-timeout: 60
318     git-url: '$GIT_URL/$PROJECT'
319     github-url: 'https://github.com'
320     java-version: openjdk8
321     mvn-global-settings: global-settings
322     mvn-opts: ''
323     mvn-params: ''
324     mvn-version: mvn35
325     staging-profile-id: ''  # Unused by the javadoc jobs
326     stream: master
327     submodule-recursive: true
328
329     gerrit_merge_triggers:
330       - change-merged-event
331       - comment-added-contains-event:
332           comment-contains-value: remerge$
333
334     #####################
335     # Job Configuration #
336     #####################
337
338     builders:
339       - lf-maven-install:
340           mvn-version: '{mvn-version}'
341       - lf-update-java-alternatives:
342           java-version: '{java-version}'
343       - lf-provide-maven-settings:
344           global-settings-file: '{mvn-global-settings}'
345           settings-file: '{mvn-settings}'
346       - lf-infra-create-netrc:
347           server-id: '{mvn-site-id}'
348       - inject:
349           properties-content: 'DEPLOY_PATH={javadoc-path}'
350       - shell: !include-raw-escape:
351           - ../shell/common-variables.sh
352           - ../shell/maven-javadoc-generate.sh
353           - ../shell/lftools-install.sh
354           - ../shell/maven-javadoc-publish.sh
355       - lf-provide-maven-settings-cleanup
356
357 - job-template:
358     name: '{project-name}-maven-javadoc-publish-{stream}'
359     id: gerrit-maven-javadoc-publish
360     <<: *lf_maven_common
361     # yamllint disable-line rule:key-duplicates
362     <<: *lf_maven_javadoc_publish
363
364     git-url: '$GIT_URL/$GERRIT_PROJECT'
365
366     scm:
367       - lf-infra-gerrit-scm:
368           git-url: '{git-url}'
369           refspec: ''
370           branch: '{branch}'
371           submodule-recursive: '{submodule-recursive}'
372           choosing-strategy: default
373           jenkins-ssh-credential: '{jenkins-ssh-credential}'
374
375     triggers:
376       - gerrit:
377           server-name: '{gerrit-server-name}'
378           trigger-on: '{obj:gerrit_merge_triggers}'
379           projects:
380             - project-compare-type: ANT
381               project-pattern: '{project}'
382               branches:
383                 - branch-compare-type: ANT
384                   branch-pattern: '**/{branch}'
385
386 - job-template:
387     name: '{project-name}-maven-javadoc-publish-{stream}'
388     id: github-maven-javadoc-publish
389     <<: *lf_maven_common
390     # yamllint disable-line rule:key-duplicates
391     <<: *lf_maven_javadoc_publish
392
393     properties:
394       - lf-infra-properties:
395           build-days-to-keep: '{build-days-to-keep}'
396       - github:
397           url: '{github-url}/{github-org}/{project}'
398
399     scm:
400       - lf-infra-github-scm:
401           url: '{git-clone-url}{github-org}/{project}'
402           refspec: ''
403           branch: '{branch}'
404           submodule-recursive: '{submodule-recursive}'
405           choosing-strategy: default
406           jenkins-ssh-credential: '{jenkins-ssh-credential}'
407
408     triggers:
409       - github
410       - pollscm:
411           cron: ''
412       - github-pull-request:
413           trigger-phrase: '^remerge$'
414           only-trigger-phrase: true
415           status-context: 'Maven Javadoc Publish'
416           permit-all: false
417           github-hooks: true
418           org-list:
419             - '{github-org}'
420           white-list: '{obj:github_pr_whitelist}'
421           admin-list: '{obj:github_pr_admin_list}'
422           white-list-target-branches:
423             - '{branch}'
424
425 ########################
426 # Maven Javadoc Verify #
427 ########################
428
429 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
430     name: lf-maven-javadoc-verify
431
432     ######################
433     # Default parameters #
434     ######################
435
436     branch: master
437     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
438     build-timeout: 60
439     git-url: '$GIT_URL/$PROJECT'
440     github-url: 'https://github.com'
441     java-version: openjdk8
442     mvn-global-settings: global-settings
443     mvn-opts: ''
444     mvn-params: ''
445     mvn-version: mvn35
446     staging-profile-id: ''  # Unused by the javadoc jobs
447     stream: master
448     submodule-recursive: true
449
450     gerrit_verify_triggers:
451       - patchset-created-event:
452           exclude-drafts: true
453           exclude-trivial-rebase: false
454           exclude-no-code-change: false
455       - draft-published-event
456       - comment-added-contains-event:
457           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
458
459     #####################
460     # Job Configuration #
461     #####################
462
463     concurrent: true
464
465     builders:
466       - lf-maven-install:
467           mvn-version: '{mvn-version}'
468       - lf-update-java-alternatives:
469           java-version: '{java-version}'
470       - lf-provide-maven-settings:
471           global-settings-file: '{mvn-global-settings}'
472           settings-file: '{mvn-settings}'
473       - shell: !include-raw-escape:
474           - ../shell/common-variables.sh
475           - ../shell/maven-javadoc-generate.sh
476       - lf-provide-maven-settings-cleanup
477
478 - job-template:
479     name: '{project-name}-maven-javadoc-verify-{stream}'
480     id: gerrit-maven-javadoc-verify
481     <<: *lf_maven_common
482     # yamllint disable-line rule:key-duplicates
483     <<: *lf_maven_javadoc_verify
484
485     scm:
486       - lf-infra-gerrit-scm:
487           jenkins-ssh-credential: '{jenkins-ssh-credential}'
488           git-url: '{git-url}'
489           refspec: '$GERRIT_REFSPEC'
490           branch: '$GERRIT_BRANCH'
491           submodule-recursive: '{submodule-recursive}'
492           choosing-strategy: gerrit
493
494     triggers:
495       - gerrit:
496           server-name: '{gerrit-server-name}'
497           trigger-on: '{obj:gerrit_verify_triggers}'
498           projects:
499             - project-compare-type: ANT
500               project-pattern: '{project}'
501               branches:
502                 - branch-compare-type: ANT
503                   branch-pattern: '**/{branch}'
504
505 - job-template:
506     name: '{project-name}-maven-javadoc-verify-{stream}'
507     id: github-maven-javadoc-verify
508     <<: *lf_maven_common
509     # yamllint disable-line rule:key-duplicates
510     <<: *lf_maven_javadoc_verify
511
512     properties:
513       - lf-infra-properties:
514           build-days-to-keep: '{build-days-to-keep}'
515       - github:
516           url: '{github-url}/{github-org}/{project}'
517
518     scm:
519       - lf-infra-github-scm:
520           url: '{git-clone-url}{github-org}/{project}'
521           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
522           branch: '$sha1'
523           submodule-recursive: '{submodule-recursive}'
524           choosing-strategy: default
525           jenkins-ssh-credential: '{jenkins-ssh-credential}'
526
527     triggers:
528       - github-pull-request:
529           trigger-phrase: ^(recheck|reverify)$
530           only-trigger-phrase: false
531           status-context: 'Maven Javadoc Verify'
532           permit-all: true
533           github-hooks: true
534           white-list-target-branches:
535             - '{branch}'
536
537 ###############
538 # Maven Merge #
539 ###############
540
541 - lf_maven_merge: &lf_maven_merge
542     name: lf-maven-merge
543
544     ######################
545     # Default parameters #
546     ######################
547
548     branch: master
549     build-days-to-keep: 30  # 30 days in case we need to troubleshoot
550     build-timeout: 60
551     cron: 'H H * * 0'  # push fresh snapshot weekly
552     git-url: '$GIT_URL/$PROJECT'
553     github-url: 'https://github.com'
554     java-version: openjdk8
555     mvn-global-settings: global-settings
556     mvn-goals: clean deploy
557     mvn-opts: ''
558     mvn-params: '-Dmerge'
559     mvn-version: mvn35
560     nexus-cut-dirs: 6  # Number of dirs in the Nexus path to remove for wget -r.
561     staging-profile-id: ''  # Unused by this job.
562     stream: master
563     submodule-recursive: true
564
565     gerrit_merge_triggers:
566       - change-merged-event
567       - comment-added-contains-event:
568           comment-contains-value: remerge$
569
570     gerrit_trigger_file_paths:
571       - compare-type: REG_EXP
572         pattern: '.*'
573
574     # github_included_regions MUST match gerrit_trigger_file_paths
575     github_included_regions:
576       - '.*'
577
578     post_build_trigger: ''
579
580     #####################
581     # Job Configuration #
582     #####################
583
584     builders:
585       - lf-jacoco-nojava-workaround
586       - lf-maven-install:
587           mvn-version: '{mvn-version}'
588       - lf-update-java-alternatives:
589           java-version: '{java-version}'
590       - lf-provide-maven-settings:
591           global-settings-file: '{mvn-global-settings}'
592           settings-file: '{mvn-settings}'
593       - lf-infra-create-netrc:
594           server-id: '{mvn-snapshot-id}'
595       - inject:
596           properties-content: |
597               NEXUS_CUT_DIRS={nexus-cut-dirs}
598               NEXUS_REPO={nexus-snapshot-repo}
599       - shell: !include-raw-escape:
600           - ../shell/lftools-install.sh
601           - ../shell/maven-fetch-metadata.sh
602       - lf-maven-build:
603           mvn-goals: '{mvn-goals}'
604       - lf-maven-deploy
605       - lf-provide-maven-settings-cleanup
606
607     publishers:
608       - findbugs
609       - lf-jacoco-report
610       - lf-infra-publish
611       - trigger-parameterized-builds: '{obj:post_build_trigger}'
612
613 - job-template:
614     name: '{project-name}-maven-merge-{stream}'
615     id: gerrit-maven-merge
616     <<: *lf_maven_common
617     # yamllint disable-line rule:key-duplicates
618     <<: *lf_maven_merge
619
620     scm:
621       - lf-infra-gerrit-scm:
622           jenkins-ssh-credential: '{jenkins-ssh-credential}'
623           git-url: '{git-url}'
624           refspec: '$GERRIT_REFSPEC'
625           branch: '$GERRIT_BRANCH'
626           submodule-recursive: '{submodule-recursive}'
627           choosing-strategy: default
628
629     triggers:
630       - timed: '{obj:cron}'
631       - gerrit:
632           server-name: '{gerrit-server-name}'
633           trigger-on: '{obj:gerrit_merge_triggers}'
634           projects:
635             - project-compare-type: ANT
636               project-pattern: '{project}'
637               branches:
638                 - branch-compare-type: ANT
639                   branch-pattern: '**/{branch}'
640               file-paths: '{obj:gerrit_trigger_file_paths}'
641
642 - job-template:
643     name: '{project-name}-maven-merge-{stream}'
644     id: github-maven-merge
645     <<: *lf_maven_common
646     # yamllint disable-line rule:key-duplicates
647     <<: *lf_maven_merge
648
649     properties:
650       - lf-infra-properties:
651           build-days-to-keep: '{build-days-to-keep}'
652       - github:
653           url: '{github-url}/{github-org}/{project}'
654
655     scm:
656       - lf-infra-github-scm:
657           url: '{git-clone-url}{github-org}/{project}'
658           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
659           branch: '{branch}'
660           submodule-recursive: '{submodule-recursive}'
661           choosing-strategy: default
662           jenkins-ssh-credential: '{jenkins-ssh-credential}'
663
664     triggers:
665       - github
666       - pollscm:
667           cron: ''
668       - github-pull-request:
669           trigger-phrase: '^remerge$'
670           only-trigger-phrase: true
671           status-context: 'Maven Merge'
672           permit-all: false
673           github-hooks: true
674           org-list:
675             - '{github-org}'
676           white-list: '{obj:github_pr_whitelist}'
677           admin-list: '{obj:github_pr_admin_list}'
678           white-list-target-branches:
679             - '{branch}'
680           included-regions: '{obj:github_included_regions}'
681
682 #################
683 # Maven Release #
684 #################
685
686 - lf_maven_release: &lf_maven_release
687     name: lf-maven-release
688
689     ######################
690     # Default parameters #
691     ######################
692
693     branch: master
694     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
695     build-timeout: 60
696     cron: ''
697     git-url: '$GIT_URL/$PROJECT'
698     github-url: 'https://github.com'
699     java-version: openjdk8
700     mvn-global-settings: global-settings
701     mvn-goals: clean deploy
702     mvn-opts: ''
703     mvn-params: ''
704     mvn-version: mvn35
705     stream: master
706     submodule-recursive: true
707
708     gerrit_release_triggers:
709       - comment-added-contains-event:
710           comment-contains-value: build release$
711
712     #####################
713     # Job Configuration #
714     #####################
715
716     builders:
717       - lf-jacoco-nojava-workaround
718       - lf-maven-install:
719           mvn-version: '{mvn-version}'
720       - lf-update-java-alternatives:
721           java-version: '{java-version}'
722       - lf-provide-maven-settings:
723           global-settings-file: '{mvn-global-settings}'
724           settings-file: '{mvn-settings}'
725       - lf-infra-create-netrc:
726           server-id: '{mvn-staging-id}'
727       - shell: !include-raw-escape:
728           - ../shell/lftools-install.sh
729           - ../shell/maven-patch-release.sh
730       - lf-maven-build:
731           mvn-goals: '{mvn-goals}'
732       - lf-maven-stage
733       - lf-provide-maven-settings-cleanup
734
735 - job-template:
736     name: '{project-name}-maven-release-{stream}'
737     id: gerrit-maven-release
738     <<: *lf_maven_common
739     # yamllint disable-line rule:key-duplicates
740     <<: *lf_maven_release
741
742     scm:
743       - lf-infra-gerrit-scm:
744           jenkins-ssh-credential: '{jenkins-ssh-credential}'
745           git-url: '{git-url}'
746           refspec: '$GERRIT_REFSPEC'
747           branch: '$GERRIT_BRANCH'
748           submodule-recursive: '{submodule-recursive}'
749           choosing-strategy: default
750
751     triggers:
752       - timed: '{obj:cron}'
753       - gerrit:
754           server-name: '{gerrit-server-name}'
755           trigger-on: '{obj:gerrit_release_triggers}'
756           projects:
757             - project-compare-type: ANT
758               project-pattern: '{project}'
759               branches:
760                 - branch-compare-type: ANT
761                   branch-pattern: '**/{branch}'
762
763 - job-template:
764     name: '{project-name}-maven-release-{stream}'
765     id: github-maven-release
766     <<: *lf_maven_common
767     # yamllint disable-line rule:key-duplicates
768     <<: *lf_maven_release
769
770     properties:
771       - lf-infra-properties:
772           build-days-to-keep: '{build-days-to-keep}'
773       - github:
774           url: '{github-url}/{github-org}/{project}'
775
776     scm:
777       - lf-infra-github-scm:
778           url: '{git-clone-url}{github-org}/{project}'
779           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
780           branch: '{branch}'
781           submodule-recursive: '{submodule-recursive}'
782           choosing-strategy: default
783           jenkins-ssh-credential: '{jenkins-ssh-credential}'
784
785     triggers:
786       - timed: '{obj:cron}'
787       - github-pull-request:
788           trigger-phrase: '^build release$'
789           only-trigger-phrase: true
790           status-context: 'Maven Release'
791           permit-all: true
792           github-hooks: true
793           white-list-target-branches:
794             - '{branch}'
795
796 ###############
797 # Maven Sonar #
798 ###############
799
800 - lf_maven_sonar: &lf_maven_sonar
801     name: lf-maven-sonar
802
803     ######################
804     # Default parameters #
805     ######################
806
807     branch: master  # Sonar should always be run on master branch
808     build-days-to-keep: 7
809     build-timeout: 60
810     cron: 'H H * * 6'  # run weekly
811     git-url: '$GIT_URL/$PROJECT'
812     github-url: 'https://github.com'
813     java-version: openjdk8
814     mvn-global-settings: global-settings
815     mvn-opts: ''
816     mvn-params: ''
817     mvn-version: mvn35
818     sonar-mvn-goal: 'sonar:sonar'
819     staging-profile-id: ''  # Unused in this job
820     stream: master
821     submodule-recursive: true
822
823     gerrit_sonar_triggers:
824       - comment-added-contains-event:
825           comment-contains-value: run-sonar$
826
827     #####################
828     # Job Configuration #
829     #####################
830
831     parameters:
832       - lf-infra-parameters:
833           project: '{project}'
834           branch: '{branch}'
835           stream: '{stream}'
836           lftools-version: '{lftools-version}'
837       - lf-infra-maven-parameters:
838           mvn-opts: '{mvn-opts}'
839           mvn-params: '{mvn-params}'
840           mvn-version: '{mvn-version}'
841           # Staging repos do not make sense for Sonar jobs so set it blank.
842           staging-profile-id: ''
843       - string:
844           name: ARCHIVE_ARTIFACTS
845           default: '{archive-artifacts}'
846           description: Artifacts to archive to the logs server.
847       - string:
848           name: SONAR_MAVEN_GOAL
849           default: '{sonar-mvn-goal}'
850           description: |
851               Maven goals to pass to the Sonar call. Typically sonar:sonar
852               however to use a specific version of the sonar-maven-plugin we
853               can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
854
855     triggers:
856       - timed: '{obj:cron}'
857       - gerrit:
858           server-name: '{gerrit-server-name}'
859           trigger-on: '{obj:gerrit_sonar_triggers}'
860           projects:
861             - project-compare-type: 'ANT'
862               project-pattern: '{project}'
863               branches:
864                 - branch-compare-type: 'ANT'
865                   branch-pattern: '**/master'
866           skip-vote:
867             successful: true
868             failed: true
869             unstable: true
870             notbuilt: true
871
872     builders:
873       - lf-infra-maven-sonar:
874           java-version: '{java-version}'
875           mvn-settings: '{mvn-settings}'
876           mvn-version: '{mvn-version}'
877
878     publishers:
879       - lf-jacoco-report
880       - findbugs
881       - lf-infra-publish
882
883 - builder:
884     name: lf-infra-maven-sonar
885     # Run a Sonar build with Maven
886     builders:
887       - lf-maven-install:
888           mvn-version: '{mvn-version}'
889       - lf-update-java-alternatives:
890           java-version: '{java-version}'
891       - inject:
892           # Switch this to the sonar wrapper when JJB 2.0 is available
893           properties-content: SONAR_HOST_URL=$SONAR_URL
894       - lf-provide-maven-settings:
895           global-settings-file: global-settings
896           settings-file: '{mvn-settings}'
897       - shell: !include-raw-escape:
898           - ../shell/common-variables.sh
899           - ../shell/maven-sonar.sh
900       - lf-provide-maven-settings-cleanup
901
902 - job-template:
903     name: '{project-name}-sonar'
904     id: gerrit-maven-sonar
905     <<: *lf_maven_common
906     # yamllint disable-line rule:key-duplicates
907     <<: *lf_maven_sonar
908
909     scm:
910       - lf-infra-gerrit-scm:
911           jenkins-ssh-credential: '{jenkins-ssh-credential}'
912           git-url: '{git-url}'
913           refspec: $GERRIT_REFSPEC
914           branch: $GERRIT_BRANCH
915           submodule-recursive: '{submodule-recursive}'
916           choosing-strategy: default
917
918 - job-template:
919     name: '{project-name}-sonar'
920     id: github-maven-sonar
921     <<: *lf_maven_common
922     # yamllint disable-line rule:key-duplicates
923     <<: *lf_maven_sonar
924
925     properties:
926       - lf-infra-properties:
927           build-days-to-keep: '{build-days-to-keep}'
928       - github:
929           url: '{github-url}/{github-org}/{project}'
930
931     scm:
932       - lf-infra-github-scm:
933           url: '{git-clone-url}{github-org}/{project}'
934           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
935           branch: '$sha1'
936           submodule-recursive: '{submodule-recursive}'
937           choosing-strategy: default
938           jenkins-ssh-credential: '{jenkins-ssh-credential}'
939
940     triggers:
941       - github-pull-request:
942           trigger-phrase: '^run-sonar$'
943           only-trigger-phrase: false
944           status-context: 'Maven Sonar'
945           permit-all: true
946           github-hooks: true
947           white-list-target-branches:
948             - '{branch}'
949
950 ################
951 # Maven Verify #
952 ################
953
954 - lf_maven_verify: &lf_maven_verify
955     name: lf-maven-verify
956
957     ######################
958     # Default parameters #
959     ######################
960
961     branch: master
962     build-days-to-keep: 7
963     build-timeout: 60
964     git-url: '$GIT_URL/$PROJECT'
965     github-url: 'https://github.com'
966     java-version: openjdk8
967     mvn-global-settings: global-settings
968     mvn-goals: clean deploy
969     mvn-opts: ''
970     mvn-params: '-Dstream=$STREAM'
971     mvn-version: mvn35
972     staging-profile-id: ''  # Unused in this job
973     stream: master
974     submodule-recursive: true
975
976     gerrit_verify_triggers:
977       - patchset-created-event:
978           exclude-drafts: true
979           exclude-trivial-rebase: false
980           exclude-no-code-change: false
981       - draft-published-event
982       - comment-added-contains-event:
983           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
984
985     gerrit_trigger_file_paths:
986       - compare-type: REG_EXP
987         pattern: '.*'
988
989     # github_included_regions MUST match gerrit_trigger_file_paths
990     github_included_regions:
991       - '.*'
992
993     #####################
994     # Job Configuration #
995     #####################
996
997     concurrent: true
998
999     builders:
1000       - lf-jacoco-nojava-workaround
1001       - lf-maven-install:
1002           mvn-version: '{mvn-version}'
1003       - lf-update-java-alternatives:
1004           java-version: '{java-version}'
1005       - lf-provide-maven-settings:
1006           global-settings-file: '{mvn-global-settings}'
1007           settings-file: '{mvn-settings}'
1008       - shell: !include-raw-escape:
1009           - ../shell/lftools-install.sh
1010       - lf-maven-build:
1011           mvn-goals: '{mvn-goals}'
1012       - lf-provide-maven-settings-cleanup
1013
1014     publishers:
1015       - findbugs
1016       - lf-jacoco-report
1017       - lf-infra-publish
1018
1019 - job-template:
1020     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1021     id: gerrit-maven-verify
1022     <<: *lf_maven_common
1023     # yamllint disable-line rule:key-duplicates
1024     <<: *lf_maven_verify
1025
1026     scm:
1027       - lf-infra-gerrit-scm:
1028           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1029           git-url: '{git-url}'
1030           refspec: '$GERRIT_REFSPEC'
1031           branch: '$GERRIT_BRANCH'
1032           submodule-recursive: '{submodule-recursive}'
1033           choosing-strategy: gerrit
1034
1035     triggers:
1036       - gerrit:
1037           server-name: '{gerrit-server-name}'
1038           trigger-on: '{obj:gerrit_verify_triggers}'
1039           projects:
1040             - project-compare-type: ANT
1041               project-pattern: '{project}'
1042               branches:
1043                 - branch-compare-type: ANT
1044                   branch-pattern: '**/{branch}'
1045               file-paths: '{obj:gerrit_trigger_file_paths}'
1046
1047 - job-template:
1048     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1049     id: github-maven-verify
1050     <<: *lf_maven_common
1051     # yamllint disable-line rule:key-duplicates
1052     <<: *lf_maven_verify
1053
1054     properties:
1055       - lf-infra-properties:
1056           build-days-to-keep: '{build-days-to-keep}'
1057       - github:
1058           url: '{github-url}/{github-org}/{project}'
1059
1060     scm:
1061       - lf-infra-github-scm:
1062           url: '{git-clone-url}{github-org}/{project}'
1063           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1064           branch: '$sha1'
1065           submodule-recursive: '{submodule-recursive}'
1066           choosing-strategy: default
1067           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1068
1069     triggers:
1070       - github-pull-request:
1071           trigger-phrase: '^(recheck|reverify)$'
1072           only-trigger-phrase: false
1073           status-context: 'Maven Verify'
1074           permit-all: true
1075           github-hooks: true
1076           white-list-target-branches:
1077             - '{branch}'
1078           included-regions: '{obj:github_included_regions}'
1079
1080 #############################
1081 # Maven Verify Dependencies #
1082 #############################
1083
1084 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
1085     name: lf-maven-verify-dependencies
1086
1087     ######################
1088     # Default parameters #
1089     ######################
1090
1091     branch: master
1092     build-days-to-keep: 7
1093     build-timeout: 60
1094     git-url: '$GIT_URL/$PROJECT'
1095     github-url: 'https://github.com'
1096     java-version: openjdk8
1097     mvn-global-settings: global-settings
1098     mvn-goals: clean deploy
1099     mvn-opts: ''
1100     mvn-params: '-Dstream=$STREAM'
1101     mvn-version: mvn35
1102     staging-profile-id: ''  # Unused by this job
1103     stream: master
1104     submodule-recursive: true
1105
1106     gerrit_verify_triggers:
1107       - comment-added-contains-event:
1108           comment-contains-value: 'recheck: [0-9 ]+'
1109     gerrit_trigger_file_paths:
1110       - compare-type: ANT
1111         pattern: '**'
1112
1113     #####################
1114     # Job Configuration #
1115     #####################
1116
1117     concurrent: true
1118
1119     builders:
1120       - lf-jacoco-nojava-workaround
1121       - lf-maven-install:
1122           mvn-version: '{mvn-version}'
1123       - lf-update-java-alternatives:
1124           java-version: '{java-version}'
1125       - lf-provide-maven-settings:
1126           global-settings-file: '{mvn-global-settings}'
1127           settings-file: '{mvn-settings}'
1128       - lf-fetch-dependent-patches
1129       - shell: !include-raw-escape:
1130           - ../shell/common-variables.sh
1131           - ../shell/maven-build-deps.sh
1132       - lf-maven-build:
1133           mvn-goals: '{mvn-goals}'
1134       - lf-provide-maven-settings-cleanup
1135
1136     publishers:
1137       - findbugs
1138       - lf-jacoco-report
1139       - lf-infra-publish
1140
1141 - job-template:
1142     name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1143     id: gerrit-maven-verify-dependencies
1144     <<: *lf_maven_common
1145     # yamllint disable-line rule:key-duplicates
1146     <<: *lf_maven_verify_dependencies
1147
1148     scm:
1149       - lf-infra-gerrit-scm:
1150           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1151           git-url: '{git-url}'
1152           refspec: '$GERRIT_REFSPEC'
1153           branch: '$GERRIT_BRANCH'
1154           submodule-recursive: '{submodule-recursive}'
1155           choosing-strategy: gerrit
1156
1157     triggers:
1158       - gerrit:
1159           server-name: '{gerrit-server-name}'
1160           trigger-on: '{obj:gerrit_verify_triggers}'
1161           projects:
1162             - project-compare-type: ANT
1163               project-pattern: '{project}'
1164               branches:
1165                 - branch-compare-type: ANT
1166                   branch-pattern: '**/{branch}'
1167               file-paths: '{obj:gerrit_trigger_file_paths}'