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