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