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