Update CLM job to use Nexus Policy Evaluation
[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-release
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-release
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           # Staging repos do not make sense for CLM jobs so set it blank.
132           staging-profile-id: '{staging-profile-id}'
133       - string:
134           name: ARCHIVE_ARTIFACTS
135           default: '{archive-artifacts}'
136           description: Artifacts to archive to the logs server.
137
138     wrappers:
139       - lf-infra-wrappers:
140           build-timeout: '{build-timeout}'
141           jenkins-ssh-credential: '{jenkins-ssh-credential}'
142
143     publishers:
144       # TODO: Make email notification work.
145       # - lf-infra-email-notify:
146       #     email-recipients: '{email-recipients}'
147       #     email-prefix: '[releng]'
148       - lf-infra-publish
149
150 #############
151 # Maven CLM #
152 #############
153
154 - lf_maven_clm: &lf_maven_clm
155     name: lf-maven-clm
156
157     ######################
158     # Default parameters #
159     ######################
160
161     branch: master
162     build-days-to-keep: 30  # 30 days for troubleshooting purposes
163     build-timeout: 60
164     git-url: '$GIT_URL/$PROJECT'
165     java-version: openjdk8
166     mvn-global-settings: global-settings
167     mvn-opts: ''
168     mvn-params: ''
169     mvn-version: mvn35
170     nexus-iq-stage: 'build'
171     staging-profile-id: ''  # Unused in this job
172     stream: master
173     submodule-recursive: true
174
175     nexus-iq-scan-patterns:
176       - '**/*.ear'
177       - '**/*.jar'
178       - '**/*.tar.gz'
179       - '**/*.war'
180       - '**/*.zip'
181
182     gerrit_clm_triggers:
183       - comment-added-contains-event:
184           comment-contains-value: run-clm$
185
186     parameters:
187       - lf-infra-parameters:
188           project: '{project}'
189           branch: '{branch}'
190           stream: '{stream}'
191           lftools-version: '{lftools-version}'
192       - lf-infra-maven-parameters:
193           mvn-opts: '{mvn-opts}'
194           mvn-params: '{mvn-params}'
195           mvn-version: '{mvn-version}'
196           # Staging repos do not make sense for CLM jobs so set it blank.
197           staging-profile-id: '{staging-profile-id}'
198       - string:
199           name: ARCHIVE_ARTIFACTS
200           default: '{archive-artifacts}'
201           description: Artifacts to archive to the logs server.
202       - lf-clm-parameters:
203           nexus-iq-stage: '{nexus-iq-stage}'
204
205     #####################
206     # Job Configuration #
207     #####################
208
209     builders:
210       - lf-maven-install:
211           mvn-version: '{mvn-version}'
212       - lf-update-java-alternatives:
213           java-version: '{java-version}'
214       - lf-provide-maven-settings:
215           global-settings-file: '{mvn-global-settings}'
216           settings-file: '{mvn-settings}'
217       - shell: !include-raw-escape:
218           - ../shell/common-variables.sh
219           - ../shell/sonatype-clm.sh
220       - lf-provide-maven-settings-cleanup
221       - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
222       - nexus-iq-policy-evaluator:
223           stage: '{nexus-iq-stage}'
224           application-type: 'manual'
225           application-id: '{project-name}'
226           scan-patterns: '{nexus-iq-scan-patterns}'
227           fail-build-network-error: true
228
229 - job-template:
230     name: '{project-name}-maven-clm-{stream}'
231     id: gerrit-maven-clm
232     <<: *lf_maven_common
233     # yamllint disable-line rule:key-duplicates
234     <<: *lf_maven_clm
235
236     scm:
237       - lf-infra-gerrit-scm:
238           jenkins-ssh-credential: '{jenkins-ssh-credential}'
239           git-url: '{git-url}'
240           refspec: '$GERRIT_REFSPEC'
241           branch: '$GERRIT_BRANCH'
242           submodule-recursive: '{submodule-recursive}'
243           choosing-strategy: default
244
245     triggers:
246       # Build weekly on Saturdays
247       - timed: 'H H * * 6'
248       - gerrit:
249           server-name: '{gerrit-server-name}'
250           trigger-on: '{obj:gerrit_clm_triggers}'
251           projects:
252             - project-compare-type: ANT
253               project-pattern: '{project}'
254               branches:
255                 - branch-compare-type: ANT
256                   branch-pattern: '**/{branch}'
257           skip-vote:
258             successful: true
259             failed: true
260             unstable: true
261             notbuilt: true
262
263 - job-template:
264     name: '{project-name}-maven-clm-{stream}'
265     id: github-maven-clm
266     <<: *lf_maven_common
267     # yamllint disable-line rule:key-duplicates
268     <<: *lf_maven_clm
269
270     properties:
271       - lf-infra-properties:
272           build-days-to-keep: '{build-days-to-keep}'
273       - github:
274           url: '{git-url}/{github-org}/{project}'
275
276     scm:
277       - lf-infra-github-scm:
278           url: '{git-clone-url}{github-org}/{project}'
279           refspec: ''
280           branch: 'refs/heads/{branch}'
281           submodule-recursive: '{submodule-recursive}'
282           choosing-strategy: default
283           jenkins-ssh-credential: '{jenkins-ssh-credential}'
284
285     triggers:
286       # Build weekly on Saturdays
287       - timed: 'H H * * 6'
288       - github-pull-request:
289           trigger-phrase: '^run-clm$'
290           only-trigger-phrase: false
291           status-context: 'CLM'
292           permit-all: true
293           github-hooks: true
294           org-list:
295             - '{github-org}'
296           white-list: '{obj:github_pr_whitelist}'
297           admin-list: '{obj:github_pr_admin_list}'
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     java-version: openjdk8
315     mvn-global-settings: global-settings
316     mvn-opts: ''
317     mvn-params: ''
318     mvn-version: mvn35
319     staging-profile-id: ''  # Unused by the javadoc jobs
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: '{git-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: false
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
417 ########################
418 # Maven Javadoc Verify #
419 ########################
420
421 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
422     name: lf-maven-javadoc-verify
423
424     ######################
425     # Default parameters #
426     ######################
427
428     branch: master
429     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
430     build-timeout: 60
431     git-url: '$GIT_URL/$PROJECT'
432     java-version: openjdk8
433     mvn-global-settings: global-settings
434     mvn-opts: ''
435     mvn-params: ''
436     mvn-version: mvn35
437     staging-profile-id: ''  # Unused by the javadoc jobs
438     stream: master
439     submodule-recursive: true
440
441     gerrit_verify_triggers:
442       - patchset-created-event:
443           exclude-drafts: true
444           exclude-trivial-rebase: false
445           exclude-no-code-change: false
446       - draft-published-event
447       - comment-added-contains-event:
448           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
449
450     #####################
451     # Job Configuration #
452     #####################
453
454     concurrent: true
455
456     builders:
457       - lf-maven-install:
458           mvn-version: '{mvn-version}'
459       - lf-update-java-alternatives:
460           java-version: '{java-version}'
461       - lf-provide-maven-settings:
462           global-settings-file: '{mvn-global-settings}'
463           settings-file: '{mvn-settings}'
464       - shell: !include-raw-escape:
465           - ../shell/common-variables.sh
466           - ../shell/maven-javadoc-generate.sh
467       - lf-provide-maven-settings-cleanup
468
469 - job-template:
470     name: '{project-name}-maven-javadoc-verify-{stream}'
471     id: gerrit-maven-javadoc-verify
472     <<: *lf_maven_common
473     # yamllint disable-line rule:key-duplicates
474     <<: *lf_maven_javadoc_verify
475
476     scm:
477       - lf-infra-gerrit-scm:
478           jenkins-ssh-credential: '{jenkins-ssh-credential}'
479           git-url: '{git-url}'
480           refspec: '$GERRIT_REFSPEC'
481           branch: '$GERRIT_BRANCH'
482           submodule-recursive: '{submodule-recursive}'
483           choosing-strategy: gerrit
484
485     triggers:
486       - gerrit:
487           server-name: '{gerrit-server-name}'
488           trigger-on: '{obj:gerrit_verify_triggers}'
489           projects:
490             - project-compare-type: ANT
491               project-pattern: '{project}'
492               branches:
493                 - branch-compare-type: ANT
494                   branch-pattern: '**/{branch}'
495
496 - job-template:
497     name: '{project-name}-maven-javadoc-verify-{stream}'
498     id: github-maven-javadoc-verify
499     <<: *lf_maven_common
500     # yamllint disable-line rule:key-duplicates
501     <<: *lf_maven_javadoc_verify
502
503     properties:
504       - lf-infra-properties:
505           build-days-to-keep: '{build-days-to-keep}'
506       - github:
507           url: '{git-url}/{github-org}/{project}'
508
509     scm:
510       - lf-infra-github-scm:
511           url: '{git-clone-url}{github-org}/{project}'
512           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
513           branch: '$sha1'
514           submodule-recursive: '{submodule-recursive}'
515           choosing-strategy: default
516           jenkins-ssh-credential: '{jenkins-ssh-credential}'
517
518     triggers:
519       - github-pull-request:
520           trigger-phrase: ^(recheck|reverify)$
521           only-trigger-phrase: false
522           status-context: 'Maven Javadoc Verify'
523           permit-all: true
524           github-hooks: true
525
526 ###############
527 # Maven Merge #
528 ###############
529
530 - lf_maven_merge: &lf_maven_merge
531     name: lf-maven-merge
532
533     ######################
534     # Default parameters #
535     ######################
536
537     branch: master
538     build-days-to-keep: 30  # 30 days in case we need to troubleshoot
539     build-timeout: 60
540     cron: 'H H * * 0'  # push fresh snapshot weekly
541     git-url: '$GIT_URL/$PROJECT'
542     java-version: openjdk8
543     mvn-global-settings: global-settings
544     mvn-goals: clean deploy
545     mvn-opts: ''
546     mvn-params: '-Dmerge'
547     mvn-version: mvn35
548     nexus-cut-dirs: 6  # Number of dirs in the Nexus path to remove for wget -r.
549     staging-profile-id: ''  # Unused by this job.
550     stream: master
551     submodule-recursive: true
552
553     gerrit_merge_triggers:
554       - change-merged-event
555       - comment-added-contains-event:
556           comment-contains-value: remerge$
557
558     gerrit_trigger_file_paths:
559       - compare-type: REG_EXP
560         pattern: '.*'
561
562     # github_included_regions MUST match gerrit_trigger_file_paths
563     github_included_regions:
564       - '.*'
565
566     post_build_trigger: ''
567
568     #####################
569     # Job Configuration #
570     #####################
571
572     builders:
573       - lf-jacoco-nojava-workaround
574       - lf-maven-install:
575           mvn-version: '{mvn-version}'
576       - lf-update-java-alternatives:
577           java-version: '{java-version}'
578       - lf-provide-maven-settings:
579           global-settings-file: '{mvn-global-settings}'
580           settings-file: '{mvn-settings}'
581       - lf-infra-create-netrc:
582           server-id: '{mvn-snapshot-id}'
583       - inject:
584           properties-content: |
585               NEXUS_CUT_DIRS={nexus-cut-dirs}
586               NEXUS_REPO={nexus-snapshot-repo}
587       - shell: !include-raw-escape:
588           - ../shell/lftools-install.sh
589           - ../shell/maven-fetch-metadata.sh
590       - lf-maven-build:
591           mvn-goals: '{mvn-goals}'
592       - lf-maven-deploy
593       - lf-provide-maven-settings-cleanup
594
595     publishers:
596       - findbugs
597       - lf-jacoco-report
598       - lf-infra-publish
599       - trigger-parameterized-builds: '{obj:post_build_trigger}'
600
601 - job-template:
602     name: '{project-name}-maven-merge-{stream}'
603     id: gerrit-maven-merge
604     <<: *lf_maven_common
605     # yamllint disable-line rule:key-duplicates
606     <<: *lf_maven_merge
607
608     scm:
609       - lf-infra-gerrit-scm:
610           jenkins-ssh-credential: '{jenkins-ssh-credential}'
611           git-url: '{git-url}'
612           refspec: '$GERRIT_REFSPEC'
613           branch: '$GERRIT_BRANCH'
614           submodule-recursive: '{submodule-recursive}'
615           choosing-strategy: default
616
617     triggers:
618       - timed: '{obj:cron}'
619       - gerrit:
620           server-name: '{gerrit-server-name}'
621           trigger-on: '{obj:gerrit_merge_triggers}'
622           projects:
623             - project-compare-type: ANT
624               project-pattern: '{project}'
625               branches:
626                 - branch-compare-type: ANT
627                   branch-pattern: '**/{branch}'
628               file-paths: '{obj:gerrit_trigger_file_paths}'
629
630 - job-template:
631     name: '{project-name}-maven-merge-{stream}'
632     id: github-maven-merge
633     <<: *lf_maven_common
634     # yamllint disable-line rule:key-duplicates
635     <<: *lf_maven_merge
636
637     properties:
638       - lf-infra-properties:
639           build-days-to-keep: '{build-days-to-keep}'
640       - github:
641           url: '{git-url}/{github-org}/{project}'
642
643     scm:
644       - lf-infra-github-scm:
645           url: '{git-clone-url}{github-org}/{project}'
646           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
647           branch: '{branch}'
648           submodule-recursive: '{submodule-recursive}'
649           choosing-strategy: default
650           jenkins-ssh-credential: '{jenkins-ssh-credential}'
651
652     triggers:
653       - github
654       - pollscm:
655           cron: ''
656       - github-pull-request:
657           trigger-phrase: '^remerge$'
658           only-trigger-phrase: true
659           status-context: 'Maven Merge'
660           permit-all: false
661           github-hooks: true
662           org-list:
663             - '{github-org}'
664           white-list: '{obj:github_pr_whitelist}'
665           admin-list: '{obj:github_pr_admin_list}'
666           included-regions: '{obj:github_included_regions}'
667
668 #################
669 # Maven Release #
670 #################
671
672 - lf_maven_release: &lf_maven_release
673     name: lf-maven-release
674
675     ######################
676     # Default parameters #
677     ######################
678
679     branch: master
680     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
681     build-timeout: 60
682     cron: ''
683     git-url: '$GIT_URL/$PROJECT'
684     java-version: openjdk8
685     mvn-global-settings: global-settings
686     mvn-goals: clean deploy
687     mvn-opts: ''
688     mvn-params: ''
689     mvn-version: mvn35
690     stream: master
691     submodule-recursive: true
692
693     gerrit_release_triggers:
694       - comment-added-contains-event:
695           comment-contains-value: build release$
696
697     #####################
698     # Job Configuration #
699     #####################
700
701     builders:
702       - lf-jacoco-nojava-workaround
703       - lf-maven-install:
704           mvn-version: '{mvn-version}'
705       - lf-update-java-alternatives:
706           java-version: '{java-version}'
707       - lf-provide-maven-settings:
708           global-settings-file: '{mvn-global-settings}'
709           settings-file: '{mvn-settings}'
710       - lf-infra-create-netrc:
711           server-id: '{mvn-staging-id}'
712       - shell: !include-raw-escape:
713           - ../shell/lftools-install.sh
714           - ../shell/maven-patch-release.sh
715       - lf-maven-build:
716           mvn-goals: '{mvn-goals}'
717       - lf-maven-stage
718       - lf-provide-maven-settings-cleanup
719
720 - job-template:
721     name: '{project-name}-maven-release-{stream}'
722     id: gerrit-maven-release
723     <<: *lf_maven_common
724     # yamllint disable-line rule:key-duplicates
725     <<: *lf_maven_release
726
727     scm:
728       - lf-infra-gerrit-scm:
729           jenkins-ssh-credential: '{jenkins-ssh-credential}'
730           git-url: '{git-url}'
731           refspec: '$GERRIT_REFSPEC'
732           branch: '$GERRIT_BRANCH'
733           submodule-recursive: '{submodule-recursive}'
734           choosing-strategy: default
735
736     triggers:
737       - timed: '{obj:cron}'
738       - gerrit:
739           server-name: '{gerrit-server-name}'
740           trigger-on: '{obj:gerrit_release_triggers}'
741           projects:
742             - project-compare-type: ANT
743               project-pattern: '{project}'
744               branches:
745                 - branch-compare-type: ANT
746                   branch-pattern: '**/{branch}'
747
748 - job-template:
749     name: '{project-name}-maven-release-{stream}'
750     id: github-maven-release
751     <<: *lf_maven_common
752     # yamllint disable-line rule:key-duplicates
753     <<: *lf_maven_release
754
755     properties:
756       - lf-infra-properties:
757           build-days-to-keep: '{build-days-to-keep}'
758       - github:
759           url: '{git-url}/{github-org}/{project}'
760
761     scm:
762       - lf-infra-github-scm:
763           url: '{git-clone-url}{github-org}/{project}'
764           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
765           branch: '{branch}'
766           submodule-recursive: '{submodule-recursive}'
767           choosing-strategy: default
768           jenkins-ssh-credential: '{jenkins-ssh-credential}'
769
770     triggers:
771       - timed: '{obj:cron}'
772       - github-pull-request:
773           trigger-phrase: '^build release$'
774           only-trigger-phrase: true
775           status-context: 'Maven Release'
776           permit-all: true
777           github-hooks: true
778
779 ###############
780 # Maven Sonar #
781 ###############
782
783 - lf_maven_sonar: &lf_maven_sonar
784     name: lf-maven-sonar
785
786     ######################
787     # Default parameters #
788     ######################
789
790     branch: master  # Sonar should always be run on master branch
791     build-days-to-keep: 7
792     build-timeout: 60
793     cron: 'H H * * 6'  # run weekly
794     git-url: '$GIT_URL/$PROJECT'
795     java-version: openjdk8
796     mvn-global-settings: global-settings
797     mvn-opts: ''
798     mvn-params: ''
799     mvn-version: mvn35
800     sonar-mvn-goal: 'sonar:sonar'
801     staging-profile-id: ''  # Unused in this job
802     stream: master
803     submodule-recursive: true
804
805     gerrit_sonar_triggers:
806       - comment-added-contains-event:
807           comment-contains-value: run-sonar$
808
809     #####################
810     # Job Configuration #
811     #####################
812
813     parameters:
814       - lf-infra-parameters:
815           project: '{project}'
816           branch: '{branch}'
817           stream: '{stream}'
818           lftools-version: '{lftools-version}'
819       - lf-infra-maven-parameters:
820           mvn-opts: '{mvn-opts}'
821           mvn-params: '{mvn-params}'
822           mvn-version: '{mvn-version}'
823           # Staging repos do not make sense for Sonar jobs so set it blank.
824           staging-profile-id: ''
825       - string:
826           name: ARCHIVE_ARTIFACTS
827           default: '{archive-artifacts}'
828           description: Artifacts to archive to the logs server.
829       - string:
830           name: SONAR_MAVEN_GOAL
831           default: '{sonar-mvn-goal}'
832           description: |
833               Maven goals to pass to the Sonar call. Typically sonar:sonar
834               however to use a specific version of the sonar-maven-plugin we
835               can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
836
837     triggers:
838       - timed: '{obj:cron}'
839       - gerrit:
840           server-name: '{gerrit-server-name}'
841           trigger-on: '{obj:gerrit_sonar_triggers}'
842           projects:
843             - project-compare-type: 'ANT'
844               project-pattern: '{project}'
845               branches:
846                 - branch-compare-type: 'ANT'
847                   branch-pattern: '**/master'
848           skip-vote:
849             successful: true
850             failed: true
851             unstable: true
852             notbuilt: true
853
854     builders:
855       - lf-infra-maven-sonar:
856           java-version: '{java-version}'
857           mvn-settings: '{mvn-settings}'
858           mvn-version: '{mvn-version}'
859
860     publishers:
861       - lf-jacoco-report
862       - findbugs
863       - lf-infra-publish
864
865 - builder:
866     name: lf-infra-maven-sonar
867     # Run a Sonar build with Maven
868     builders:
869       - lf-maven-install:
870           mvn-version: '{mvn-version}'
871       - lf-update-java-alternatives:
872           java-version: '{java-version}'
873       - inject:
874           # Switch this to the sonar wrapper when JJB 2.0 is available
875           properties-content: SONAR_HOST_URL=$SONAR_URL
876       - lf-provide-maven-settings:
877           global-settings-file: global-settings
878           settings-file: '{mvn-settings}'
879       - shell: !include-raw-escape:
880           - ../shell/common-variables.sh
881           - ../shell/maven-sonar.sh
882       - lf-provide-maven-settings-cleanup
883
884 - job-template:
885     name: '{project-name}-sonar'
886     id: gerrit-maven-sonar
887     <<: *lf_maven_common
888     # yamllint disable-line rule:key-duplicates
889     <<: *lf_maven_sonar
890
891     scm:
892       - lf-infra-gerrit-scm:
893           jenkins-ssh-credential: '{jenkins-ssh-credential}'
894           git-url: '{git-url}'
895           refspec: $GERRIT_REFSPEC
896           branch: $GERRIT_BRANCH
897           submodule-recursive: '{submodule-recursive}'
898           choosing-strategy: default
899
900 - job-template:
901     name: '{project-name}-sonar'
902     id: github-maven-sonar
903     <<: *lf_maven_common
904     # yamllint disable-line rule:key-duplicates
905     <<: *lf_maven_sonar
906
907     properties:
908       - lf-infra-properties:
909           build-days-to-keep: '{build-days-to-keep}'
910       - github:
911           url: '{git-url}/{github-org}/{project}'
912
913     scm:
914       - lf-infra-github-scm:
915           url: '{git-clone-url}{github-org}/{project}'
916           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
917           branch: '$sha1'
918           submodule-recursive: '{submodule-recursive}'
919           choosing-strategy: default
920           jenkins-ssh-credential: '{jenkins-ssh-credential}'
921
922     triggers:
923       - github-pull-request:
924           trigger-phrase: '^run-sonar$'
925           only-trigger-phrase: false
926           status-context: 'Maven Sonar'
927           permit-all: true
928           github-hooks: true
929
930 ################
931 # Maven Verify #
932 ################
933
934 - lf_maven_verify: &lf_maven_verify
935     name: lf-maven-verify
936
937     ######################
938     # Default parameters #
939     ######################
940
941     branch: master
942     build-days-to-keep: 7
943     build-timeout: 60
944     git-url: '$GIT_URL/$PROJECT'
945     java-version: openjdk8
946     mvn-global-settings: global-settings
947     mvn-goals: clean deploy
948     mvn-opts: ''
949     mvn-params: '-Dstream=$STREAM'
950     mvn-version: mvn35
951     staging-profile-id: ''  # Unused in this job
952     stream: master
953     submodule-recursive: true
954
955     gerrit_verify_triggers:
956       - patchset-created-event:
957           exclude-drafts: true
958           exclude-trivial-rebase: false
959           exclude-no-code-change: false
960       - draft-published-event
961       - comment-added-contains-event:
962           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
963
964     gerrit_trigger_file_paths:
965       - compare-type: REG_EXP
966         pattern: '.*'
967
968     # github_included_regions MUST match gerrit_trigger_file_paths
969     github_included_regions:
970       - '.*'
971
972     #####################
973     # Job Configuration #
974     #####################
975
976     concurrent: true
977
978     builders:
979       - lf-jacoco-nojava-workaround
980       - lf-maven-install:
981           mvn-version: '{mvn-version}'
982       - lf-update-java-alternatives:
983           java-version: '{java-version}'
984       - lf-provide-maven-settings:
985           global-settings-file: '{mvn-global-settings}'
986           settings-file: '{mvn-settings}'
987       - shell: !include-raw-escape:
988           - ../shell/lftools-install.sh
989       - lf-maven-build:
990           mvn-goals: '{mvn-goals}'
991       - lf-provide-maven-settings-cleanup
992
993     publishers:
994       - findbugs
995       - lf-jacoco-report
996       - lf-infra-publish
997
998 - job-template:
999     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1000     id: gerrit-maven-verify
1001     <<: *lf_maven_common
1002     # yamllint disable-line rule:key-duplicates
1003     <<: *lf_maven_verify
1004
1005     scm:
1006       - lf-infra-gerrit-scm:
1007           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1008           git-url: '{git-url}'
1009           refspec: '$GERRIT_REFSPEC'
1010           branch: '$GERRIT_BRANCH'
1011           submodule-recursive: '{submodule-recursive}'
1012           choosing-strategy: gerrit
1013
1014     triggers:
1015       - gerrit:
1016           server-name: '{gerrit-server-name}'
1017           trigger-on: '{obj:gerrit_verify_triggers}'
1018           projects:
1019             - project-compare-type: ANT
1020               project-pattern: '{project}'
1021               branches:
1022                 - branch-compare-type: ANT
1023                   branch-pattern: '**/{branch}'
1024               file-paths: '{obj:gerrit_trigger_file_paths}'
1025
1026 - job-template:
1027     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1028     id: github-maven-verify
1029     <<: *lf_maven_common
1030     # yamllint disable-line rule:key-duplicates
1031     <<: *lf_maven_verify
1032
1033     properties:
1034       - lf-infra-properties:
1035           build-days-to-keep: '{build-days-to-keep}'
1036       - github:
1037           url: '{git-url}/{github-org}/{project}'
1038
1039     scm:
1040       - lf-infra-github-scm:
1041           url: '{git-clone-url}{github-org}/{project}'
1042           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1043           branch: '$sha1'
1044           submodule-recursive: '{submodule-recursive}'
1045           choosing-strategy: default
1046           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1047
1048     triggers:
1049       - github-pull-request:
1050           trigger-phrase: '^(recheck|reverify)$'
1051           only-trigger-phrase: false
1052           status-context: 'Maven Verify'
1053           permit-all: true
1054           github-hooks: true
1055           included-regions: '{obj:github_included_regions}'
1056
1057 #############################
1058 # Maven Verify Dependencies #
1059 #############################
1060
1061 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
1062     name: lf-maven-verify-dependencies
1063
1064     ######################
1065     # Default parameters #
1066     ######################
1067
1068     branch: master
1069     build-days-to-keep: 7
1070     build-timeout: 60
1071     git-url: '$GIT_URL/$PROJECT'
1072     java-version: openjdk8
1073     mvn-global-settings: global-settings
1074     mvn-goals: clean deploy
1075     mvn-opts: ''
1076     mvn-params: '-Dstream=$STREAM'
1077     mvn-version: mvn35
1078     staging-profile-id: ''  # Unused by this job
1079     stream: master
1080     submodule-recursive: true
1081
1082     gerrit_verify_triggers:
1083       - comment-added-contains-event:
1084           comment-contains-value: 'recheck: [0-9 ]+'
1085     gerrit_trigger_file_paths:
1086       - compare-type: ANT
1087         pattern: '**'
1088
1089     #####################
1090     # Job Configuration #
1091     #####################
1092
1093     concurrent: true
1094
1095     builders:
1096       - lf-jacoco-nojava-workaround
1097       - lf-maven-install:
1098           mvn-version: '{mvn-version}'
1099       - lf-update-java-alternatives:
1100           java-version: '{java-version}'
1101       - lf-provide-maven-settings:
1102           global-settings-file: '{mvn-global-settings}'
1103           settings-file: '{mvn-settings}'
1104       - lf-fetch-dependent-patches
1105       - shell: !include-raw-escape:
1106           - ../shell/common-variables.sh
1107           - ../shell/maven-build-deps.sh
1108       - lf-maven-build:
1109           mvn-goals: '{mvn-goals}'
1110       - lf-provide-maven-settings-cleanup
1111
1112     publishers:
1113       - findbugs
1114       - lf-jacoco-report
1115       - lf-infra-publish
1116
1117 - job-template:
1118     name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1119     id: gerrit-maven-verify-dependencies
1120     <<: *lf_maven_common
1121     # yamllint disable-line rule:key-duplicates
1122     <<: *lf_maven_verify_dependencies
1123
1124     scm:
1125       - lf-infra-gerrit-scm:
1126           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1127           git-url: '{git-url}'
1128           refspec: '$GERRIT_REFSPEC'
1129           branch: '$GERRIT_BRANCH'
1130           submodule-recursive: '{submodule-recursive}'
1131           choosing-strategy: gerrit
1132
1133     triggers:
1134       - gerrit:
1135           server-name: '{gerrit-server-name}'
1136           trigger-on: '{obj:gerrit_verify_triggers}'
1137           projects:
1138             - project-compare-type: ANT
1139               project-pattern: '{project}'
1140               branches:
1141                 - branch-compare-type: ANT
1142                   branch-pattern: '**/{branch}'
1143               file-paths: '{obj:gerrit_trigger_file_paths}'