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