Merge "Split maven-deploy into a macro"
[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: ''
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: 'H H * * 0'
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     git-url: '$GIT_URL/$PROJECT'
713     java-version: openjdk8
714     mvn-global-settings: global-settings
715     mvn-opts: ''
716     mvn-params: ''
717     mvn-version: mvn33
718     sonar-mvn-goal: 'sonar:sonar'
719     staging-profile-id: ''  # Unused in this job
720     stream: master
721     submodule-recursive: true
722
723     gerrit_sonar_triggers:
724       - comment-added-contains-event:
725           comment-contains-value: run-sonar$
726
727     #####################
728     # Job Configuration #
729     #####################
730
731     parameters:
732       - lf-infra-parameters:
733           project: '{project}'
734           branch: '{branch}'
735           stream: '{stream}'
736           lftools-version: '{lftools-version}'
737       - lf-infra-maven-parameters:
738           mvn-opts: '{mvn-opts}'
739           mvn-params: '{mvn-params}'
740           mvn-version: '{mvn-version}'
741           # Staging repos do not make sense for Sonar jobs so set it blank.
742           staging-profile-id: ''
743       - string:
744           name: ARCHIVE_ARTIFACTS
745           default: '{archive-artifacts}'
746           description: Artifacts to archive to the logs server.
747       - string:
748           name: SONAR_MAVEN_GOAL
749           default: '{sonar-mvn-goal}'
750           description: |
751               Maven goals to pass to the Sonar call. Typically sonar:sonar
752               however to use a specific version of the sonar-maven-plugin we
753               can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
754
755     triggers:
756       - timed: 'H H * * 6'
757       - gerrit:
758           server-name: '{gerrit-server-name}'
759           trigger-on: '{obj:gerrit_sonar_triggers}'
760           projects:
761             - project-compare-type: 'ANT'
762               project-pattern: '{project}'
763               branches:
764                 - branch-compare-type: 'ANT'
765                   branch-pattern: '**/master'
766           skip-vote:
767             successful: true
768             failed: true
769             unstable: true
770             notbuilt: true
771
772     builders:
773       - lf-infra-maven-sonar:
774           mvn-settings: '{mvn-settings}'
775           mvn-version: '{mvn-version}'
776
777     publishers:
778       - lf-jacoco-report
779       - findbugs
780       - lf-infra-publish
781
782 - builder:
783     name: lf-infra-maven-sonar
784     # Run a Sonar build with Maven
785     builders:
786       - lf-maven-install:
787           mvn-version: '{mvn-version}'
788       - inject:
789           # Switch this to the sonar wrapper when JJB 2.0 is available
790           properties-content: SONAR_HOST_URL=$SONAR_URL
791       - lf-provide-maven-settings:
792           global-settings-file: global-settings
793           settings-file: '{mvn-settings}'
794       - shell: !include-raw-escape:
795           - ../shell/common-variables.sh
796           - ../shell/maven-sonar.sh
797       - lf-provide-maven-settings-cleanup
798
799 - job-template:
800     name: '{project-name}-sonar'
801     id: gerrit-maven-sonar
802     <<: *lf_maven_common
803     # yamllint disable-line rule:key-duplicates
804     <<: *lf_maven_sonar
805
806     scm:
807       - lf-infra-gerrit-scm:
808           jenkins-ssh-credential: '{jenkins-ssh-credential}'
809           git-url: '{git-url}'
810           refspec: $GERRIT_REFSPEC
811           branch: $GERRIT_BRANCH
812           submodule-recursive: '{submodule-recursive}'
813           choosing-strategy: default
814
815 - job-template:
816     name: '{project-name}-sonar'
817     id: github-maven-sonar
818     <<: *lf_maven_common
819     # yamllint disable-line rule:key-duplicates
820     <<: *lf_maven_sonar
821
822     properties:
823       - github:
824           url: '{git-url}/{github-org}/{project}'
825
826     scm:
827       - lf-infra-github-scm:
828           url: '{git-clone-url}{github-org}/{project}'
829           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
830           branch: '$sha1'
831           submodule-recursive: '{submodule-recursive}'
832           choosing-strategy: default
833           jenkins-ssh-credential: '{jenkins-ssh-credential}'
834
835     triggers:
836       - lf-infra-github-pr-trigger:
837           trigger-phrase: '^recheck$'
838           only-trigger-phrase: false
839           status-context: 'Maven Verify'
840           permit-all: true
841           github-hooks: true
842           github-org: ''
843           github_pr_whitelist:
844             - ''
845           github_pr_admin_list:
846             - ''
847
848 ################
849 # Maven Verify #
850 ################
851
852 - lf_maven_verify: &lf_maven_verify
853     name: lf-maven-verify
854
855     ######################
856     # Default parameters #
857     ######################
858
859     branch: master
860     build-days-to-keep: 7
861     build-timeout: 60
862     git-url: '$GIT_URL/$PROJECT'
863     java-version: openjdk8
864     mvn-global-settings: global-settings
865     mvn-opts: ''
866     mvn-params: '-Dstream=$STREAM'
867     mvn-version: mvn33
868     staging-profile-id: ''  # Unused in this job
869     stream: master
870     submodule-recursive: true
871
872     gerrit_verify_triggers:
873       - patchset-created-event:
874           exclude-drafts: true
875           exclude-trivial-rebase: false
876           exclude-no-code-change: false
877       - draft-published-event
878       - comment-added-contains-event:
879           comment-contains-value: recheck$
880     gerrit_trigger_file_paths:
881       - compare-type: ANT
882         pattern: '**'
883
884     #####################
885     # Job Configuration #
886     #####################
887
888     concurrent: true
889
890     builders:
891       - lf-jacoco-nojava-workaround
892       - lf-maven-install:
893           mvn-version: '{mvn-version}'
894       - lf-provide-maven-settings:
895           global-settings-file: '{mvn-global-settings}'
896           settings-file: '{mvn-settings}'
897       - shell: !include-raw-escape:
898           - ../shell/lftools-install.sh
899           - ../shell/common-variables.sh
900           - ../shell/maven-build.sh
901       - lf-provide-maven-settings-cleanup
902
903     publishers:
904       - findbugs
905       - lf-jacoco-report
906       - lf-infra-publish
907
908 - job-template:
909     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
910     id: gerrit-maven-verify
911     <<: *lf_maven_common
912     # yamllint disable-line rule:key-duplicates
913     <<: *lf_maven_verify
914
915     scm:
916       - lf-infra-gerrit-scm:
917           jenkins-ssh-credential: '{jenkins-ssh-credential}'
918           git-url: '{git-url}'
919           refspec: '$GERRIT_REFSPEC'
920           branch: '$GERRIT_BRANCH'
921           submodule-recursive: '{submodule-recursive}'
922           choosing-strategy: gerrit
923
924     triggers:
925       - gerrit:
926           server-name: '{gerrit-server-name}'
927           trigger-on: '{obj:gerrit_verify_triggers}'
928           projects:
929             - project-compare-type: ANT
930               project-pattern: '{project}'
931               branches:
932                 - branch-compare-type: ANT
933                   branch-pattern: '**/{branch}'
934               file-paths: '{obj:gerrit_trigger_file_paths}'
935
936 - job-template:
937     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
938     id: github-maven-verify
939     <<: *lf_maven_common
940     # yamllint disable-line rule:key-duplicates
941     <<: *lf_maven_verify
942
943     properties:
944       - github:
945           url: '{git-url}/{github-org}/{project}'
946
947     scm:
948       - lf-infra-github-scm:
949           url: '{git-clone-url}{github-org}/{project}'
950           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
951           branch: '$sha1'
952           submodule-recursive: '{submodule-recursive}'
953           choosing-strategy: default
954           jenkins-ssh-credential: '{jenkins-ssh-credential}'
955
956     triggers:
957       - lf-infra-github-pr-trigger:
958           trigger-phrase: '^recheck$'
959           only-trigger-phrase: false
960           status-context: 'Maven Verify'
961           permit-all: true
962           github-hooks: true
963           github-org: ''
964           github_pr_whitelist:
965             - ''
966           github_pr_admin_list:
967             - ''
968
969 #############################
970 # Maven Verify Dependencies #
971 #############################
972
973 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
974     name: lf-maven-verify-dependencies
975
976     ######################
977     # Default parameters #
978     ######################
979
980     branch: master
981     build-days-to-keep: 7
982     build-timeout: 60
983     git-url: '$GIT_URL/$PROJECT'
984     java-version: openjdk8
985     mvn-global-settings: global-settings
986     mvn-opts: ''
987     mvn-params: '-Dstream=$STREAM'
988     mvn-version: mvn33
989     staging-profile-id: ''  # Unused by this job
990     stream: master
991     submodule-recursive: true
992
993     gerrit_verify_triggers:
994       - comment-added-contains-event:
995           comment-contains-value: 'recheck: [0-9 ]+'
996     gerrit_trigger_file_paths:
997       - compare-type: ANT
998         pattern: '**'
999
1000     #####################
1001     # Job Configuration #
1002     #####################
1003
1004     concurrent: true
1005
1006     builders:
1007       - lf-jacoco-nojava-workaround
1008       - lf-maven-install:
1009           mvn-version: '{mvn-version}'
1010       - lf-provide-maven-settings:
1011           global-settings-file: '{mvn-global-settings}'
1012           settings-file: '{mvn-settings}'
1013       - lf-fetch-dependent-patches
1014       - shell: !include-raw-escape:
1015           - ../shell/common-variables.sh
1016           - ../shell/maven-build-deps.sh
1017       - shell: !include-raw-escape:
1018           - ../shell/common-variables.sh
1019           - ../shell/maven-build.sh
1020       - lf-provide-maven-settings-cleanup
1021
1022     publishers:
1023       - findbugs
1024       - lf-jacoco-report
1025       - lf-infra-publish
1026
1027 - job-template:
1028     name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1029     id: gerrit-maven-verify-dependencies
1030     <<: *lf_maven_common
1031     # yamllint disable-line rule:key-duplicates
1032     <<: *lf_maven_verify_dependencies
1033
1034     scm:
1035       - lf-infra-gerrit-scm:
1036           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1037           git-url: '{git-url}'
1038           refspec: '$GERRIT_REFSPEC'
1039           branch: '$GERRIT_BRANCH'
1040           submodule-recursive: '{submodule-recursive}'
1041           choosing-strategy: gerrit
1042
1043     triggers:
1044       - gerrit:
1045           server-name: '{gerrit-server-name}'
1046           trigger-on: '{obj:gerrit_verify_triggers}'
1047           projects:
1048             - project-compare-type: ANT
1049               project-pattern: '{project}'
1050               branches:
1051                 - branch-compare-type: ANT
1052                   branch-pattern: '**/{branch}'
1053               file-paths: '{obj:gerrit_trigger_file_paths}'