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