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