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