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