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