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