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