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