Define maven + docker verify, merge and stage jobs
[releng/global-jjb.git] / jjb / lf-maven-jobs.yaml
1 ---
2 # This file contains job templates for Maven projects.
3
4 ##########
5 # Macros #
6 ##########
7
8 - builder:
9     name: lf-maven-build
10     builders:
11       - inject:
12           properties-content: 'MAVEN_GOALS={mvn-goals}'
13       - shell: !include-raw-escape:
14           - ../shell/common-variables.sh
15           - ../shell/maven-build.sh
16
17 - builder:
18     name: lf-maven-deploy
19     builders:
20       - shell: !include-raw:
21           - ../shell/common-variables.sh
22           - ../shell/maven-deploy.sh
23
24 - builder:
25     name: lf-maven-versions-plugin
26     builders:
27       - conditional-step:
28           condition-kind: boolean-expression
29           condition-expression: '{maven-versions-plugin}'
30           steps:
31             - inject:
32                 properties-file: version.properties
33             - maven-target:
34                 maven-version: '{mvn-version}'
35                 pom: '{mvn-pom}'
36                 goals: 'versions:set versions:update-child-modules versions:commit -B'
37                 properties:
38                   - 'newVersion=${{maven-versions-plugin-set-version}}'
39                 settings: '{mvn-settings}'
40                 settings-type: cfp
41                 global-settings: 'global-settings'
42                 global-settings-type: cfp
43
44 - builder:
45     name: lf-maven-stage
46     builders:
47       - lf-provide-maven-settings:
48           global-settings-file: '{mvn-global-settings}'
49           settings-file: '{mvn-settings}'
50       - lf-infra-create-netrc:
51           server-id: '{mvn-staging-id}'
52       # include-raw-escape fails due to JJB bug
53       - shell: !include-raw-escape:
54           - ../shell/common-variables.sh
55           - ../shell/maven-stage.sh
56       - lf-provide-maven-settings-cleanup
57
58 - builder:
59     name: lf-update-java-alternatives
60     builders:
61       - inject:
62           # Work around inject plugin overriding our GIT_URL variable incorrectly
63           # https://issues.jenkins-ci.org/browse/JENKINS-49775
64           properties-content: |
65             SET_JDK_VERSION={java-version}
66             GIT_URL="$GIT_URL"
67       - shell: !include-raw-escape: ../shell/update-java-alternatives.sh
68       - inject:
69           properties-file: '/tmp/java.env'
70
71 ####################
72 # COMMON FUNCTIONS #
73 ####################
74
75 - lf_maven_common: &lf_maven_common
76     name: lf-maven-common
77
78     ######################
79     # Default parameters #
80     ######################
81
82     archive-artifacts: >
83       **/*.log
84       **/hs_err_*.log
85       **/target/**/feature.xml
86       **/target/failsafe-reports/failsafe-summary.xml
87       **/target/surefire-reports/*-output.txt
88
89     #####################
90     # Job Configuration #
91     #####################
92
93     project-type: freestyle
94     node: '{build-node}'
95
96     properties:
97       - lf-infra-properties:
98           build-days-to-keep: '{build-days-to-keep}'
99
100     parameters:
101       - lf-infra-parameters:
102           project: '{project}'
103           branch: '{branch}'
104           stream: '{stream}'
105       - lf-infra-maven-parameters:
106           mvn-opts: '{mvn-opts}'
107           mvn-params: '{mvn-params}'
108           mvn-version: '{mvn-version}'
109       - string:
110           name: ARCHIVE_ARTIFACTS
111           default: '{archive-artifacts}'
112           description: Artifacts to archive to the logs server.
113
114     wrappers:
115       - lf-infra-wrappers:
116           build-timeout: '{build-timeout}'
117           jenkins-ssh-credential: '{jenkins-ssh-credential}'
118
119     publishers:
120       # TODO: Make email notification work.
121       # - lf-infra-email-notify:
122       #     email-recipients: '{email-recipients}'
123       #     email-prefix: '[releng]'
124       - lf-infra-publish
125
126 #############
127 # Maven CLM #
128 #############
129
130 - lf_maven_clm: &lf_maven_clm
131     name: lf-maven-clm
132
133     ######################
134     # Default parameters #
135     ######################
136
137     branch: master
138     build-days-to-keep: 30  # 30 days for troubleshooting purposes
139     build-timeout: 60
140     disable-job: false
141     git-url: '$GIT_URL/$PROJECT'
142     github-url: 'https://github.com'
143     java-version: openjdk8
144     mvn-global-settings: global-settings
145     mvn-opts: ''
146     mvn-params: ''
147     mvn-version: mvn35
148     nexus-iq-namespace: ''  # Recommend a trailing dash when set. Example: odl-
149     nexus-iq-stage: 'build'
150     stream: master
151     submodule-recursive: true
152     submodule-timeout: 10
153
154     nexus_iq_scan_patterns:
155       - '**/*.ear'
156       - '**/*.jar'
157       - '**/*.tar.gz'
158       - '**/*.war'
159       - '**/*.zip'
160
161     gerrit_clm_triggers:
162       - comment-added-contains-event:
163           comment-contains-value: run-clm$
164
165     parameters:
166       - lf-infra-parameters:
167           project: '{project}'
168           branch: '{branch}'
169           stream: '{stream}'
170       - lf-infra-maven-parameters:
171           mvn-opts: '{mvn-opts}'
172           mvn-params: '{mvn-params}'
173           mvn-version: '{mvn-version}'
174       - string:
175           name: ARCHIVE_ARTIFACTS
176           default: '{archive-artifacts}'
177           description: Artifacts to archive to the logs server.
178       - lf-clm-parameters:
179           nexus-iq-stage: '{nexus-iq-stage}'
180
181     #####################
182     # Job Configuration #
183     #####################
184
185     disabled: '{disable-job}'
186
187     builders:
188       - lf-infra-pre-build
189       - lf-maven-install:
190           mvn-version: '{mvn-version}'
191       - lf-update-java-alternatives:
192           java-version: '{java-version}'
193       - lf-provide-maven-settings:
194           global-settings-file: '{mvn-global-settings}'
195           settings-file: '{mvn-settings}'
196       - shell: !include-raw-escape:
197           - ../shell/common-variables.sh
198           - ../shell/sonatype-clm.sh
199       - lf-provide-maven-settings-cleanup
200       - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
201       - nexus-iq-policy-evaluator:
202           stage: '{nexus-iq-stage}'
203           application-type: 'manual'
204           application-id: '{nexus-iq-namespace}{project-name}'
205           scan-patterns: '{obj:nexus_iq_scan_patterns}'
206           fail-build-network-error: true
207
208 - job-template:
209     name: '{project-name}-maven-clm-{stream}'
210     id: gerrit-maven-clm
211     <<: *lf_maven_common
212     # yamllint disable-line rule:key-duplicates
213     <<: *lf_maven_clm
214
215     scm:
216       - lf-infra-gerrit-scm:
217           jenkins-ssh-credential: '{jenkins-ssh-credential}'
218           git-url: '{git-url}'
219           refspec: '$GERRIT_REFSPEC'
220           branch: '$GERRIT_BRANCH'
221           submodule-recursive: '{submodule-recursive}'
222           submodule-timeout: '{submodule-timeout}'
223           choosing-strategy: default
224
225     triggers:
226       # Build weekly on Saturdays
227       - timed: 'H H * * 6'
228       - gerrit:
229           server-name: '{gerrit-server-name}'
230           trigger-on: '{obj:gerrit_clm_triggers}'
231           projects:
232             - project-compare-type: ANT
233               project-pattern: '{project}'
234               branches:
235                 - branch-compare-type: ANT
236                   branch-pattern: '**/{branch}'
237           skip-vote:
238             successful: true
239             failed: true
240             unstable: true
241             notbuilt: true
242
243 - job-template:
244     name: '{project-name}-maven-clm-{stream}'
245     id: github-maven-clm
246     <<: *lf_maven_common
247     # yamllint disable-line rule:key-duplicates
248     <<: *lf_maven_clm
249
250     properties:
251       - lf-infra-properties:
252           build-days-to-keep: '{build-days-to-keep}'
253       - github:
254           url: '{github-url}/{github-org}/{project}'
255
256     scm:
257       - lf-infra-github-scm:
258           url: '{git-clone-url}{github-org}/{project}'
259           refspec: ''
260           branch: 'refs/heads/{branch}'
261           submodule-recursive: '{submodule-recursive}'
262           submodule-timeout: '{submodule-timeout}'
263           choosing-strategy: default
264           jenkins-ssh-credential: '{jenkins-ssh-credential}'
265
266     triggers:
267       # Build weekly on Saturdays
268       - timed: 'H H * * 6'
269       - github-pull-request:
270           trigger-phrase: '^run-clm$'
271           only-trigger-phrase: true
272           status-context: 'CLM'
273           permit-all: true
274           github-hooks: true
275           org-list:
276             - '{github-org}'
277           white-list: '{obj:github_pr_whitelist}'
278           admin-list: '{obj:github_pr_admin_list}'
279           white-list-target-branches:
280             - '{branch}'
281
282 #########################
283 # Maven Javadoc Publish #
284 #########################
285
286 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
287     name: lf-maven-javadoc-publish
288
289     ######################
290     # Default parameters #
291     ######################
292
293     branch: master
294     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
295     build-timeout: 60
296     disable-job: false
297     git-url: '$GIT_URL/$PROJECT'
298     github-url: 'https://github.com'
299     java-version: openjdk8
300     mvn-global-settings: global-settings
301     mvn-opts: ''
302     mvn-params: ''
303     mvn-version: mvn35
304     stream: master
305     submodule-recursive: true
306     submodule-timeout: 10
307
308     gerrit_merge_triggers:
309       - change-merged-event
310       - comment-added-contains-event:
311           comment-contains-value: remerge$
312
313     #####################
314     # Job Configuration #
315     #####################
316
317     disabled: '{disable-job}'
318
319     builders:
320       - lf-infra-pre-build
321       - lf-maven-install:
322           mvn-version: '{mvn-version}'
323       - lf-update-java-alternatives:
324           java-version: '{java-version}'
325       - lf-provide-maven-settings:
326           global-settings-file: '{mvn-global-settings}'
327           settings-file: '{mvn-settings}'
328       - lf-infra-create-netrc:
329           server-id: '{mvn-site-id}'
330       - inject:
331           properties-content: 'DEPLOY_PATH={javadoc-path}'
332       - shell: !include-raw-escape:
333           - ../shell/common-variables.sh
334           - ../shell/maven-javadoc-generate.sh
335           - ../shell/maven-javadoc-publish.sh
336       - lf-provide-maven-settings-cleanup
337
338 - job-template:
339     name: '{project-name}-maven-javadoc-publish-{stream}-{java-version}'
340     id: gerrit-maven-javadoc-publish
341     <<: *lf_maven_common
342     # yamllint disable-line rule:key-duplicates
343     <<: *lf_maven_javadoc_publish
344
345     git-url: '$GIT_URL/$GERRIT_PROJECT'
346
347     scm:
348       - lf-infra-gerrit-scm:
349           git-url: '{git-url}'
350           refspec: ''
351           branch: '{branch}'
352           submodule-recursive: '{submodule-recursive}'
353           submodule-timeout: '{submodule-timeout}'
354           choosing-strategy: default
355           jenkins-ssh-credential: '{jenkins-ssh-credential}'
356
357     triggers:
358       - gerrit:
359           server-name: '{gerrit-server-name}'
360           trigger-on: '{obj:gerrit_merge_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-publish-{stream}-{java-version}'
370     id: github-maven-javadoc-publish
371     <<: *lf_maven_common
372     # yamllint disable-line rule:key-duplicates
373     <<: *lf_maven_javadoc_publish
374
375     properties:
376       - lf-infra-properties:
377           build-days-to-keep: '{build-days-to-keep}'
378       - github:
379           url: '{github-url}/{github-org}/{project}'
380
381     scm:
382       - lf-infra-github-scm:
383           url: '{git-clone-url}{github-org}/{project}'
384           refspec: ''
385           branch: '{branch}'
386           submodule-recursive: '{submodule-recursive}'
387           submodule-timeout: '{submodule-timeout}'
388           choosing-strategy: default
389           jenkins-ssh-credential: '{jenkins-ssh-credential}'
390
391     triggers:
392       - github
393       - pollscm:
394           cron: ''
395       - github-pull-request:
396           trigger-phrase: '^remerge$'
397           only-trigger-phrase: true
398           status-context: 'Maven Javadoc Publish'
399           permit-all: true
400           github-hooks: true
401           org-list:
402             - '{github-org}'
403           white-list: '{obj:github_pr_whitelist}'
404           admin-list: '{obj:github_pr_admin_list}'
405           white-list-target-branches:
406             - '{branch}'
407
408 ########################
409 # Maven Javadoc Verify #
410 ########################
411
412 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
413     name: lf-maven-javadoc-verify
414
415     ######################
416     # Default parameters #
417     ######################
418
419     branch: master
420     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
421     build-timeout: 60
422     disable-job: false
423     git-url: '$GIT_URL/$PROJECT'
424     github-url: 'https://github.com'
425     java-version: openjdk8
426     mvn-global-settings: global-settings
427     mvn-opts: ''
428     mvn-params: ''
429     mvn-version: mvn35
430     stream: master
431     submodule-recursive: true
432     submodule-timeout: 10
433
434     gerrit_verify_triggers:
435       - patchset-created-event:
436           exclude-drafts: true
437           exclude-trivial-rebase: false
438           exclude-no-code-change: false
439       - draft-published-event
440       - comment-added-contains-event:
441           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
442
443     #####################
444     # Job Configuration #
445     #####################
446
447     concurrent: true
448     disabled: '{disable-job}'
449
450     builders:
451       - lf-infra-pre-build
452       - lf-maven-install:
453           mvn-version: '{mvn-version}'
454       - lf-update-java-alternatives:
455           java-version: '{java-version}'
456       - lf-provide-maven-settings:
457           global-settings-file: '{mvn-global-settings}'
458           settings-file: '{mvn-settings}'
459       - shell: !include-raw-escape:
460           - ../shell/common-variables.sh
461           - ../shell/maven-javadoc-generate.sh
462       - lf-provide-maven-settings-cleanup
463
464 - job-template:
465     name: '{project-name}-maven-javadoc-verify-{stream}-{java-version}'
466     id: gerrit-maven-javadoc-verify
467     <<: *lf_maven_common
468     # yamllint disable-line rule:key-duplicates
469     <<: *lf_maven_javadoc_verify
470
471     scm:
472       - lf-infra-gerrit-scm:
473           jenkins-ssh-credential: '{jenkins-ssh-credential}'
474           git-url: '{git-url}'
475           refspec: '$GERRIT_REFSPEC'
476           branch: '$GERRIT_BRANCH'
477           submodule-recursive: '{submodule-recursive}'
478           submodule-timeout: '{submodule-timeout}'
479           choosing-strategy: gerrit
480
481     triggers:
482       - gerrit:
483           server-name: '{gerrit-server-name}'
484           trigger-on: '{obj:gerrit_verify_triggers}'
485           projects:
486             - project-compare-type: ANT
487               project-pattern: '{project}'
488               branches:
489                 - branch-compare-type: ANT
490                   branch-pattern: '**/{branch}'
491
492 - job-template:
493     name: '{project-name}-maven-javadoc-verify-{stream}-{java-version}'
494     id: github-maven-javadoc-verify
495     <<: *lf_maven_common
496     # yamllint disable-line rule:key-duplicates
497     <<: *lf_maven_javadoc_verify
498
499     properties:
500       - lf-infra-properties:
501           build-days-to-keep: '{build-days-to-keep}'
502       - github:
503           url: '{github-url}/{github-org}/{project}'
504
505     scm:
506       - lf-infra-github-scm:
507           url: '{git-clone-url}{github-org}/{project}'
508           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
509           branch: '$sha1'
510           submodule-recursive: '{submodule-recursive}'
511           submodule-timeout: '{submodule-timeout}'
512           choosing-strategy: default
513           jenkins-ssh-credential: '{jenkins-ssh-credential}'
514
515     triggers:
516       - github-pull-request:
517           trigger-phrase: ^(recheck|reverify)$
518           only-trigger-phrase: false
519           status-context: 'Maven Javadoc Verify'
520           permit-all: true
521           github-hooks: true
522           white-list-target-branches:
523             - '{branch}'
524
525 ###############
526 # Maven Merge #
527 ###############
528
529 - lf_maven_merge: &lf_maven_merge
530     name: lf-maven-merge
531
532     ######################
533     # Default parameters #
534     ######################
535
536     branch: master
537     build-days-to-keep: 30  # 30 days in case we need to troubleshoot
538     build-timeout: 60
539     cron: '@daily'
540     disable-job: false
541     git-url: '$GIT_URL/$PROJECT'
542     github-url: 'https://github.com'
543     java-version: openjdk8
544     mvn-global-settings: global-settings
545     mvn-goals: clean deploy
546     mvn-opts: ''
547     mvn-params: '-Dmerge'
548     mvn-version: mvn35
549     nexus-cut-dirs: 6  # Number of dirs in the Nexus path to remove for wget -r.
550     stream: master
551     submodule-recursive: true
552     submodule-timeout: 10
553
554     gerrit_merge_triggers:
555       - change-merged-event
556       - comment-added-contains-event:
557           comment-contains-value: remerge$
558
559     gerrit_trigger_file_paths:
560       - compare-type: REG_EXP
561         pattern: '.*'
562
563     # github_included_regions MUST match gerrit_trigger_file_paths
564     github_included_regions:
565       - '.*'
566
567     post_build_trigger: ''
568
569     #####################
570     # Job Configuration #
571     #####################
572
573     disabled: '{disable-job}'
574
575     builders:
576       - lf-infra-pre-build
577       - lf-jacoco-nojava-workaround
578       - lf-maven-install:
579           mvn-version: '{mvn-version}'
580       - lf-update-java-alternatives:
581           java-version: '{java-version}'
582       - lf-provide-maven-settings:
583           global-settings-file: '{mvn-global-settings}'
584           settings-file: '{mvn-settings}'
585       - lf-infra-create-netrc:
586           server-id: '{mvn-snapshot-id}'
587       - inject:
588           properties-content: |
589               NEXUS_CUT_DIRS={nexus-cut-dirs}
590               NEXUS_REPO={nexus-snapshot-repo}
591       - shell: !include-raw-escape: ../shell/maven-fetch-metadata.sh
592       - lf-maven-build:
593           mvn-goals: '{mvn-goals}'
594       - lf-maven-deploy
595       - lf-provide-maven-settings-cleanup
596
597     publishers:
598       - findbugs
599       - lf-jacoco-report
600       - lf-infra-publish
601       - trigger-parameterized-builds: '{obj:post_build_trigger}'
602
603 - job-template:
604     name: '{project-name}-maven-merge-{stream}'
605     id: gerrit-maven-merge
606     <<: *lf_maven_common
607     # yamllint disable-line rule:key-duplicates
608     <<: *lf_maven_merge
609
610     scm:
611       - lf-infra-gerrit-scm:
612           jenkins-ssh-credential: '{jenkins-ssh-credential}'
613           git-url: '{git-url}'
614           refspec: '$GERRIT_REFSPEC'
615           branch: '$GERRIT_BRANCH'
616           submodule-recursive: '{submodule-recursive}'
617           submodule-timeout: '{submodule-timeout}'
618           choosing-strategy: default
619
620     triggers:
621       - timed: '{obj:cron}'
622       - gerrit:
623           server-name: '{gerrit-server-name}'
624           trigger-on: '{obj:gerrit_merge_triggers}'
625           projects:
626             - project-compare-type: ANT
627               project-pattern: '{project}'
628               branches:
629                 - branch-compare-type: ANT
630                   branch-pattern: '**/{branch}'
631               file-paths: '{obj:gerrit_trigger_file_paths}'
632
633 - job-template:
634     name: '{project-name}-maven-merge-{stream}'
635     id: github-maven-merge
636     <<: *lf_maven_common
637     # yamllint disable-line rule:key-duplicates
638     <<: *lf_maven_merge
639
640     properties:
641       - lf-infra-properties:
642           build-days-to-keep: '{build-days-to-keep}'
643       - github:
644           url: '{github-url}/{github-org}/{project}'
645
646     scm:
647       - lf-infra-github-scm:
648           url: '{git-clone-url}{github-org}/{project}'
649           refspec: ''
650           branch: 'refs/heads/{branch}'
651           submodule-recursive: '{submodule-recursive}'
652           submodule-timeout: '{submodule-timeout}'
653           choosing-strategy: default
654           jenkins-ssh-credential: '{jenkins-ssh-credential}'
655
656     triggers:
657       - timed: '{obj:cron}'
658       - github
659       - pollscm:
660           cron: ''
661       - github-pull-request:
662           trigger-phrase: '^remerge$'
663           only-trigger-phrase: true
664           status-context: 'Maven Merge'
665           permit-all: true
666           github-hooks: true
667           org-list:
668             - '{github-org}'
669           white-list: '{obj:github_pr_whitelist}'
670           admin-list: '{obj:github_pr_admin_list}'
671           white-list-target-branches:
672             - '{branch}'
673           included-regions: '{obj:github_included_regions}'
674
675 ##########################
676 # Maven Merge for Docker #
677 ##########################
678
679 - lf_maven_docker_merge: &lf_maven_docker_merge
680     name: lf-maven-docker-merge
681
682     builders:
683       - lf-infra-pre-build
684       - lf-jacoco-nojava-workaround
685       - lf-maven-install:
686           mvn-version: '{mvn-version}'
687       - lf-infra-docker-login:
688           global-settings-file: '{mvn-global-settings}'
689           settings-file: '{mvn-settings}'
690       - lf-update-java-alternatives:
691           java-version: '{java-version}'
692       # must provide maven settings AFTER docker due to its cleanup
693       - lf-provide-maven-settings:
694           global-settings-file: '{mvn-global-settings}'
695           settings-file: '{mvn-settings}'
696       - lf-infra-create-netrc:
697           server-id: '{mvn-snapshot-id}'
698       - inject:
699           properties-content: |
700               NEXUS_CUT_DIRS={nexus-cut-dirs}
701               NEXUS_REPO={nexus-snapshot-repo}
702               CONTAINER_PULL_REGISTRY={container-public-registry}
703               CONTAINER_PUSH_REGISTRY={container-snapshot-registry}
704       - shell: !include-raw-escape: ../shell/maven-fetch-metadata.sh
705       - lf-maven-build:
706           mvn-goals: '{mvn-goals}'
707       # NO lf-maven-deploy
708       - lf-provide-maven-settings-cleanup
709
710 - job-template:
711     name: '{project-name}-maven-docker-merge-{stream}'
712     id: gerrit-maven-docker-merge
713     <<: *lf_maven_common
714     # yamllint disable-line rule:key-duplicates
715     <<: *lf_maven_merge
716     # yamllint disable-line rule:key-duplicates
717     <<: *lf_maven_docker_merge
718
719     scm:
720       - lf-infra-gerrit-scm:
721           jenkins-ssh-credential: '{jenkins-ssh-credential}'
722           git-url: '{git-url}'
723           refspec: '$GERRIT_REFSPEC'
724           branch: '$GERRIT_BRANCH'
725           submodule-recursive: '{submodule-recursive}'
726           submodule-timeout: '{submodule-timeout}'
727           choosing-strategy: default
728
729     triggers:
730       - gerrit:
731           server-name: '{gerrit-server-name}'
732           trigger-on: '{obj:gerrit_merge_triggers}'
733           projects:
734             - project-compare-type: ANT
735               project-pattern: '{project}'
736               branches:
737                 - branch-compare-type: ANT
738                   branch-pattern: '**/{branch}'
739               file-paths: '{obj:gerrit_trigger_file_paths}'
740
741 - job-template:
742     name: '{project-name}-maven-docker-merge-{stream}'
743     id: github-maven-docker-merge
744     <<: *lf_maven_common
745     # yamllint disable-line rule:key-duplicates
746     <<: *lf_maven_merge
747     # yamllint disable-line rule:key-duplicates
748     <<: *lf_maven_docker_merge
749
750     properties:
751       - lf-infra-properties:
752           build-days-to-keep: '{build-days-to-keep}'
753       - github:
754           url: '{github-url}/{github-org}/{project}'
755
756     scm:
757       - lf-infra-github-scm:
758           url: '{git-clone-url}{github-org}/{project}'
759           refspec: ''
760           branch: 'refs/heads/{branch}'
761           submodule-recursive: '{submodule-recursive}'
762           submodule-timeout: '{submodule-timeout}'
763           choosing-strategy: default
764           jenkins-ssh-credential: '{jenkins-ssh-credential}'
765
766     triggers:
767       - github
768       - pollscm:
769           cron: ''
770       - github-pull-request:
771           trigger-phrase: '^remerge$'
772           only-trigger-phrase: true
773           status-context: 'Maven Docker Merge'
774           permit-all: true
775           github-hooks: true
776           org-list:
777             - '{github-org}'
778           white-list: '{obj:github_pr_whitelist}'
779           admin-list: '{obj:github_pr_admin_list}'
780           white-list-target-branches:
781             - '{branch}'
782           included-regions: '{obj:github_included_regions}'
783
784 ###############
785 # Maven Stage #
786 ###############
787
788 - lf_maven_stage: &lf_maven_stage
789     name: lf-maven-stage
790
791     ######################
792     # Default parameters #
793     ######################
794
795     branch: master
796     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
797     build-timeout: 60
798     cron: '@daily'
799     disable-job: false
800     git-url: '$GIT_URL/$PROJECT'
801     github-url: 'https://github.com'
802     java-version: openjdk8
803     maven-versions-plugin: false
804     maven-versions-plugin-set-version: ''
805     mvn-central: false
806     mvn-global-settings: global-settings
807     mvn-goals: clean deploy
808     mvn-opts: ''
809     mvn-params: ''
810     mvn-version: mvn35
811     ossrh-profile-id: ''
812     mvn-pom: ''
813     sign-artifacts: false
814     sign-mode: serial
815     stream: master
816     submodule-recursive: true
817     submodule-timeout: 10
818
819     gerrit_release_triggers:
820       - comment-added-contains-event:
821           comment-contains-value: stage-release$
822
823     #####################
824     # Job Configuration #
825     #####################
826
827     disabled: '{disable-job}'
828
829     parameters:
830       - lf-infra-parameters:
831           project: '{project}'
832           branch: '{branch}'
833           stream: '{stream}'
834       - lf-infra-maven-parameters:
835           mvn-opts: '{mvn-opts}'
836           mvn-params: '{mvn-params}'
837           mvn-version: '{mvn-version}'
838           staging-profile-id: '{staging-profile-id}'
839       - bool:
840           name: MAVEN_VERSIONS_PLUGIN
841           default: '{maven-versions-plugin}'
842           description: Use maven-versions-plugin to update pom versions.
843       - string:
844           name: ARCHIVE_ARTIFACTS
845           default: '{archive-artifacts}'
846           description: Artifacts to archive to the logs server.
847       - string:
848           name: STAGING_PROFILE_ID
849           default: '{staging-profile-id}'
850           description: Nexus staging profile ID.
851
852     builders:
853       - lf-infra-pre-build
854       - lf-jacoco-nojava-workaround
855       - lf-maven-install:
856           mvn-version: '{mvn-version}'
857       - lf-update-java-alternatives:
858           java-version: '{java-version}'
859       - lf-provide-maven-settings:
860           global-settings-file: '{mvn-global-settings}'
861           settings-file: '{mvn-settings}'
862       - lf-maven-versions-plugin:
863           maven-versions-plugin: '{maven-versions-plugin}'
864           mvn-version: '{mvn-version}'
865           mvn-pom: '{mvn-pom}'
866           maven-versions-plugin-set-version: '{maven-versions-plugin-set-version}'
867           mvn-settings: '{mvn-settings}'
868       - shell: !include-raw-escape: ../shell/maven-patch-release.sh
869       - lf-maven-build:
870           mvn-goals: '{mvn-goals}'
871       - lf-sigul-sign-dir:
872           sign-artifacts: '{sign-artifacts}'
873           sign-dir: '$WORKSPACE/m2repo'
874           sign-mode: '{sign-mode}'
875       - lf-maven-stage:
876           mvn-global-settings: '{mvn-global-settings}'
877           mvn-settings: '{mvn-settings}'
878           mvn-staging-id: '{mvn-staging-id}'
879       - lf-maven-central:
880           mvn-central: '{mvn-central}'
881           mvn-global-settings: '{mvn-global-settings}'
882           mvn-settings: '{mvn-settings}'
883           ossrh-profile-id: '{ossrh-profile-id}'
884       - lf-provide-maven-settings-cleanup
885
886 - job-template:
887     name: '{project-name}-maven-stage-{stream}'
888     id: gerrit-maven-stage
889     <<: *lf_maven_common
890     # yamllint disable-line rule:key-duplicates
891     <<: *lf_maven_stage
892
893     scm:
894       - lf-infra-gerrit-scm:
895           jenkins-ssh-credential: '{jenkins-ssh-credential}'
896           git-url: '{git-url}'
897           refspec: '$GERRIT_REFSPEC'
898           branch: '$GERRIT_BRANCH'
899           submodule-recursive: '{submodule-recursive}'
900           submodule-timeout: '{submodule-timeout}'
901           choosing-strategy: default
902
903     triggers:
904       - timed: '{obj:cron}'
905       - gerrit:
906           server-name: '{gerrit-server-name}'
907           trigger-on: '{obj:gerrit_release_triggers}'
908           projects:
909             - project-compare-type: ANT
910               project-pattern: '{project}'
911               branches:
912                 - branch-compare-type: ANT
913                   branch-pattern: '**/{branch}'
914
915 - job-template:
916     name: '{project-name}-maven-stage-{stream}'
917     id: github-maven-stage
918     <<: *lf_maven_common
919     # yamllint disable-line rule:key-duplicates
920     <<: *lf_maven_stage
921
922     properties:
923       - lf-infra-properties:
924           build-days-to-keep: '{build-days-to-keep}'
925       - github:
926           url: '{github-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: '{branch}'
933           submodule-recursive: '{submodule-recursive}'
934           submodule-timeout: '{submodule-timeout}'
935           choosing-strategy: default
936           jenkins-ssh-credential: '{jenkins-ssh-credential}'
937
938     triggers:
939       - timed: '{obj:cron}'
940       - github-pull-request:
941           trigger-phrase: '^build release$'
942           only-trigger-phrase: true
943           status-context: 'Maven Release'
944           permit-all: true
945           github-hooks: true
946           white-list-target-branches:
947             - '{branch}'
948
949 ##########################
950 # Maven Stage for Docker #
951 ##########################
952
953 - lf_maven_docker_stage: &lf_maven_docker_stage
954     name: lf-maven-docker-stage
955
956     builders:
957       - lf-infra-pre-build
958       - lf-jacoco-nojava-workaround
959       - lf-maven-install:
960           mvn-version: '{mvn-version}'
961       - lf-update-java-alternatives:
962           java-version: '{java-version}'
963       - lf-infra-docker-login:
964           global-settings-file: '{mvn-global-settings}'
965           settings-file: '{mvn-settings}'
966       # must provide maven settings AFTER docker-login due to its cleanup
967       - lf-provide-maven-settings:
968           global-settings-file: '{mvn-global-settings}'
969           settings-file: '{mvn-settings}'
970       - shell: !include-raw-escape: ../shell/maven-patch-release.sh
971       - lf-maven-versions-plugin:
972           maven-versions-plugin: '{maven-versions-plugin}'
973           mvn-version: '{mvn-version}'
974           mvn-pom: '{mvn-pom}'
975           maven-versions-plugin-set-version: '{maven-versions-plugin-set-version}'
976           mvn-settings: '{mvn-settings}'
977       - inject:
978           properties-content: |
979               CONTAINER_PULL_REGISTRY={container-public-registry}
980               CONTAINER_PUSH_REGISTRY={container-staging-registry}
981       - lf-maven-build:
982           mvn-goals: '{mvn-goals}'
983       - lf-sigul-sign-dir:
984           sign-artifacts: '{sign-artifacts}'
985           sign-dir: '$WORKSPACE/m2repo'
986           sign-mode: '{sign-mode}'
987       # NO lf-maven-stage
988       # NO lf-maven-central
989       - lf-provide-maven-settings-cleanup
990
991 - job-template:
992     name: '{project-name}-maven-docker-stage-{stream}'
993     id: gerrit-maven-docker-stage
994     <<: *lf_maven_common
995     # yamllint disable-line rule:key-duplicates
996     <<: *lf_maven_stage
997     # yamllint disable-line rule:key-duplicates
998     <<: *lf_maven_docker_stage
999
1000     scm:
1001       - lf-infra-gerrit-scm:
1002           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1003           git-url: '{git-url}'
1004           refspec: '$GERRIT_REFSPEC'
1005           branch: '$GERRIT_BRANCH'
1006           submodule-recursive: '{submodule-recursive}'
1007           submodule-timeout: '{submodule-timeout}'
1008           choosing-strategy: default
1009
1010     triggers:
1011       - timed: '{obj:cron}'
1012       - gerrit:
1013           server-name: '{gerrit-server-name}'
1014           trigger-on: '{obj:gerrit_release_triggers}'
1015           projects:
1016             - project-compare-type: ANT
1017               project-pattern: '{project}'
1018               branches:
1019                 - branch-compare-type: ANT
1020                   branch-pattern: '**/{branch}'
1021
1022 - job-template:
1023     name: '{project-name}-maven-docker-stage-{stream}'
1024     id: github-maven-docker-stage
1025     <<: *lf_maven_common
1026     # yamllint disable-line rule:key-duplicates
1027     <<: *lf_maven_stage
1028     # yamllint disable-line rule:key-duplicates
1029     <<: *lf_maven_docker_stage
1030
1031     properties:
1032       - lf-infra-properties:
1033           build-days-to-keep: '{build-days-to-keep}'
1034       - github:
1035           url: '{github-url}/{github-org}/{project}'
1036
1037     scm:
1038       - lf-infra-github-scm:
1039           url: '{git-clone-url}{github-org}/{project}'
1040           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1041           branch: '{branch}'
1042           submodule-recursive: '{submodule-recursive}'
1043           submodule-timeout: '{submodule-timeout}'
1044           choosing-strategy: default
1045           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1046
1047     triggers:
1048       - timed: '{obj:cron}'
1049       - github-pull-request:
1050           trigger-phrase: '^build release$'
1051           only-trigger-phrase: true
1052           status-context: 'Maven Release'
1053           permit-all: true
1054           github-hooks: true
1055           white-list-target-branches:
1056             - '{branch}'
1057
1058 ###############
1059 # Maven Sonar #
1060 ###############
1061
1062 - lf_maven_sonar: &lf_maven_sonar
1063     name: lf-maven-sonar
1064
1065     ######################
1066     # Default parameters #
1067     ######################
1068
1069     branch: master  # Sonar should always be run on master branch
1070     build-days-to-keep: 7
1071     build-timeout: 60
1072     cron: 'H H * * 6'  # run weekly
1073     disable-job: false
1074     git-url: '$GIT_URL/$PROJECT'
1075     github-url: 'https://github.com'
1076     java-version: openjdk8
1077     mvn-global-settings: global-settings
1078     mvn-opts: ''
1079     mvn-params: ''
1080     mvn-version: mvn35
1081     sonar-mvn-goal: 'sonar:sonar'
1082     sonarcloud: false
1083     sonarcloud-project-key: ''
1084     sonarcloud-project-organization: ''
1085     sonarcloud-api-token: ''
1086     stream: master
1087     submodule-recursive: true
1088     submodule-timeout: 10
1089
1090     gerrit_sonar_triggers:
1091       - comment-added-contains-event:
1092           comment-contains-value: run-sonar$
1093
1094     #####################
1095     # Job Configuration #
1096     #####################
1097
1098     disabled: '{disable-job}'
1099
1100     parameters:
1101       - lf-infra-parameters:
1102           project: '{project}'
1103           branch: '{branch}'
1104           stream: '{stream}'
1105       - lf-infra-maven-parameters:
1106           mvn-opts: '{mvn-opts}'
1107           mvn-params: '{mvn-params}'
1108           mvn-version: '{mvn-version}'
1109       - string:
1110           name: ARCHIVE_ARTIFACTS
1111           default: '{archive-artifacts}'
1112           description: Artifacts to archive to the logs server.
1113       - string:
1114           name: SONAR_MAVEN_GOAL
1115           default: '{sonar-mvn-goal}'
1116           description: |
1117               Maven goals to pass to the Sonar call. Typically sonar:sonar
1118               however to use a specific version of the sonar-maven-plugin we
1119               can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
1120
1121     triggers:
1122       - timed: '{obj:cron}'
1123       - gerrit:
1124           server-name: '{gerrit-server-name}'
1125           trigger-on: '{obj:gerrit_sonar_triggers}'
1126           projects:
1127             - project-compare-type: 'ANT'
1128               project-pattern: '{project}'
1129               branches:
1130                 - branch-compare-type: 'ANT'
1131                   branch-pattern: '**/master'
1132           skip-vote:
1133             successful: true
1134             failed: true
1135             unstable: true
1136             notbuilt: true
1137
1138     builders:
1139       - lf-infra-pre-build
1140       # With SonarCloud
1141       - conditional-step:
1142           condition-kind: boolean-expression
1143           condition-expression: '{sonarcloud}'
1144           steps:
1145             - shell: echo 'Using SonarCloud'
1146             - lf-infra-maven-sonarcloud:
1147                 java-version: '{java-version}'
1148                 mvn-settings: '{mvn-settings}'
1149                 mvn-version: '{mvn-version}'
1150                 sonarcloud-project-key: '{sonarcloud-project-key}'
1151                 sonarcloud-project-organization: '{sonarcloud-project-organization}'
1152                 sonarcloud-api-token: '{sonarcloud-api-token}'
1153       # With SonarQube
1154       - conditional-step:
1155           condition-kind: not
1156           condition-operand:
1157             condition-kind: boolean-expression
1158             condition-expression: '{sonarcloud}'
1159           steps:
1160             - shell: echo 'Using SonarQube'
1161             - lf-infra-maven-sonar:
1162                 java-version: '{java-version}'
1163                 mvn-settings: '{mvn-settings}'
1164                 mvn-version: '{mvn-version}'
1165
1166     publishers:
1167       - lf-jacoco-report
1168       - findbugs
1169       - lf-infra-publish
1170
1171 - builder:
1172     name: lf-infra-maven-sonar
1173     # Run a Sonar build with Maven
1174     builders:
1175       - lf-maven-install:
1176           mvn-version: '{mvn-version}'
1177       - lf-update-java-alternatives:
1178           java-version: '{java-version}'
1179       - inject:
1180           # Switch this to the sonar wrapper when JJB 2.0 is available
1181           properties-content: SONAR_HOST_URL=$SONAR_URL
1182       - lf-provide-maven-settings:
1183           global-settings-file: global-settings
1184           settings-file: '{mvn-settings}'
1185       - shell: !include-raw-escape:
1186           - ../shell/common-variables.sh
1187           - ../shell/maven-sonar.sh
1188       - lf-provide-maven-settings-cleanup
1189
1190 - builder:
1191     name: lf-infra-maven-sonarcloud
1192     # Run a Sonar build with Maven
1193     builders:
1194       - lf-maven-install:
1195           mvn-version: '{mvn-version}'
1196       - lf-update-java-alternatives:
1197           java-version: '{java-version}'
1198       - inject:
1199           # Switch this to the sonar wrapper when JJB 2.0 is available
1200           properties-content: |
1201             SONAR_HOST_URL=https://sonarcloud.io
1202             PROJECT_KEY={sonarcloud-project-key}
1203             PROJECT_ORGANIZATION={sonarcloud-project-organization}
1204             API_TOKEN={sonarcloud-api-token}
1205       - lf-provide-maven-settings:
1206           global-settings-file: global-settings
1207           settings-file: '{mvn-settings}'
1208       - shell: !include-raw-escape:
1209           - ../shell/common-variables.sh
1210           - ../shell/maven-sonar.sh
1211       - lf-provide-maven-settings-cleanup
1212
1213 - job-template:
1214     name: '{project-name}-sonar'
1215     id: gerrit-maven-sonar
1216     <<: *lf_maven_common
1217     # yamllint disable-line rule:key-duplicates
1218     <<: *lf_maven_sonar
1219
1220     scm:
1221       - lf-infra-gerrit-scm:
1222           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1223           git-url: '{git-url}'
1224           refspec: $GERRIT_REFSPEC
1225           branch: $GERRIT_BRANCH
1226           submodule-recursive: '{submodule-recursive}'
1227           submodule-timeout: '{submodule-timeout}'
1228           choosing-strategy: default
1229
1230 - job-template:
1231     name: '{project-name}-sonar'
1232     id: github-maven-sonar
1233     <<: *lf_maven_common
1234     # yamllint disable-line rule:key-duplicates
1235     <<: *lf_maven_sonar
1236
1237     properties:
1238       - lf-infra-properties:
1239           build-days-to-keep: '{build-days-to-keep}'
1240       - github:
1241           url: '{github-url}/{github-org}/{project}'
1242
1243     scm:
1244       - lf-infra-github-scm:
1245           url: '{git-clone-url}{github-org}/{project}'
1246           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1247           branch: '$sha1'
1248           submodule-recursive: '{submodule-recursive}'
1249           submodule-timeout: '{submodule-timeout}'
1250           choosing-strategy: default
1251           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1252
1253     triggers:
1254       - timed: '{obj:cron}'
1255       - github-pull-request:
1256           trigger-phrase: '^run-sonar$'
1257           only-trigger-phrase: true
1258           status-context: 'Maven Sonar'
1259           permit-all: true
1260           github-hooks: true
1261           org-list:
1262             - '{github-org}'
1263           white-list: '{obj:github_pr_whitelist}'
1264           admin-list: '{obj:github_pr_admin_list}'
1265           white-list-target-branches:
1266             - '{branch}'
1267
1268 ################
1269 # Maven Verify #
1270 ################
1271
1272 - lf_maven_verify: &lf_maven_verify
1273     name: lf-maven-verify
1274
1275     ######################
1276     # Default parameters #
1277     ######################
1278
1279     branch: master
1280     build-days-to-keep: 7
1281     build-timeout: 60
1282     disable-job: false
1283     git-url: '$GIT_URL/$PROJECT'
1284     github-url: 'https://github.com'
1285     java-version: openjdk8
1286     mvn-global-settings: global-settings
1287     mvn-goals: clean deploy
1288     mvn-opts: ''
1289     mvn-params: '-Dstream=$STREAM -Dmaven.source.skip=true'
1290     mvn-version: mvn35
1291     stream: master
1292     submodule-recursive: true
1293     submodule-timeout: 10
1294
1295     gerrit_verify_triggers:
1296       - patchset-created-event:
1297           exclude-drafts: true
1298           exclude-trivial-rebase: false
1299           exclude-no-code-change: false
1300       - draft-published-event
1301       - comment-added-contains-event:
1302           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
1303
1304     gerrit_trigger_file_paths:
1305       - compare-type: REG_EXP
1306         pattern: '.*'
1307
1308     # github_included_regions MUST match gerrit_trigger_file_paths
1309     github_included_regions:
1310       - '.*'
1311
1312     #####################
1313     # Job Configuration #
1314     #####################
1315
1316     concurrent: true
1317     disabled: '{disable-job}'
1318
1319     builders:
1320       - lf-infra-pre-build
1321       - lf-jacoco-nojava-workaround
1322       - lf-maven-install:
1323           mvn-version: '{mvn-version}'
1324       - lf-update-java-alternatives:
1325           java-version: '{java-version}'
1326       - lf-provide-maven-settings:
1327           global-settings-file: '{mvn-global-settings}'
1328           settings-file: '{mvn-settings}'
1329       - lf-maven-build:
1330           mvn-goals: '{mvn-goals}'
1331       - lf-provide-maven-settings-cleanup
1332
1333     publishers:
1334       - findbugs
1335       - lf-jacoco-report
1336       - lf-infra-publish
1337
1338 - job-template:
1339     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1340     id: gerrit-maven-verify
1341     <<: *lf_maven_common
1342     # yamllint disable-line rule:key-duplicates
1343     <<: *lf_maven_verify
1344
1345     scm:
1346       - lf-infra-gerrit-scm:
1347           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1348           git-url: '{git-url}'
1349           refspec: '$GERRIT_REFSPEC'
1350           branch: '$GERRIT_BRANCH'
1351           submodule-recursive: '{submodule-recursive}'
1352           submodule-timeout: '{submodule-timeout}'
1353           choosing-strategy: gerrit
1354
1355     triggers:
1356       - gerrit:
1357           server-name: '{gerrit-server-name}'
1358           trigger-on: '{obj:gerrit_verify_triggers}'
1359           projects:
1360             - project-compare-type: ANT
1361               project-pattern: '{project}'
1362               branches:
1363                 - branch-compare-type: ANT
1364                   branch-pattern: '**/{branch}'
1365               file-paths: '{obj:gerrit_trigger_file_paths}'
1366
1367 - job-template:
1368     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1369     id: github-maven-verify
1370     <<: *lf_maven_common
1371     # yamllint disable-line rule:key-duplicates
1372     <<: *lf_maven_verify
1373
1374     properties:
1375       - lf-infra-properties:
1376           build-days-to-keep: '{build-days-to-keep}'
1377       - github:
1378           url: '{github-url}/{github-org}/{project}'
1379
1380     scm:
1381       - lf-infra-github-scm:
1382           url: '{git-clone-url}{github-org}/{project}'
1383           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1384           branch: '$sha1'
1385           submodule-recursive: '{submodule-recursive}'
1386           submodule-timeout: '{submodule-timeout}'
1387           choosing-strategy: default
1388           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1389
1390     triggers:
1391       - github-pull-request:
1392           trigger-phrase: '^(recheck|reverify)$'
1393           only-trigger-phrase: false
1394           status-context: 'Maven Verify'
1395           permit-all: true
1396           github-hooks: true
1397           white-list-target-branches:
1398             - '{branch}'
1399           included-regions: '{obj:github_included_regions}'
1400
1401 ###########################
1402 # Maven Verify for Docker #
1403 ###########################
1404
1405 - lf_maven_docker_verify: &lf_maven_docker_verify
1406     name: lf-maven-docker-verify
1407
1408     builders:
1409       - lf-infra-pre-build
1410       - lf-jacoco-nojava-workaround
1411       - lf-maven-install:
1412           mvn-version: '{mvn-version}'
1413       - lf-update-java-alternatives:
1414           java-version: '{java-version}'
1415       - lf-infra-docker-login:
1416           global-settings-file: '{mvn-global-settings}'
1417           settings-file: '{mvn-settings}'
1418       # must provide maven settings AFTER docker due to its cleanup
1419       - lf-provide-maven-settings:
1420           global-settings-file: '{mvn-global-settings}'
1421           settings-file: '{mvn-settings}'
1422       - inject:
1423           properties-content: |
1424               CONTAINER_PULL_REGISTRY={container-public-registry}
1425       - lf-maven-build:
1426           mvn-goals: '{mvn-goals}'
1427       - lf-provide-maven-settings-cleanup
1428
1429 - job-template:
1430     name: '{project-name}-maven-docker-verify-{stream}-{mvn-version}-{java-version}'
1431     id: gerrit-maven-docker-verify
1432     <<: *lf_maven_common
1433     # yamllint disable-line rule:key-duplicates
1434     <<: *lf_maven_verify
1435     # yamllint disable-line rule:key-duplicates
1436     <<: *lf_maven_docker_verify
1437
1438     scm:
1439       - lf-infra-gerrit-scm:
1440           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1441           git-url: '{git-url}'
1442           refspec: '$GERRIT_REFSPEC'
1443           branch: '$GERRIT_BRANCH'
1444           submodule-recursive: '{submodule-recursive}'
1445           submodule-timeout: '{submodule-timeout}'
1446           choosing-strategy: gerrit
1447
1448     triggers:
1449       - gerrit:
1450           server-name: '{gerrit-server-name}'
1451           trigger-on: '{obj:gerrit_verify_triggers}'
1452           projects:
1453             - project-compare-type: ANT
1454               project-pattern: '{project}'
1455               branches:
1456                 - branch-compare-type: ANT
1457                   branch-pattern: '**/{branch}'
1458               file-paths: '{obj:gerrit_trigger_file_paths}'
1459
1460 - job-template:
1461     name: '{project-name}-maven-docker-verify-{stream}-{mvn-version}-{java-version}'
1462     id: github-maven-docker-verify
1463     <<: *lf_maven_common
1464     # yamllint disable-line rule:key-duplicates
1465     <<: *lf_maven_verify
1466     # yamllint disable-line rule:key-duplicates
1467     <<: *lf_maven_docker_verify
1468
1469     properties:
1470       - lf-infra-properties:
1471           build-days-to-keep: '{build-days-to-keep}'
1472       - github:
1473           url: '{github-url}/{github-org}/{project}'
1474
1475     scm:
1476       - lf-infra-github-scm:
1477           url: '{git-clone-url}{github-org}/{project}'
1478           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1479           branch: '$sha1'
1480           submodule-recursive: '{submodule-recursive}'
1481           submodule-timeout: '{submodule-timeout}'
1482           choosing-strategy: default
1483           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1484
1485     triggers:
1486       - github-pull-request:
1487           trigger-phrase: '^(recheck|reverify)$'
1488           only-trigger-phrase: false
1489           status-context: 'Maven Docker Verify'
1490           permit-all: true
1491           github-hooks: true
1492           white-list-target-branches:
1493             - '{branch}'
1494           included-regions: '{obj:github_included_regions}'
1495
1496 #############################
1497 # Maven Verify Dependencies #
1498 #############################
1499
1500 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
1501     name: lf-maven-verify-dependencies
1502
1503     ######################
1504     # Default parameters #
1505     ######################
1506
1507     branch: master
1508     build-days-to-keep: 7
1509     build-timeout: 60
1510     disable-job: false
1511     git-url: '$GIT_URL/$PROJECT'
1512     github-url: 'https://github.com'
1513     java-version: openjdk8
1514     mvn-global-settings: global-settings
1515     mvn-goals: clean deploy
1516     mvn-opts: ''
1517     mvn-params: '-Dstream=$STREAM'
1518     mvn-version: mvn35
1519     stream: master
1520     submodule-recursive: true
1521     submodule-timeout: 10
1522
1523     gerrit_verify_triggers:
1524       - comment-added-contains-event:
1525           comment-contains-value: 'recheck: [0-9 ]+'
1526     gerrit_trigger_file_paths:
1527       - compare-type: ANT
1528         pattern: '**'
1529
1530     #####################
1531     # Job Configuration #
1532     #####################
1533
1534     concurrent: true
1535     disabled: '{disable-job}'
1536
1537     builders:
1538       - lf-infra-pre-build
1539       - lf-jacoco-nojava-workaround
1540       - lf-maven-install:
1541           mvn-version: '{mvn-version}'
1542       - lf-update-java-alternatives:
1543           java-version: '{java-version}'
1544       - lf-provide-maven-settings:
1545           global-settings-file: '{mvn-global-settings}'
1546           settings-file: '{mvn-settings}'
1547       - lf-fetch-dependent-patches
1548       - shell: !include-raw-escape:
1549           - ../shell/common-variables.sh
1550           - ../shell/maven-build-deps.sh
1551       - lf-maven-build:
1552           mvn-goals: '{mvn-goals}'
1553       - lf-provide-maven-settings-cleanup
1554
1555     publishers:
1556       - findbugs
1557       - lf-jacoco-report
1558       - lf-infra-publish
1559
1560 - job-template:
1561     name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1562     id: gerrit-maven-verify-dependencies
1563     <<: *lf_maven_common
1564     # yamllint disable-line rule:key-duplicates
1565     <<: *lf_maven_verify_dependencies
1566
1567     scm:
1568       - lf-infra-gerrit-scm:
1569           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1570           git-url: '{git-url}'
1571           refspec: '$GERRIT_REFSPEC'
1572           branch: '$GERRIT_BRANCH'
1573           submodule-recursive: '{submodule-recursive}'
1574           submodule-timeout: '{submodule-timeout}'
1575           choosing-strategy: gerrit
1576
1577     triggers:
1578       - gerrit:
1579           server-name: '{gerrit-server-name}'
1580           trigger-on: '{obj:gerrit_verify_triggers}'
1581           projects:
1582             - project-compare-type: ANT
1583               project-pattern: '{project}'
1584               branches:
1585                 - branch-compare-type: ANT
1586                   branch-pattern: '**/{branch}'
1587               file-paths: '{obj:gerrit_trigger_file_paths}'