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