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