Update rtd jobs to use lf-infra-pre-build
[releng/global-jjb.git] / jjb / lf-maven-jobs.yaml
1 ---
2 # This file contains job templates for Maven projects.
3
4 - job-group:
5     name: '{project-name}-maven-jobs'
6
7     # This job group contains all the recommended jobs that should be deployed
8     # for any project ci.
9
10     # TODO: Add Maven Merge job to this list once it's been fully tested.
11     jobs:
12       - gerrit-maven-clm
13       - gerrit-maven-merge
14       - gerrit-maven-stage
15       - gerrit-maven-verify
16       - gerrit-maven-verify-dependencies
17
18 - job-group:
19     name: '{project-name}-github-maven-jobs'
20
21     # This job group contains all the recommended jobs that should be deployed
22     # for any project ci that is using github.
23
24     # TODO: Add Maven Merge job to this list once it's been fully tested.
25     jobs:
26       - github-maven-clm
27       - github-maven-merge
28       - github-maven-stage
29       - github-maven-verify
30
31 - job-group:
32     name: '{project-name}-maven-javadoc-jobs'
33
34     # This job group contains all the recommended jobs that should be deployed
35     # for any project ci.
36
37     jobs:
38       - gerrit-maven-javadoc-publish
39       - gerrit-maven-javadoc-verify
40
41 - job-group:
42     name: '{project-name}-github-maven-javadoc-jobs'
43
44     # This job group contains all the recommended jobs that should be deployed
45     # for any project ci.
46
47     jobs:
48       - github-maven-javadoc-publish
49       - github-maven-javadoc-verify
50
51 ##########
52 # Macros #
53 ##########
54
55 - builder:
56     name: lf-maven-build
57     builders:
58       - inject:
59           properties-content: 'MAVEN_GOALS={mvn-goals}'
60       - shell: !include-raw-escape:
61           - ../shell/common-variables.sh
62           - ../shell/maven-build.sh
63
64 - builder:
65     name: lf-maven-deploy
66     builders:
67       - shell: !include-raw:
68           - ../shell/common-variables.sh
69           - ../shell/maven-deploy.sh
70
71 - builder:
72     name: lf-maven-stage
73     builders:
74       # include-raw-escape fails due to JJB bug
75       - shell: !include-raw: ../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-infra-pre-build
741       - lf-jacoco-nojava-workaround
742       - lf-maven-install:
743           mvn-version: '{mvn-version}'
744       - lf-update-java-alternatives:
745           java-version: '{java-version}'
746       - lf-provide-maven-settings:
747           global-settings-file: '{mvn-global-settings}'
748           settings-file: '{mvn-settings}'
749       - lf-infra-create-netrc:
750           server-id: '{mvn-staging-id}'
751       - shell: !include-raw-escape: ../shell/maven-patch-release.sh
752       - lf-maven-build:
753           mvn-goals: '{mvn-goals}'
754       - lf-maven-stage
755       - lf-provide-maven-settings-cleanup
756
757 - job-template:
758     name: '{project-name}-maven-stage-{stream}'
759     id: gerrit-maven-stage
760     <<: *lf_maven_common
761     # yamllint disable-line rule:key-duplicates
762     <<: *lf_maven_stage
763
764     scm:
765       - lf-infra-gerrit-scm:
766           jenkins-ssh-credential: '{jenkins-ssh-credential}'
767           git-url: '{git-url}'
768           refspec: '$GERRIT_REFSPEC'
769           branch: '$GERRIT_BRANCH'
770           submodule-recursive: '{submodule-recursive}'
771           choosing-strategy: default
772
773     triggers:
774       - timed: '{obj:cron}'
775       - gerrit:
776           server-name: '{gerrit-server-name}'
777           trigger-on: '{obj:gerrit_release_triggers}'
778           projects:
779             - project-compare-type: ANT
780               project-pattern: '{project}'
781               branches:
782                 - branch-compare-type: ANT
783                   branch-pattern: '**/{branch}'
784
785 - job-template:
786     name: '{project-name}-maven-stage-{stream}'
787     id: github-maven-stage
788     <<: *lf_maven_common
789     # yamllint disable-line rule:key-duplicates
790     <<: *lf_maven_stage
791
792     properties:
793       - lf-infra-properties:
794           build-days-to-keep: '{build-days-to-keep}'
795       - github:
796           url: '{github-url}/{github-org}/{project}'
797
798     scm:
799       - lf-infra-github-scm:
800           url: '{git-clone-url}{github-org}/{project}'
801           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
802           branch: '{branch}'
803           submodule-recursive: '{submodule-recursive}'
804           choosing-strategy: default
805           jenkins-ssh-credential: '{jenkins-ssh-credential}'
806
807     triggers:
808       - timed: '{obj:cron}'
809       - github-pull-request:
810           trigger-phrase: '^build release$'
811           only-trigger-phrase: true
812           status-context: 'Maven Release'
813           permit-all: true
814           github-hooks: true
815           white-list-target-branches:
816             - '{branch}'
817
818 ###############
819 # Maven Sonar #
820 ###############
821
822 - lf_maven_sonar: &lf_maven_sonar
823     name: lf-maven-sonar
824
825     ######################
826     # Default parameters #
827     ######################
828
829     branch: master  # Sonar should always be run on master branch
830     build-days-to-keep: 7
831     build-timeout: 60
832     cron: 'H H * * 6'  # run weekly
833     disable-job: false
834     git-url: '$GIT_URL/$PROJECT'
835     github-url: 'https://github.com'
836     java-version: openjdk8
837     mvn-global-settings: global-settings
838     mvn-opts: ''
839     mvn-params: ''
840     mvn-version: mvn35
841     sonar-mvn-goal: 'sonar:sonar'
842     stream: master
843     submodule-recursive: true
844
845     gerrit_sonar_triggers:
846       - comment-added-contains-event:
847           comment-contains-value: run-sonar$
848
849     #####################
850     # Job Configuration #
851     #####################
852
853     disabled: '{disable-job}'
854
855     parameters:
856       - lf-infra-parameters:
857           project: '{project}'
858           branch: '{branch}'
859           stream: '{stream}'
860           lftools-version: '{lftools-version}'
861       - lf-infra-maven-parameters:
862           mvn-opts: '{mvn-opts}'
863           mvn-params: '{mvn-params}'
864           mvn-version: '{mvn-version}'
865       - string:
866           name: ARCHIVE_ARTIFACTS
867           default: '{archive-artifacts}'
868           description: Artifacts to archive to the logs server.
869       - string:
870           name: SONAR_MAVEN_GOAL
871           default: '{sonar-mvn-goal}'
872           description: |
873               Maven goals to pass to the Sonar call. Typically sonar:sonar
874               however to use a specific version of the sonar-maven-plugin we
875               can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
876
877     triggers:
878       - timed: '{obj:cron}'
879       - gerrit:
880           server-name: '{gerrit-server-name}'
881           trigger-on: '{obj:gerrit_sonar_triggers}'
882           projects:
883             - project-compare-type: 'ANT'
884               project-pattern: '{project}'
885               branches:
886                 - branch-compare-type: 'ANT'
887                   branch-pattern: '**/master'
888           skip-vote:
889             successful: true
890             failed: true
891             unstable: true
892             notbuilt: true
893
894     builders:
895       - lf-infra-maven-sonar:
896           java-version: '{java-version}'
897           mvn-settings: '{mvn-settings}'
898           mvn-version: '{mvn-version}'
899
900     publishers:
901       - lf-jacoco-report
902       - findbugs
903       - lf-infra-publish
904
905 - builder:
906     name: lf-infra-maven-sonar
907     # Run a Sonar build with Maven
908     builders:
909       - lf-maven-install:
910           mvn-version: '{mvn-version}'
911       - lf-update-java-alternatives:
912           java-version: '{java-version}'
913       - inject:
914           # Switch this to the sonar wrapper when JJB 2.0 is available
915           properties-content: SONAR_HOST_URL=$SONAR_URL
916       - lf-provide-maven-settings:
917           global-settings-file: global-settings
918           settings-file: '{mvn-settings}'
919       - shell: !include-raw-escape:
920           - ../shell/common-variables.sh
921           - ../shell/maven-sonar.sh
922       - lf-provide-maven-settings-cleanup
923
924 - job-template:
925     name: '{project-name}-sonar'
926     id: gerrit-maven-sonar
927     <<: *lf_maven_common
928     # yamllint disable-line rule:key-duplicates
929     <<: *lf_maven_sonar
930
931     scm:
932       - lf-infra-gerrit-scm:
933           jenkins-ssh-credential: '{jenkins-ssh-credential}'
934           git-url: '{git-url}'
935           refspec: $GERRIT_REFSPEC
936           branch: $GERRIT_BRANCH
937           submodule-recursive: '{submodule-recursive}'
938           choosing-strategy: default
939
940 - job-template:
941     name: '{project-name}-sonar'
942     id: github-maven-sonar
943     <<: *lf_maven_common
944     # yamllint disable-line rule:key-duplicates
945     <<: *lf_maven_sonar
946
947     properties:
948       - lf-infra-properties:
949           build-days-to-keep: '{build-days-to-keep}'
950       - github:
951           url: '{github-url}/{github-org}/{project}'
952
953     scm:
954       - lf-infra-github-scm:
955           url: '{git-clone-url}{github-org}/{project}'
956           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
957           branch: '$sha1'
958           submodule-recursive: '{submodule-recursive}'
959           choosing-strategy: default
960           jenkins-ssh-credential: '{jenkins-ssh-credential}'
961
962     triggers:
963       - github-pull-request:
964           trigger-phrase: '^run-sonar$'
965           only-trigger-phrase: false
966           status-context: 'Maven Sonar'
967           permit-all: true
968           github-hooks: true
969           white-list-target-branches:
970             - '{branch}'
971
972 ################
973 # Maven Verify #
974 ################
975
976 - lf_maven_verify: &lf_maven_verify
977     name: lf-maven-verify
978
979     ######################
980     # Default parameters #
981     ######################
982
983     branch: master
984     build-days-to-keep: 7
985     build-timeout: 60
986     disable-job: false
987     git-url: '$GIT_URL/$PROJECT'
988     github-url: 'https://github.com'
989     java-version: openjdk8
990     mvn-global-settings: global-settings
991     mvn-goals: clean deploy
992     mvn-opts: ''
993     mvn-params: '-Dstream=$STREAM'
994     mvn-version: mvn35
995     stream: master
996     submodule-recursive: true
997
998     gerrit_verify_triggers:
999       - patchset-created-event:
1000           exclude-drafts: true
1001           exclude-trivial-rebase: false
1002           exclude-no-code-change: false
1003       - draft-published-event
1004       - comment-added-contains-event:
1005           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
1006
1007     gerrit_trigger_file_paths:
1008       - compare-type: REG_EXP
1009         pattern: '.*'
1010
1011     # github_included_regions MUST match gerrit_trigger_file_paths
1012     github_included_regions:
1013       - '.*'
1014
1015     #####################
1016     # Job Configuration #
1017     #####################
1018
1019     concurrent: true
1020     disabled: '{disable-job}'
1021
1022     builders:
1023       - lf-jacoco-nojava-workaround
1024       - lf-maven-install:
1025           mvn-version: '{mvn-version}'
1026       - lf-update-java-alternatives:
1027           java-version: '{java-version}'
1028       - lf-provide-maven-settings:
1029           global-settings-file: '{mvn-global-settings}'
1030           settings-file: '{mvn-settings}'
1031       - shell: !include-raw-escape:
1032           - ../shell/lftools-install.sh
1033       - lf-maven-build:
1034           mvn-goals: '{mvn-goals}'
1035       - lf-provide-maven-settings-cleanup
1036
1037     publishers:
1038       - findbugs
1039       - lf-jacoco-report
1040       - lf-infra-publish
1041
1042 - job-template:
1043     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1044     id: gerrit-maven-verify
1045     <<: *lf_maven_common
1046     # yamllint disable-line rule:key-duplicates
1047     <<: *lf_maven_verify
1048
1049     scm:
1050       - lf-infra-gerrit-scm:
1051           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1052           git-url: '{git-url}'
1053           refspec: '$GERRIT_REFSPEC'
1054           branch: '$GERRIT_BRANCH'
1055           submodule-recursive: '{submodule-recursive}'
1056           choosing-strategy: gerrit
1057
1058     triggers:
1059       - gerrit:
1060           server-name: '{gerrit-server-name}'
1061           trigger-on: '{obj:gerrit_verify_triggers}'
1062           projects:
1063             - project-compare-type: ANT
1064               project-pattern: '{project}'
1065               branches:
1066                 - branch-compare-type: ANT
1067                   branch-pattern: '**/{branch}'
1068               file-paths: '{obj:gerrit_trigger_file_paths}'
1069
1070 - job-template:
1071     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1072     id: github-maven-verify
1073     <<: *lf_maven_common
1074     # yamllint disable-line rule:key-duplicates
1075     <<: *lf_maven_verify
1076
1077     properties:
1078       - lf-infra-properties:
1079           build-days-to-keep: '{build-days-to-keep}'
1080       - github:
1081           url: '{github-url}/{github-org}/{project}'
1082
1083     scm:
1084       - lf-infra-github-scm:
1085           url: '{git-clone-url}{github-org}/{project}'
1086           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1087           branch: '$sha1'
1088           submodule-recursive: '{submodule-recursive}'
1089           choosing-strategy: default
1090           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1091
1092     triggers:
1093       - github-pull-request:
1094           trigger-phrase: '^(recheck|reverify)$'
1095           only-trigger-phrase: false
1096           status-context: 'Maven Verify'
1097           permit-all: true
1098           github-hooks: true
1099           white-list-target-branches:
1100             - '{branch}'
1101           included-regions: '{obj:github_included_regions}'
1102
1103 #############################
1104 # Maven Verify Dependencies #
1105 #############################
1106
1107 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
1108     name: lf-maven-verify-dependencies
1109
1110     ######################
1111     # Default parameters #
1112     ######################
1113
1114     branch: master
1115     build-days-to-keep: 7
1116     build-timeout: 60
1117     disable-job: false
1118     git-url: '$GIT_URL/$PROJECT'
1119     github-url: 'https://github.com'
1120     java-version: openjdk8
1121     mvn-global-settings: global-settings
1122     mvn-goals: clean deploy
1123     mvn-opts: ''
1124     mvn-params: '-Dstream=$STREAM'
1125     mvn-version: mvn35
1126     stream: master
1127     submodule-recursive: true
1128
1129     gerrit_verify_triggers:
1130       - comment-added-contains-event:
1131           comment-contains-value: 'recheck: [0-9 ]+'
1132     gerrit_trigger_file_paths:
1133       - compare-type: ANT
1134         pattern: '**'
1135
1136     #####################
1137     # Job Configuration #
1138     #####################
1139
1140     concurrent: true
1141     disabled: '{disable-job}'
1142
1143     builders:
1144       - lf-jacoco-nojava-workaround
1145       - lf-maven-install:
1146           mvn-version: '{mvn-version}'
1147       - lf-update-java-alternatives:
1148           java-version: '{java-version}'
1149       - lf-provide-maven-settings:
1150           global-settings-file: '{mvn-global-settings}'
1151           settings-file: '{mvn-settings}'
1152       - lf-fetch-dependent-patches
1153       - shell: !include-raw-escape:
1154           - ../shell/common-variables.sh
1155           - ../shell/maven-build-deps.sh
1156       - lf-maven-build:
1157           mvn-goals: '{mvn-goals}'
1158       - lf-provide-maven-settings-cleanup
1159
1160     publishers:
1161       - findbugs
1162       - lf-jacoco-report
1163       - lf-infra-publish
1164
1165 - job-template:
1166     name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1167     id: gerrit-maven-verify-dependencies
1168     <<: *lf_maven_common
1169     # yamllint disable-line rule:key-duplicates
1170     <<: *lf_maven_verify_dependencies
1171
1172     scm:
1173       - lf-infra-gerrit-scm:
1174           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1175           git-url: '{git-url}'
1176           refspec: '$GERRIT_REFSPEC'
1177           branch: '$GERRIT_BRANCH'
1178           submodule-recursive: '{submodule-recursive}'
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}'