Remove jdk variable from lf-maven-jobs
[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
87     properties:
88       - lf-infra-properties:
89           build-days-to-keep: '{build-days-to-keep}'
90
91     parameters:
92       - lf-infra-parameters:
93           project: '{project}'
94           branch: '{branch}'
95           stream: '{stream}'
96           lftools-version: '{lftools-version}'
97       - lf-infra-maven-parameters:
98           mvn-opts: '{mvn-opts}'
99           mvn-params: '{mvn-params}'
100           mvn-version: '{mvn-version}'
101           # Staging repos do not make sense for CLM jobs so set it blank.
102           staging-profile-id: '{staging-profile-id}'
103       - string:
104           name: ARCHIVE_ARTIFACTS
105           default: '{archive-artifacts}'
106           description: Artifacts to archive to the logs server.
107
108     wrappers:
109       - lf-infra-wrappers:
110           build-timeout: '{build-timeout}'
111           jenkins-ssh-credential: '{jenkins-ssh-credential}'
112
113     publishers:
114       # TODO: Make email notification work.
115       # - lf-infra-email-notify:
116       #     email-recipients: '{email-recipients}'
117       #     email-prefix: '[releng]'
118       - lf-infra-publish
119
120 #############
121 # Maven CLM #
122 #############
123
124 - lf_maven_clm: &lf_maven_clm
125     name: lf-maven-clm
126
127     ######################
128     # Default parameters #
129     ######################
130
131     branch: master
132     build-days-to-keep: 30  # 30 days for troubleshooting purposes
133     build-timeout: 60
134     git-url: '$GIT_URL/$PROJECT'
135     java-version: openjdk8
136     mvn-global-settings: global-settings
137     mvn-opts: ''
138     mvn-params: ''
139     mvn-version: mvn33
140     staging-profile-id: ''  # Unused in this job
141     stream: master
142     submodule-recursive: true
143
144     gerrit_clm_triggers:
145       - comment-added-contains-event:
146           comment-contains-value: run-clm$
147
148     #####################
149     # Job Configuration #
150     #####################
151
152     triggers:
153       # Build weekly on Saturdays
154       - timed: 'H H * * 6'
155       - gerrit:
156           server-name: '{gerrit-server-name}'
157           trigger-on: '{obj:gerrit_clm_triggers}'
158           projects:
159             - project-compare-type: ANT
160               project-pattern: '{project}'
161               branches:
162                 - branch-compare-type: ANT
163                   branch-pattern: '**/{branch}'
164           skip-vote:
165             successful: true
166             failed: true
167             unstable: true
168             notbuilt: true
169
170     builders:
171       - lf-maven-install:
172           mvn-version: '{mvn-version}'
173       - lf-provide-maven-settings:
174           global-settings-file: '{mvn-global-settings}'
175           settings-file: '{mvn-settings}'
176       - shell: !include-raw-escape:
177           - ../shell/common-variables.sh
178           - ../shell/sonatype-clm.sh
179       - lf-provide-maven-settings-cleanup
180       - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
181       - sonatype-clm:
182           application-name: '{project-name}'
183
184 - job-template:
185     name: '{project-name}-maven-clm-{stream}'
186     id: gerrit-maven-clm
187     <<: *lf_maven_common
188     # yamllint disable-line rule:key-duplicates
189     <<: *lf_maven_clm
190
191     scm:
192       - lf-infra-gerrit-scm:
193           jenkins-ssh-credential: '{jenkins-ssh-credential}'
194           git-url: '{git-url}'
195           refspec: '$GERRIT_REFSPEC'
196           branch: '$GERRIT_BRANCH'
197           submodule-recursive: '{submodule-recursive}'
198           choosing-strategy: default
199
200 - job-template:
201     name: '{project-name}-maven-clm-{stream}'
202     id: github-maven-clm
203     <<: *lf_maven_common
204     # yamllint disable-line rule:key-duplicates
205     <<: *lf_maven_clm
206
207     properties:
208       - github:
209           url: '{git-url}/{github-org}/{project}'
210
211     scm:
212       - lf-infra-github-scm:
213           url: '{git-clone-url}{github-org}/{project}'
214           refspec: ''
215           branch: 'refs/heads/{branch}'
216           submodule-recursive: '{submodule-recursive}'
217           choosing-strategy: default
218           jenkins-ssh-credential: '{jenkins-ssh-credential}'
219
220     triggers:
221       - lf-infra-github-pr-trigger:
222           trigger-phrase: '^run-clm$'
223           only-trigger-phrase: false
224           status-context: 'CLM'
225           permit-all: true
226           github-hooks: true
227           github-org: ''
228           github_pr_whitelist:
229             - ''
230           github_pr_admin_list:
231             - ''
232
233 #########################
234 # Maven Javadoc Publish #
235 #########################
236
237 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
238     name: lf-maven-javadoc-publish
239
240     ######################
241     # Default parameters #
242     ######################
243
244     branch: master
245     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
246     build-timeout: 60
247     git-url: '$GIT_URL/$PROJECT'
248     java-version: openjdk8
249     mvn-global-settings: global-settings
250     mvn-opts: ''
251     mvn-params: ''
252     mvn-version: mvn33
253     staging-profile-id: ''  # Unused by the javadoc jobs
254     stream: master
255     submodule-recursive: true
256
257     gerrit_merge_triggers:
258       - change-merged-event
259       - comment-added-contains-event:
260           comment-contains-value: remerge$
261
262     #####################
263     # Job Configuration #
264     #####################
265
266     builders:
267       - lf-maven-install:
268           mvn-version: '{mvn-version}'
269       - lf-provide-maven-settings:
270           global-settings-file: '{mvn-global-settings}'
271           settings-file: '{mvn-settings}'
272       - lf-infra-create-netrc:
273           server-id: '{mvn-site-id}'
274       - inject:
275           properties-content: 'DEPLOY_PATH={javadoc-path}'
276       - shell: !include-raw-escape:
277           - ../shell/common-variables.sh
278           - ../shell/maven-javadoc-generate.sh
279           - ../shell/lftools-install.sh
280           - ../shell/maven-javadoc-publish.sh
281       - lf-provide-maven-settings-cleanup
282
283 - job-template:
284     name: '{project-name}-maven-javadoc-publish-{stream}'
285     id: gerrit-maven-javadoc-publish
286     <<: *lf_maven_common
287     # yamllint disable-line rule:key-duplicates
288     <<: *lf_maven_javadoc_publish
289
290     git-url: '$GIT_URL/$GERRIT_PROJECT'
291
292     scm:
293       - lf-infra-gerrit-scm:
294           git-url: '{git-url}'
295           refspec: ''
296           branch: '{branch}'
297           submodule-recursive: '{submodule-recursive}'
298           choosing-strategy: default
299           jenkins-ssh-credential: '{jenkins-ssh-credential}'
300
301     triggers:
302       - gerrit:
303           server-name: '{gerrit-server-name}'
304           trigger-on: '{obj:gerrit_merge_triggers}'
305           projects:
306             - project-compare-type: ANT
307               project-pattern: '{project}'
308               branches:
309                 - branch-compare-type: ANT
310                   branch-pattern: '**/{branch}'
311
312 - job-template:
313     name: '{project-name}-maven-javadoc-publish-{stream}'
314     id: github-maven-javadoc-publish
315     <<: *lf_maven_common
316     # yamllint disable-line rule:key-duplicates
317     <<: *lf_maven_javadoc_publish
318
319     properties:
320       - github:
321           url: '{git-url}/{github-org}/{project}'
322
323     scm:
324       - lf-infra-github-scm:
325           url: '{git-clone-url}{github-org}/{project}'
326           refspec: ''
327           branch: '{branch}'
328           submodule-recursive: '{submodule-recursive}'
329           choosing-strategy: default
330           jenkins-ssh-credential: '{jenkins-ssh-credential}'
331
332     triggers:
333       - github
334       - pollscm:
335           cron: ''
336       - lf-infra-github-pr-trigger:
337           trigger-phrase: '^remerge$'
338           only-trigger-phrase: true
339           status-context: 'JJB Merge'
340           permit-all: false
341           github-hooks: true
342           github-org: '{github-org}'
343           github_pr_whitelist: '{obj:github_pr_whitelist}'
344           github_pr_admin_list: '{obj:github_pr_admin_list}'
345
346 ########################
347 # Maven Javadoc Verify #
348 ########################
349
350 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
351     name: lf-maven-javadoc-verify
352
353     ######################
354     # Default parameters #
355     ######################
356
357     branch: master
358     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
359     build-timeout: 60
360     git-url: '$GIT_URL/$PROJECT'
361     java-version: openjdk8
362     mvn-global-settings: global-settings
363     mvn-opts: ''
364     mvn-params: ''
365     mvn-version: mvn33
366     staging-profile-id: ''  # Unused by the javadoc jobs
367     stream: master
368     submodule-recursive: true
369
370     gerrit_verify_triggers:
371       - patchset-created-event:
372           exclude-drafts: true
373           exclude-trivial-rebase: false
374           exclude-no-code-change: false
375       - draft-published-event
376       - comment-added-contains-event:
377           comment-contains-value: recheck$
378
379     #####################
380     # Job Configuration #
381     #####################
382
383     concurrent: true
384
385     builders:
386       - lf-maven-install:
387           mvn-version: '{mvn-version}'
388       - lf-provide-maven-settings:
389           global-settings-file: '{mvn-global-settings}'
390           settings-file: '{mvn-settings}'
391       - shell: !include-raw-escape:
392           - ../shell/common-variables.sh
393           - ../shell/maven-javadoc-generate.sh
394       - lf-provide-maven-settings-cleanup
395
396 - job-template:
397     name: '{project-name}-maven-javadoc-verify-{stream}'
398     id: gerrit-maven-javadoc-verify
399     <<: *lf_maven_common
400     # yamllint disable-line rule:key-duplicates
401     <<: *lf_maven_javadoc_verify
402
403     scm:
404       - lf-infra-gerrit-scm:
405           jenkins-ssh-credential: '{jenkins-ssh-credential}'
406           git-url: '{git-url}'
407           refspec: '$GERRIT_REFSPEC'
408           branch: '$GERRIT_BRANCH'
409           submodule-recursive: '{submodule-recursive}'
410           choosing-strategy: gerrit
411
412     triggers:
413       - gerrit:
414           server-name: '{gerrit-server-name}'
415           trigger-on: '{obj:gerrit_verify_triggers}'
416           projects:
417             - project-compare-type: ANT
418               project-pattern: '{project}'
419               branches:
420                 - branch-compare-type: ANT
421                   branch-pattern: '**/{branch}'
422
423 - job-template:
424     name: '{project-name}-maven-javadoc-verify-{stream}'
425     id: github-maven-javadoc-verify
426     <<: *lf_maven_common
427     # yamllint disable-line rule:key-duplicates
428     <<: *lf_maven_javadoc_verify
429
430     properties:
431       - github:
432           url: '{git-url}/{github-org}/{project}'
433
434     scm:
435       - lf-infra-github-scm:
436           url: '{git-clone-url}{github-org}/{project}'
437           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
438           branch: '$sha1'
439           submodule-recursive: '{submodule-recursive}'
440           choosing-strategy: default
441           jenkins-ssh-credential: '{jenkins-ssh-credential}'
442
443     triggers:
444       - lf-infra-github-pr-trigger:
445           trigger-phrase: '^recheck$'
446           only-trigger-phrase: true
447           status-context: 'Maven Javadoc'
448           permit-all: true
449           github-hooks: true
450           github-org: ''
451           github_pr_whitelist:
452             - ''
453           github_pr_admin_list:
454             - ''
455
456 ###############
457 # Maven Merge #
458 ###############
459
460 - lf_maven_merge: &lf_maven_merge
461     name: lf-maven-merge
462
463     ######################
464     # Default parameters #
465     ######################
466
467     branch: master
468     build-days-to-keep: 30  # 30 days in case we need to troubleshoot
469     build-timeout: 60
470     cron: 'H H * * 0'  # push fresh snapshot weekly
471     git-url: '$GIT_URL/$PROJECT'
472     java-version: openjdk8
473     mvn-global-settings: global-settings
474     mvn-opts: ''
475     mvn-params: '-Dmerge'
476     mvn-version: mvn33
477     nexus-cut-dirs: 6  # Number of dirs in the Nexus path to remove for wget -r.
478     staging-profile-id: ''  # Unused by this job.
479     stream: master
480     submodule-recursive: true
481
482     gerrit_merge_triggers:
483       - change-merged-event
484       - comment-added-contains-event:
485           comment-contains-value: remerge$
486
487     gerrit_trigger_file_paths:
488       - compare-type: ANT
489         pattern: '**'
490
491     post_build_trigger: ''
492
493     #####################
494     # Job Configuration #
495     #####################
496
497     builders:
498       - lf-jacoco-nojava-workaround
499       - lf-maven-install:
500           mvn-version: '{mvn-version}'
501       - lf-provide-maven-settings:
502           global-settings-file: '{mvn-global-settings}'
503           settings-file: '{mvn-settings}'
504       - lf-infra-create-netrc:
505           server-id: '{mvn-snapshot-id}'
506       - inject:
507           properties-content: |
508               NEXUS_CUT_DIRS={nexus-cut-dirs}
509               NEXUS_REPO={nexus-snapshot-repo}
510       - shell: !include-raw-escape:
511           - ../shell/lftools-install.sh
512           - ../shell/common-variables.sh
513           - ../shell/maven-fetch-metadata.sh
514           - ../shell/maven-build.sh
515       - lf-maven-deploy
516       - lf-provide-maven-settings-cleanup
517
518     publishers:
519       - findbugs
520       - lf-jacoco-report
521       - lf-infra-publish
522       - trigger-parameterized-builds: '{obj:post_build_trigger}'
523
524 - job-template:
525     name: '{project-name}-maven-merge-{stream}'
526     id: gerrit-maven-merge
527     <<: *lf_maven_common
528     # yamllint disable-line rule:key-duplicates
529     <<: *lf_maven_merge
530
531     scm:
532       - lf-infra-gerrit-scm:
533           jenkins-ssh-credential: '{jenkins-ssh-credential}'
534           git-url: '{git-url}'
535           refspec: '$GERRIT_REFSPEC'
536           branch: '$GERRIT_BRANCH'
537           submodule-recursive: '{submodule-recursive}'
538           choosing-strategy: default
539
540     triggers:
541       - timed: '{obj:cron}'
542       - gerrit:
543           server-name: '{gerrit-server-name}'
544           trigger-on: '{obj:gerrit_merge_triggers}'
545           projects:
546             - project-compare-type: ANT
547               project-pattern: '{project}'
548               branches:
549                 - branch-compare-type: ANT
550                   branch-pattern: '**/{branch}'
551               file-paths: '{obj:gerrit_trigger_file_paths}'
552
553 - job-template:
554     name: '{project-name}-maven-merge-{stream}'
555     id: github-maven-merge
556     <<: *lf_maven_common
557     # yamllint disable-line rule:key-duplicates
558     <<: *lf_maven_merge
559
560     properties:
561       - github:
562           url: '{git-url}/{github-org}/{project}'
563
564     scm:
565       - lf-infra-github-scm:
566           url: '{git-clone-url}{github-org}/{project}'
567           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
568           branch: '{branch}'
569           submodule-recursive: '{submodule-recursive}'
570           choosing-strategy: default
571           jenkins-ssh-credential: '{jenkins-ssh-credential}'
572
573     triggers:
574       - lf-infra-github-pr-trigger:
575           trigger-phrase: '^remerge$'
576           only-trigger-phrase: false
577           status-context: 'Maven Merge'
578           permit-all: true
579           github-hooks: true
580           github-org: ''
581           github_pr_whitelist:
582             - ''
583           github_pr_admin_list:
584             - ''
585
586 #################
587 # Maven Release #
588 #################
589
590 - lf_maven_release: &lf_maven_release
591     name: lf-maven-release
592
593     ######################
594     # Default parameters #
595     ######################
596
597     branch: master
598     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
599     build-timeout: 60
600     cron: ''
601     git-url: '$GIT_URL/$PROJECT'
602     java-version: openjdk8
603     mvn-global-settings: global-settings
604     mvn-opts: ''
605     mvn-params: ''
606     mvn-version: mvn33
607     stream: master
608     submodule-recursive: true
609
610     gerrit_release_triggers:
611       - comment-added-contains-event:
612           comment-contains-value: build release$
613
614     #####################
615     # Job Configuration #
616     #####################
617
618     builders:
619       - lf-jacoco-nojava-workaround
620       - lf-maven-install:
621           mvn-version: '{mvn-version}'
622       - lf-provide-maven-settings:
623           global-settings-file: '{mvn-global-settings}'
624           settings-file: '{mvn-settings}'
625       - lf-infra-create-netrc:
626           server-id: '{mvn-staging-id}'
627       - shell: !include-raw-escape:
628           - ../shell/lftools-install.sh
629           - ../shell/common-variables.sh
630           - ../shell/maven-patch-release.sh
631           - ../shell/maven-build.sh
632           - ../shell/maven-stage.sh
633       - lf-provide-maven-settings-cleanup
634
635 - job-template:
636     name: '{project-name}-maven-release-{stream}'
637     id: gerrit-maven-release
638     <<: *lf_maven_common
639     # yamllint disable-line rule:key-duplicates
640     <<: *lf_maven_release
641
642     scm:
643       - lf-infra-gerrit-scm:
644           jenkins-ssh-credential: '{jenkins-ssh-credential}'
645           git-url: '{git-url}'
646           refspec: '$GERRIT_REFSPEC'
647           branch: '$GERRIT_BRANCH'
648           submodule-recursive: '{submodule-recursive}'
649           choosing-strategy: default
650
651     triggers:
652       - timed: '{obj:cron}'
653       - gerrit:
654           server-name: '{gerrit-server-name}'
655           trigger-on: '{obj:gerrit_release_triggers}'
656           projects:
657             - project-compare-type: ANT
658               project-pattern: '{project}'
659               branches:
660                 - branch-compare-type: ANT
661                   branch-pattern: '**/{branch}'
662
663 - job-template:
664     name: '{project-name}-maven-release-{stream}'
665     id: github-maven-release
666     <<: *lf_maven_common
667     # yamllint disable-line rule:key-duplicates
668     <<: *lf_maven_release
669
670     properties:
671       - github:
672           url: '{git-url}/{github-org}/{project}'
673
674     scm:
675       - lf-infra-github-scm:
676           url: '{git-clone-url}{github-org}/{project}'
677           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
678           branch: '{branch}'
679           submodule-recursive: '{submodule-recursive}'
680           choosing-strategy: default
681           jenkins-ssh-credential: '{jenkins-ssh-credential}'
682
683     triggers:
684       - timed: '{obj:cron}'
685       - lf-infra-github-pr-trigger:
686           trigger-phrase: '^build release$'
687           only-trigger-phrase: true
688           status-context: 'Maven Release'
689           permit-all: true
690           github-hooks: true
691           github-org: ''
692           github_pr_whitelist:
693             - ''
694           github_pr_admin_list:
695             - ''
696
697 ###############
698 # Maven Sonar #
699 ###############
700
701 - lf_maven_sonar: &lf_maven_sonar
702     name: lf-maven-sonar
703
704     ######################
705     # Default parameters #
706     ######################
707
708     branch: master  # Sonar should always be run on master branch
709     build-days-to-keep: 7
710     build-timeout: 60
711     cron: 'H H * * 6'  # run weekly
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: '{obj:cron}'
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}'