2 # This file contains job templates for Maven projects.
12 properties-content: "MAVEN_GOALS={mvn-goals}"
13 - shell: !include-raw-escape:
14 - ../shell/common-variables.sh
15 - ../shell/maven-build.sh
20 - shell: !include-raw:
21 - ../shell/common-variables.sh
22 - ../shell/maven-deploy.sh
25 name: lf-maven-versions-plugin
28 condition-kind: boolean-expression
29 condition-expression: "{maven-versions-plugin}"
32 properties-file: "{version-properties-file}"
34 maven-version: "{mvn-version}"
36 goals: "versions:set versions:update-child-modules versions:commit -B"
38 - "newVersion=${{release_version}}"
39 settings: "{mvn-settings}"
41 global-settings: "global-settings"
42 global-settings-type: cfp
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
59 name: lf-update-java-alternatives
62 # Work around inject plugin overriding our GIT_URL variable incorrectly
63 # https://issues.jenkins-ci.org/browse/JENKINS-49775
65 SET_JDK_VERSION={java-version}
67 - shell: !include-raw-escape: ../shell/update-java-alternatives.sh
69 properties-file: "/tmp/java.env"
75 - lf_maven_common: &lf_maven_common
78 ######################
79 # Default parameters #
80 ######################
85 **/target/**/feature.xml
86 **/target/failsafe-reports/failsafe-summary.xml
87 **/target/surefire-reports/*-output.txt
93 project-type: freestyle
97 - lf-infra-properties:
98 build-days-to-keep: "{build-days-to-keep}"
101 - lf-infra-parameters:
105 - lf-infra-maven-parameters:
106 mvn-opts: "{mvn-opts}"
107 mvn-params: "{mvn-params}"
108 mvn-version: "{mvn-version}"
110 name: ARCHIVE_ARTIFACTS
111 default: "{archive-artifacts}"
112 description: Artifacts to archive to the logs server.
116 build-timeout: "{build-timeout}"
117 jenkins-ssh-credential: "{jenkins-ssh-credential}"
120 # TODO: Make email notification work.
121 # - lf-infra-email-notify:
122 # email-recipients: '{email-recipients}'
123 # email-prefix: '[releng]'
130 - lf_maven_clm: &lf_maven_clm
133 ######################
134 # Default parameters #
135 ######################
138 build-days-to-keep: 30 # 30 days for troubleshooting purposes
141 git-url: "$GIT_URL/$PROJECT"
142 github-url: "https://github.com"
143 java-version: openjdk8
144 mvn-global-settings: global-settings
148 nexus-iq-namespace: "" # Recommend a trailing dash when set. Example: odl-
149 nexus-iq-stage: "build"
151 submodule-recursive: true
152 submodule-timeout: 10
153 submodule-disable: false
155 nexus_iq_scan_patterns:
163 - comment-added-contains-event:
164 comment-contains-value: '^Patch Set\s+\d+:\s+run-clm\s*$'
167 - lf-infra-parameters:
171 - lf-infra-maven-parameters:
172 mvn-opts: "{mvn-opts}"
173 mvn-params: "{mvn-params}"
174 mvn-version: "{mvn-version}"
176 name: ARCHIVE_ARTIFACTS
177 default: "{archive-artifacts}"
178 description: Artifacts to archive to the logs server.
180 nexus-iq-stage: "{nexus-iq-stage}"
182 #####################
183 # Job Configuration #
184 #####################
186 disabled: "{disable-job}"
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
210 name: "{project-name}-maven-clm-{stream}"
213 # yamllint disable-line rule:key-duplicates
217 - lf-infra-gerrit-scm:
218 jenkins-ssh-credential: "{jenkins-ssh-credential}"
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
228 # Build weekly on Saturdays
231 server-name: "{gerrit-server-name}"
232 trigger-on: "{obj:gerrit_clm_triggers}"
234 - project-compare-type: ANT
235 project-pattern: "{project}"
237 - branch-compare-type: ANT
238 branch-pattern: "**/{branch}"
246 name: "{project-name}-maven-clm-{stream}"
249 # yamllint disable-line rule:key-duplicates
253 - lf-infra-properties:
254 build-days-to-keep: "{build-days-to-keep}"
256 url: "{github-url}/{github-org}/{project}"
259 - lf-infra-github-scm:
260 url: "{git-clone-url}{github-org}/{project}"
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}"
270 # Build weekly on Saturdays
272 - github-pull-request:
273 trigger-phrase: "^run-clm$"
274 only-trigger-phrase: true
275 status-context: "CLM"
280 white-list: "{obj:github_pr_whitelist}"
281 admin-list: "{obj:github_pr_admin_list}"
282 white-list-target-branches:
285 #########################
286 # Maven Javadoc Publish #
287 #########################
289 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
290 name: lf-maven-javadoc-publish
292 ######################
293 # Default parameters #
294 ######################
297 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
300 git-url: "$GIT_URL/$PROJECT"
301 github-url: "https://github.com"
302 java-version: openjdk8
303 mvn-global-settings: global-settings
308 submodule-recursive: true
309 submodule-timeout: 10
310 submodule-disable: false
312 gerrit_merge_triggers:
313 - change-merged-event
314 - comment-added-contains-event:
315 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
317 #####################
318 # Job Configuration #
319 #####################
321 disabled: "{disable-job}"
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}"
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
343 name: "{project-name}-maven-javadoc-publish-{stream}-{java-version}"
344 id: gerrit-maven-javadoc-publish
346 # yamllint disable-line rule:key-duplicates
347 <<: *lf_maven_javadoc_publish
349 git-url: "$GIT_URL/$GERRIT_PROJECT"
352 - lf-infra-gerrit-scm:
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}"
364 server-name: "{gerrit-server-name}"
365 trigger-on: "{obj:gerrit_merge_triggers}"
367 - project-compare-type: ANT
368 project-pattern: "{project}"
370 - branch-compare-type: ANT
371 branch-pattern: "**/{branch}"
374 name: "{project-name}-maven-javadoc-publish-{stream}-{java-version}"
375 id: github-maven-javadoc-publish
377 # yamllint disable-line rule:key-duplicates
378 <<: *lf_maven_javadoc_publish
381 - lf-infra-properties:
382 build-days-to-keep: "{build-days-to-keep}"
384 url: "{github-url}/{github-org}/{project}"
387 - lf-infra-github-scm:
388 url: "{git-clone-url}{github-org}/{project}"
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}"
401 - github-pull-request:
402 trigger-phrase: "^remerge$"
403 only-trigger-phrase: true
404 status-context: "Maven Javadoc Publish"
409 white-list: "{obj:github_pr_whitelist}"
410 admin-list: "{obj:github_pr_admin_list}"
411 white-list-target-branches:
414 ########################
415 # Maven Javadoc Verify #
416 ########################
418 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
419 name: lf-maven-javadoc-verify
421 ######################
422 # Default parameters #
423 ######################
426 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
429 git-url: "$GIT_URL/$PROJECT"
430 github-url: "https://github.com"
431 java-version: openjdk8
432 mvn-global-settings: global-settings
437 submodule-recursive: true
438 submodule-timeout: 10
439 submodule-disable: false
441 gerrit_verify_triggers:
442 - patchset-created-event:
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*$'
450 #####################
451 # Job Configuration #
452 #####################
455 disabled: "{disable-job}"
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
472 name: "{project-name}-maven-javadoc-verify-{stream}-{java-version}"
473 id: gerrit-maven-javadoc-verify
475 # yamllint disable-line rule:key-duplicates
476 <<: *lf_maven_javadoc_verify
479 - lf-infra-gerrit-scm:
480 jenkins-ssh-credential: "{jenkins-ssh-credential}"
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
491 server-name: "{gerrit-server-name}"
492 trigger-on: "{obj:gerrit_verify_triggers}"
494 - project-compare-type: ANT
495 project-pattern: "{project}"
497 - branch-compare-type: ANT
498 branch-pattern: "**/{branch}"
501 name: "{project-name}-maven-javadoc-verify-{stream}-{java-version}"
502 id: github-maven-javadoc-verify
504 # yamllint disable-line rule:key-duplicates
505 <<: *lf_maven_javadoc_verify
508 - lf-infra-properties:
509 build-days-to-keep: "{build-days-to-keep}"
511 url: "{github-url}/{github-org}/{project}"
514 - lf-infra-github-scm:
515 url: "{git-clone-url}{github-org}/{project}"
516 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
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}"
525 - github-pull-request:
526 trigger-phrase: ^(recheck|reverify)$
527 only-trigger-phrase: false
528 status-context: "Maven Javadoc Verify"
531 white-list-target-branches:
538 - lf_maven_merge: &lf_maven_merge
541 ######################
542 # Default parameters #
543 ######################
546 build-days-to-keep: 30 # 30 days in case we need to troubleshoot
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
556 mvn-params: "-Dmerge"
558 nexus-cut-dirs: 6 # Number of dirs in the Nexus path to remove for wget -r.
560 submodule-recursive: true
561 submodule-timeout: 10
562 submodule-disable: false
564 gerrit_merge_triggers:
565 - change-merged-event
566 - comment-added-contains-event:
567 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
569 gerrit_trigger_file_paths:
570 - compare-type: REG_EXP
573 # github_included_regions MUST match gerrit_trigger_file_paths
574 github_included_regions:
577 post_build_trigger: ""
579 #####################
580 # Job Configuration #
581 #####################
583 disabled: "{disable-job}"
587 - lf-jacoco-nojava-workaround
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}"
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
603 mvn-goals: "{mvn-goals}"
605 - lf-provide-maven-settings-cleanup
611 - trigger-parameterized-builds: "{obj:post_build_trigger}"
614 name: "{project-name}-maven-merge-{stream}"
615 id: gerrit-maven-merge
617 # yamllint disable-line rule:key-duplicates
621 - lf-infra-gerrit-scm:
622 jenkins-ssh-credential: "{jenkins-ssh-credential}"
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
632 - timed: "{obj:cron}"
634 server-name: "{gerrit-server-name}"
635 trigger-on: "{obj:gerrit_merge_triggers}"
637 - project-compare-type: ANT
638 project-pattern: "{project}"
640 - branch-compare-type: ANT
641 branch-pattern: "**/{branch}"
642 file-paths: "{obj:gerrit_trigger_file_paths}"
645 name: "{project-name}-maven-merge-{stream}"
646 id: github-maven-merge
648 # yamllint disable-line rule:key-duplicates
652 - lf-infra-properties:
653 build-days-to-keep: "{build-days-to-keep}"
655 url: "{github-url}/{github-org}/{project}"
658 - lf-infra-github-scm:
659 url: "{git-clone-url}{github-org}/{project}"
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}"
669 - timed: "{obj:cron}"
673 - github-pull-request:
674 trigger-phrase: "^remerge$"
675 only-trigger-phrase: true
676 status-context: "Maven Merge"
681 white-list: "{obj:github_pr_whitelist}"
682 admin-list: "{obj:github_pr_admin_list}"
683 white-list-target-branches:
685 included-regions: "{obj:github_included_regions}"
687 ##########################
688 # Maven Merge for Docker #
689 ##########################
691 - lf_maven_docker_merge: &lf_maven_docker_merge
692 name: lf-maven-docker-merge
696 - lf-jacoco-nojava-workaround
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}"
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
718 mvn-goals: "{mvn-goals}"
720 - lf-provide-maven-settings-cleanup
723 name: "{project-name}-maven-docker-merge-{stream}"
724 id: gerrit-maven-docker-merge
726 # yamllint disable-line rule:key-duplicates
728 # yamllint disable-line rule:key-duplicates
729 <<: *lf_maven_docker_merge
732 - lf-infra-gerrit-scm:
733 jenkins-ssh-credential: "{jenkins-ssh-credential}"
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
744 server-name: "{gerrit-server-name}"
745 trigger-on: "{obj:gerrit_merge_triggers}"
747 - project-compare-type: ANT
748 project-pattern: "{project}"
750 - branch-compare-type: ANT
751 branch-pattern: "**/{branch}"
752 file-paths: "{obj:gerrit_trigger_file_paths}"
755 name: "{project-name}-maven-docker-merge-{stream}"
756 id: github-maven-docker-merge
758 # yamllint disable-line rule:key-duplicates
760 # yamllint disable-line rule:key-duplicates
761 <<: *lf_maven_docker_merge
764 - lf-infra-properties:
765 build-days-to-keep: "{build-days-to-keep}"
767 url: "{github-url}/{github-org}/{project}"
770 - lf-infra-github-scm:
771 url: "{git-clone-url}{github-org}/{project}"
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}"
784 - github-pull-request:
785 trigger-phrase: "^remerge$"
786 only-trigger-phrase: true
787 status-context: "Maven Docker Merge"
792 white-list: "{obj:github_pr_whitelist}"
793 admin-list: "{obj:github_pr_admin_list}"
794 white-list-target-branches:
796 included-regions: "{obj:github_included_regions}"
802 - lf_maven_stage: &lf_maven_stage
805 ######################
806 # Default parameters #
807 ######################
810 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
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
820 mvn-global-settings: global-settings
821 mvn-goals: clean deploy
827 sign-artifacts: false
830 submodule-recursive: true
831 submodule-timeout: 10
832 submodule-disable: false
834 gerrit_release_triggers:
835 - comment-added-contains-event:
836 comment-contains-value: '^Patch Set\s+\d+:\s+stage-(maven-)?release\s*$'
838 gerrit_trigger_file_paths:
842 # github_included_regions MUST match gerrit_trigger_file_paths
843 github_included_regions:
846 #####################
847 # Job Configuration #
848 #####################
850 disabled: "{disable-job}"
853 - lf-infra-parameters:
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}"
863 name: MAVEN_VERSIONS_PLUGIN
864 default: "{maven-versions-plugin}"
865 description: Use maven-versions-plugin to update pom versions.
867 name: ARCHIVE_ARTIFACTS
868 default: "{archive-artifacts}"
869 description: Artifacts to archive to the logs server.
871 name: STAGING_PROFILE_ID
872 default: "{staging-profile-id}"
873 description: Nexus staging profile ID.
877 - lf-jacoco-nojava-workaround
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}"
890 mvn-settings: "{mvn-settings}"
891 - shell: !include-raw-escape: ../shell/maven-patch-release.sh
893 mvn-goals: "{mvn-goals}"
895 sign-artifacts: "{sign-artifacts}"
896 sign-dir: "$WORKSPACE/m2repo"
897 sign-mode: "{sign-mode}"
899 mvn-global-settings: "{mvn-global-settings}"
900 mvn-settings: "{mvn-settings}"
901 mvn-staging-id: "{mvn-staging-id}"
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
910 name: "{project-name}-maven-stage-{stream}"
911 id: gerrit-maven-stage
913 # yamllint disable-line rule:key-duplicates
917 - lf-infra-gerrit-scm:
918 jenkins-ssh-credential: "{jenkins-ssh-credential}"
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
928 - timed: "{obj:cron}"
930 server-name: "{gerrit-server-name}"
931 trigger-on: "{obj:gerrit_release_triggers}"
933 - project-compare-type: ANT
934 project-pattern: "{project}"
936 - branch-compare-type: ANT
937 branch-pattern: "**/{branch}"
938 file-paths: "{obj:gerrit_trigger_file_paths}"
941 name: "{project-name}-maven-stage-{stream}"
942 id: github-maven-stage
944 # yamllint disable-line rule:key-duplicates
948 - lf-infra-properties:
949 build-days-to-keep: "{build-days-to-keep}"
951 url: "{github-url}/{github-org}/{project}"
954 - lf-infra-github-scm:
955 url: "{git-clone-url}{github-org}/{project}"
956 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
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}"
965 - timed: "{obj:cron}"
966 - github-pull-request:
967 trigger-phrase: "^stage-(maven-)?release$"
968 only-trigger-phrase: true
969 status-context: "Maven Release"
972 white-list-target-branches:
974 included-regions: "{obj:github_included_regions}"
976 ##########################
977 # Maven Stage for Docker #
978 ##########################
980 - lf_maven_docker_stage: &lf_maven_docker_stage
981 name: lf-maven-docker-stage
985 - lf-jacoco-nojava-workaround
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
1005 properties-content: |
1006 CONTAINER_PULL_REGISTRY={container-public-registry}
1007 CONTAINER_PUSH_REGISTRY={container-staging-registry}
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}"
1015 # NO lf-maven-central
1016 - lf-provide-maven-settings-cleanup
1018 gerrit_release_docker_triggers:
1019 - comment-added-contains-event:
1020 comment-contains-value: '^Patch Set\s+\d+:\s+stage-(docker-)?release\s*$'
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
1028 # yamllint disable-line rule:key-duplicates
1029 <<: *lf_maven_docker_stage
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
1043 - timed: "{obj:cron}"
1045 server-name: "{gerrit-server-name}"
1046 trigger-on: "{obj:gerrit_release_docker_triggers}"
1048 - project-compare-type: ANT
1049 project-pattern: "{project}"
1051 - branch-compare-type: ANT
1052 branch-pattern: "**/{branch}"
1053 file-paths: "{obj:gerrit_trigger_file_paths}"
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
1061 # yamllint disable-line rule:key-duplicates
1062 <<: *lf_maven_docker_stage
1065 - lf-infra-properties:
1066 build-days-to-keep: "{build-days-to-keep}"
1068 url: "{github-url}/{github-org}/{project}"
1071 - lf-infra-github-scm:
1072 url: "{git-clone-url}{github-org}/{project}"
1073 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
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}"
1082 - timed: "{obj:cron}"
1083 - github-pull-request:
1084 trigger-phrase: "^stage-(docker-)?release$"
1085 only-trigger-phrase: true
1086 status-context: "Maven Release"
1089 white-list-target-branches:
1091 included-regions: "{obj:github_included_regions}"
1097 - lf_maven_sonar: &lf_maven_sonar
1098 name: lf-maven-sonar
1100 ######################
1101 # Default parameters #
1102 ######################
1104 branch: master # Sonar should always be run on master branch
1105 build-days-to-keep: 7
1107 cron: "H H * * 6" # run weekly
1109 git-url: "$GIT_URL/$PROJECT"
1110 github-url: "https://github.com"
1111 java-version: openjdk8
1113 mvn-global-settings: global-settings
1114 mvn-goals: clean install
1118 sonar-mvn-goal: "sonar:sonar"
1120 sonarcloud-project-key: ""
1121 sonarcloud-project-organization: ""
1122 sonarcloud-api-token: ""
1124 submodule-recursive: true
1125 submodule-timeout: 10
1126 submodule-disable: false
1128 gerrit_sonar_triggers:
1129 - comment-added-contains-event:
1130 comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
1132 #####################
1133 # Job Configuration #
1134 #####################
1136 disabled: "{disable-job}"
1139 - lf-infra-parameters:
1140 project: "{project}"
1143 - lf-infra-maven-parameters:
1144 mvn-opts: "{mvn-opts}"
1145 mvn-params: "{mvn-params}"
1146 mvn-version: "{mvn-version}"
1148 name: ARCHIVE_ARTIFACTS
1149 default: "{archive-artifacts}"
1150 description: Artifacts to archive to the logs server.
1153 default: "{java-opts}"
1155 Java options. Example: -Xmx1024m
1157 name: SONAR_MAVEN_GOAL
1158 default: "{sonar-mvn-goal}"
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".
1165 - timed: "{obj:cron}"
1167 server-name: "{gerrit-server-name}"
1168 trigger-on: "{obj:gerrit_sonar_triggers}"
1170 - project-compare-type: "ANT"
1171 project-pattern: "{project}"
1173 - branch-compare-type: "ANT"
1174 branch-pattern: "**/master"
1182 - lf-infra-pre-build
1185 condition-kind: boolean-expression
1186 condition-expression: "{sonarcloud}"
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}"
1201 condition-kind: boolean-expression
1202 condition-expression: "{sonarcloud}"
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}"
1217 name: lf-infra-maven-sonar
1218 # Run a Sonar build with Maven
1221 mvn-version: "{mvn-version}"
1222 - lf-update-java-alternatives:
1223 java-version: "{java-version}"
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
1238 name: lf-infra-maven-sonarcloud
1239 # Run a Sonar build with Maven
1242 mvn-version: "{mvn-version}"
1243 - lf-update-java-alternatives:
1244 java-version: "{java-version}"
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
1262 name: "{project-name}-sonar"
1263 id: gerrit-maven-sonar
1264 <<: *lf_maven_common
1265 # yamllint disable-line rule:key-duplicates
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
1280 name: "{project-name}-sonar"
1281 id: github-maven-sonar
1282 <<: *lf_maven_common
1283 # yamllint disable-line rule:key-duplicates
1287 - lf-infra-properties:
1288 build-days-to-keep: "{build-days-to-keep}"
1290 url: "{github-url}/{github-org}/{project}"
1293 - lf-infra-github-scm:
1294 url: "{git-clone-url}{github-org}/{project}"
1295 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
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}"
1304 - timed: "{obj:cron}"
1305 - github-pull-request:
1306 trigger-phrase: "^run-sonar$"
1307 only-trigger-phrase: true
1308 status-context: "Maven Sonar"
1313 white-list: "{obj:github_pr_whitelist}"
1314 admin-list: "{obj:github_pr_admin_list}"
1315 white-list-target-branches:
1322 - lf_maven_verify: &lf_maven_verify
1323 name: lf-maven-verify
1325 ######################
1326 # Default parameters #
1327 ######################
1330 build-days-to-keep: 7
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
1339 mvn-params: "-Dstream=$STREAM -Dmaven.source.skip=true"
1342 submodule-recursive: true
1343 submodule-timeout: 10
1344 submodule-disable: false
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*$'
1355 gerrit_trigger_file_paths:
1356 - compare-type: REG_EXP
1359 # github_included_regions MUST match gerrit_trigger_file_paths
1360 github_included_regions:
1363 #####################
1364 # Job Configuration #
1365 #####################
1368 disabled: "{disable-job}"
1371 - lf-infra-pre-build
1372 - lf-jacoco-nojava-workaround
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}"
1381 mvn-goals: "{mvn-goals}"
1382 - lf-provide-maven-settings-cleanup
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
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
1409 server-name: "{gerrit-server-name}"
1410 trigger-on: "{obj:gerrit_verify_triggers}"
1412 - project-compare-type: ANT
1413 project-pattern: "{project}"
1415 - branch-compare-type: ANT
1416 branch-pattern: "**/{branch}"
1417 file-paths: "{obj:gerrit_trigger_file_paths}"
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
1427 - lf-infra-properties:
1428 build-days-to-keep: "{build-days-to-keep}"
1430 url: "{github-url}/{github-org}/{project}"
1433 - lf-infra-github-scm:
1434 url: "{git-clone-url}{github-org}/{project}"
1435 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
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}"
1444 - github-pull-request:
1445 trigger-phrase: "^(recheck|reverify)$"
1446 only-trigger-phrase: false
1447 status-context: "Maven Verify {mvn-version}-{java-version}"
1450 white-list-target-branches:
1452 included-regions: "{obj:github_included_regions}"
1454 ###########################
1455 # Maven Verify for Docker #
1456 ###########################
1458 - lf_maven_docker_verify: &lf_maven_docker_verify
1459 name: lf-maven-docker-verify
1461 # image push not allowed during verification
1462 mvn-goals: clean install
1465 - lf-infra-pre-build
1466 - lf-jacoco-nojava-workaround
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}"
1479 properties-content: |
1480 CONTAINER_PULL_REGISTRY={container-public-registry}
1482 mvn-goals: "{mvn-goals}"
1483 - lf-provide-maven-settings-cleanup
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
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
1507 server-name: "{gerrit-server-name}"
1508 trigger-on: "{obj:gerrit_verify_triggers}"
1510 - project-compare-type: ANT
1511 project-pattern: "{project}"
1513 - branch-compare-type: ANT
1514 branch-pattern: "**/{branch}"
1515 file-paths: "{obj:gerrit_trigger_file_paths}"
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
1527 - lf-infra-properties:
1528 build-days-to-keep: "{build-days-to-keep}"
1530 url: "{github-url}/{github-org}/{project}"
1533 - lf-infra-github-scm:
1534 url: "{git-clone-url}{github-org}/{project}"
1535 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
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}"
1544 - github-pull-request:
1545 trigger-phrase: "^(recheck|reverify)$"
1546 only-trigger-phrase: false
1547 status-context: "Maven Docker Verify {mvn-version}-{java-version}"
1550 white-list-target-branches:
1552 included-regions: "{obj:github_included_regions}"
1554 #############################
1555 # Maven Verify Dependencies #
1556 #############################
1558 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
1559 name: lf-maven-verify-dependencies
1561 ######################
1562 # Default parameters #
1563 ######################
1566 build-days-to-keep: 7
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
1575 mvn-params: "-Dstream=$STREAM"
1578 submodule-recursive: true
1579 submodule-timeout: 10
1580 submodule-disable: false
1582 gerrit_verify_triggers:
1583 - comment-added-contains-event:
1584 comment-contains-value: "recheck: [0-9 ]+"
1585 gerrit_trigger_file_paths:
1589 #####################
1590 # Job Configuration #
1591 #####################
1594 disabled: "{disable-job}"
1597 - lf-infra-pre-build
1598 - lf-jacoco-nojava-workaround
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
1611 mvn-goals: "{mvn-goals}"
1612 - lf-provide-maven-settings-cleanup
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
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
1639 server-name: "{gerrit-server-name}"
1640 trigger-on: "{obj:gerrit_verify_triggers}"
1642 - project-compare-type: ANT
1643 project-pattern: "{project}"
1645 - branch-compare-type: ANT
1646 branch-pattern: "**/{branch}"
1647 file-paths: "{obj:gerrit_trigger_file_paths}"