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