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