2 # This file contains job templates for Maven projects.
5 name: '{project-name}-maven-jobs'
7 # This job group contains all the recommended jobs that should be deployed
10 # TODO: Add Maven Merge job to this list once it's been fully tested.
14 - gerrit-maven-release
16 - gerrit-maven-verify-dependencies
19 name: '{project-name}-github-maven-jobs'
21 # This job group contains all the recommended jobs that should be deployed
22 # for any project ci that is using github.
24 # TODO: Add Maven Merge job to this list once it's been fully tested.
28 - github-maven-release
32 name: '{project-name}-maven-javadoc-jobs'
34 # This job group contains all the recommended jobs that should be deployed
38 - gerrit-maven-javadoc-publish
39 - gerrit-maven-javadoc-verify
42 name: '{project-name}-github-maven-javadoc-jobs'
44 # This job group contains all the recommended jobs that should be deployed
48 - github-maven-javadoc-publish
49 - github-maven-javadoc-verify
58 - shell: !include-raw:
59 - ../shell/common-variables.sh
60 - ../shell/maven-deploy.sh
66 - lf_maven_common: &lf_maven_common
69 ######################
70 # Default parameters #
71 ######################
76 **/target/**/feature.xml
77 **/target/failsafe-reports/failsafe-summary.xml
78 **/target/surefire-reports/*-output.txt
84 project-type: freestyle
89 - lf-infra-properties:
90 build-days-to-keep: '{build-days-to-keep}'
93 - lf-infra-parameters:
97 lftools-version: '{lftools-version}'
98 - lf-infra-maven-parameters:
99 mvn-opts: '{mvn-opts}'
100 mvn-params: '{mvn-params}'
101 mvn-version: '{mvn-version}'
102 # Staging repos do not make sense for CLM jobs so set it blank.
103 staging-profile-id: '{staging-profile-id}'
105 name: ARCHIVE_ARTIFACTS
106 default: '{archive-artifacts}'
107 description: Artifacts to archive to the logs server.
111 build-timeout: '{build-timeout}'
112 jenkins-ssh-credential: '{jenkins-ssh-credential}'
115 # TODO: Make email notification work.
116 # - lf-infra-email-notify:
117 # email-recipients: '{email-recipients}'
118 # email-prefix: '[releng]'
125 - lf_maven_clm: &lf_maven_clm
128 ######################
129 # Default parameters #
130 ######################
133 build-days-to-keep: 30 # 30 days for troubleshooting purposes
135 git-url: '$GIT_URL/$PROJECT'
136 java-version: openjdk8
137 mvn-global-settings: global-settings
141 staging-profile-id: '' # Unused in this job
143 submodule-recursive: true
146 - comment-added-contains-event:
147 comment-contains-value: run-clm$
149 #####################
150 # Job Configuration #
151 #####################
154 # Build weekly on Saturdays
157 server-name: '{gerrit-server-name}'
158 trigger-on: '{obj:gerrit_clm_triggers}'
160 - project-compare-type: ANT
161 project-pattern: '{project}'
163 - branch-compare-type: ANT
164 branch-pattern: '**/{branch}'
173 mvn-version: '{mvn-version}'
174 - lf-provide-maven-settings:
175 global-settings-file: '{mvn-global-settings}'
176 settings-file: '{mvn-settings}'
177 - shell: !include-raw-escape:
178 - ../shell/common-variables.sh
179 - ../shell/sonatype-clm.sh
180 - lf-provide-maven-settings-cleanup
181 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
183 application-name: '{project-name}'
186 name: '{project-name}-maven-clm-{stream}'
189 # yamllint disable-line rule:key-duplicates
193 - lf-infra-gerrit-scm:
194 jenkins-ssh-credential: '{jenkins-ssh-credential}'
196 refspec: '$GERRIT_REFSPEC'
197 branch: '$GERRIT_BRANCH'
198 submodule-recursive: '{submodule-recursive}'
199 choosing-strategy: default
202 name: '{project-name}-maven-clm-{stream}'
205 # yamllint disable-line rule:key-duplicates
210 url: '{git-url}/{github-org}/{project}'
213 - lf-infra-github-scm:
214 url: '{git-clone-url}{github-org}/{project}'
216 branch: 'refs/heads/{branch}'
217 submodule-recursive: '{submodule-recursive}'
218 choosing-strategy: default
219 jenkins-ssh-credential: '{jenkins-ssh-credential}'
222 - lf-infra-github-pr-trigger:
223 trigger-phrase: '^run-clm$'
224 only-trigger-phrase: false
225 status-context: 'CLM'
231 github_pr_admin_list:
234 #########################
235 # Maven Javadoc Publish #
236 #########################
238 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
239 name: lf-maven-javadoc-publish
241 ######################
242 # Default parameters #
243 ######################
246 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
248 git-url: '$GIT_URL/$PROJECT'
249 java-version: openjdk8
250 mvn-global-settings: global-settings
254 staging-profile-id: '' # Unused by the javadoc jobs
256 submodule-recursive: true
258 gerrit_merge_triggers:
259 - change-merged-event
260 - comment-added-contains-event:
261 comment-contains-value: remerge$
263 #####################
264 # Job Configuration #
265 #####################
269 mvn-version: '{mvn-version}'
270 - lf-provide-maven-settings:
271 global-settings-file: '{mvn-global-settings}'
272 settings-file: '{mvn-settings}'
273 - lf-infra-create-netrc:
274 server-id: '{mvn-site-id}'
276 properties-content: 'DEPLOY_PATH={javadoc-path}'
277 - shell: !include-raw-escape:
278 - ../shell/common-variables.sh
279 - ../shell/maven-javadoc-generate.sh
280 - ../shell/lftools-install.sh
281 - ../shell/maven-javadoc-publish.sh
282 - lf-provide-maven-settings-cleanup
285 name: '{project-name}-maven-javadoc-publish-{stream}'
286 id: gerrit-maven-javadoc-publish
288 # yamllint disable-line rule:key-duplicates
289 <<: *lf_maven_javadoc_publish
291 git-url: '$GIT_URL/$GERRIT_PROJECT'
294 - lf-infra-gerrit-scm:
298 submodule-recursive: '{submodule-recursive}'
299 choosing-strategy: default
300 jenkins-ssh-credential: '{jenkins-ssh-credential}'
304 server-name: '{gerrit-server-name}'
305 trigger-on: '{obj:gerrit_merge_triggers}'
307 - project-compare-type: ANT
308 project-pattern: '{project}'
310 - branch-compare-type: ANT
311 branch-pattern: '**/{branch}'
314 name: '{project-name}-maven-javadoc-publish-{stream}'
315 id: github-maven-javadoc-publish
317 # yamllint disable-line rule:key-duplicates
318 <<: *lf_maven_javadoc_publish
322 url: '{git-url}/{github-org}/{project}'
325 - lf-infra-github-scm:
326 url: '{git-clone-url}{github-org}/{project}'
329 submodule-recursive: '{submodule-recursive}'
330 choosing-strategy: default
331 jenkins-ssh-credential: '{jenkins-ssh-credential}'
337 - lf-infra-github-pr-trigger:
338 trigger-phrase: '^remerge$'
339 only-trigger-phrase: true
340 status-context: 'JJB Merge'
343 github-org: '{github-org}'
344 github_pr_whitelist: '{obj:github_pr_whitelist}'
345 github_pr_admin_list: '{obj:github_pr_admin_list}'
347 ########################
348 # Maven Javadoc Verify #
349 ########################
351 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
352 name: lf-maven-javadoc-verify
354 ######################
355 # Default parameters #
356 ######################
359 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
361 git-url: '$GIT_URL/$PROJECT'
362 java-version: openjdk8
363 mvn-global-settings: global-settings
367 staging-profile-id: '' # Unused by the javadoc jobs
369 submodule-recursive: true
371 gerrit_verify_triggers:
372 - patchset-created-event:
374 exclude-trivial-rebase: false
375 exclude-no-code-change: false
376 - draft-published-event
377 - comment-added-contains-event:
378 comment-contains-value: recheck$
380 #####################
381 # Job Configuration #
382 #####################
388 mvn-version: '{mvn-version}'
389 - lf-provide-maven-settings:
390 global-settings-file: '{mvn-global-settings}'
391 settings-file: '{mvn-settings}'
392 - shell: !include-raw-escape:
393 - ../shell/common-variables.sh
394 - ../shell/maven-javadoc-generate.sh
395 - lf-provide-maven-settings-cleanup
398 name: '{project-name}-maven-javadoc-verify-{stream}'
399 id: gerrit-maven-javadoc-verify
401 # yamllint disable-line rule:key-duplicates
402 <<: *lf_maven_javadoc_verify
405 - lf-infra-gerrit-scm:
406 jenkins-ssh-credential: '{jenkins-ssh-credential}'
408 refspec: '$GERRIT_REFSPEC'
409 branch: '$GERRIT_BRANCH'
410 submodule-recursive: '{submodule-recursive}'
411 choosing-strategy: gerrit
415 server-name: '{gerrit-server-name}'
416 trigger-on: '{obj:gerrit_verify_triggers}'
418 - project-compare-type: ANT
419 project-pattern: '{project}'
421 - branch-compare-type: ANT
422 branch-pattern: '**/{branch}'
425 name: '{project-name}-maven-javadoc-verify-{stream}'
426 id: github-maven-javadoc-verify
428 # yamllint disable-line rule:key-duplicates
429 <<: *lf_maven_javadoc_verify
433 url: '{git-url}/{github-org}/{project}'
436 - lf-infra-github-scm:
437 url: '{git-clone-url}{github-org}/{project}'
438 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
440 submodule-recursive: '{submodule-recursive}'
441 choosing-strategy: default
442 jenkins-ssh-credential: '{jenkins-ssh-credential}'
445 - lf-infra-github-pr-trigger:
446 trigger-phrase: '^recheck$'
447 only-trigger-phrase: true
448 status-context: 'Maven Javadoc'
454 github_pr_admin_list:
461 - lf_maven_merge: &lf_maven_merge
464 ######################
465 # Default parameters #
466 ######################
469 build-days-to-keep: 30 # 30 days in case we need to troubleshoot
471 cron: 'H H * * 0' # push fresh snapshot weekly
472 git-url: '$GIT_URL/$PROJECT'
473 java-version: openjdk8
474 mvn-global-settings: global-settings
476 mvn-params: '-Dmerge'
478 nexus-cut-dirs: 6 # Number of dirs in the Nexus path to remove for wget -r.
479 staging-profile-id: '' # Unused by this job.
481 submodule-recursive: true
483 gerrit_merge_triggers:
484 - change-merged-event
485 - comment-added-contains-event:
486 comment-contains-value: remerge$
488 gerrit_trigger_file_paths:
492 post_build_trigger: ''
494 #####################
495 # Job Configuration #
496 #####################
499 - lf-jacoco-nojava-workaround
501 mvn-version: '{mvn-version}'
502 - lf-provide-maven-settings:
503 global-settings-file: '{mvn-global-settings}'
504 settings-file: '{mvn-settings}'
505 - lf-infra-create-netrc:
506 server-id: '{mvn-snapshot-id}'
508 properties-content: |
509 NEXUS_CUT_DIRS={nexus-cut-dirs}
510 NEXUS_REPO={nexus-snapshot-repo}
511 - shell: !include-raw-escape:
512 - ../shell/lftools-install.sh
513 - ../shell/common-variables.sh
514 - ../shell/maven-fetch-metadata.sh
515 - ../shell/maven-build.sh
517 - lf-provide-maven-settings-cleanup
523 - trigger-parameterized-builds: '{obj:post_build_trigger}'
526 name: '{project-name}-maven-merge-{stream}'
527 id: gerrit-maven-merge
529 # yamllint disable-line rule:key-duplicates
533 - lf-infra-gerrit-scm:
534 jenkins-ssh-credential: '{jenkins-ssh-credential}'
536 refspec: '$GERRIT_REFSPEC'
537 branch: '$GERRIT_BRANCH'
538 submodule-recursive: '{submodule-recursive}'
539 choosing-strategy: default
542 - timed: '{obj:cron}'
544 server-name: '{gerrit-server-name}'
545 trigger-on: '{obj:gerrit_merge_triggers}'
547 - project-compare-type: ANT
548 project-pattern: '{project}'
550 - branch-compare-type: ANT
551 branch-pattern: '**/{branch}'
552 file-paths: '{obj:gerrit_trigger_file_paths}'
555 name: '{project-name}-maven-merge-{stream}'
556 id: github-maven-merge
558 # yamllint disable-line rule:key-duplicates
563 url: '{git-url}/{github-org}/{project}'
566 - lf-infra-github-scm:
567 url: '{git-clone-url}{github-org}/{project}'
568 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
570 submodule-recursive: '{submodule-recursive}'
571 choosing-strategy: default
572 jenkins-ssh-credential: '{jenkins-ssh-credential}'
575 - lf-infra-github-pr-trigger:
576 trigger-phrase: '^remerge$'
577 only-trigger-phrase: false
578 status-context: 'Maven Merge'
584 github_pr_admin_list:
591 - lf_maven_release: &lf_maven_release
592 name: lf-maven-release
594 ######################
595 # Default parameters #
596 ######################
599 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
602 git-url: '$GIT_URL/$PROJECT'
603 java-version: openjdk8
604 mvn-global-settings: global-settings
609 submodule-recursive: true
611 gerrit_release_triggers:
612 - comment-added-contains-event:
613 comment-contains-value: build release$
615 #####################
616 # Job Configuration #
617 #####################
620 - lf-jacoco-nojava-workaround
622 mvn-version: '{mvn-version}'
623 - lf-provide-maven-settings:
624 global-settings-file: '{mvn-global-settings}'
625 settings-file: '{mvn-settings}'
626 - lf-infra-create-netrc:
627 server-id: '{mvn-staging-id}'
628 - shell: !include-raw-escape:
629 - ../shell/lftools-install.sh
630 - ../shell/common-variables.sh
631 - ../shell/maven-patch-release.sh
632 - ../shell/maven-build.sh
633 - ../shell/maven-stage.sh
634 - lf-provide-maven-settings-cleanup
637 name: '{project-name}-maven-release-{stream}'
638 id: gerrit-maven-release
640 # yamllint disable-line rule:key-duplicates
641 <<: *lf_maven_release
644 - lf-infra-gerrit-scm:
645 jenkins-ssh-credential: '{jenkins-ssh-credential}'
647 refspec: '$GERRIT_REFSPEC'
648 branch: '$GERRIT_BRANCH'
649 submodule-recursive: '{submodule-recursive}'
650 choosing-strategy: default
653 - timed: '{obj:cron}'
655 server-name: '{gerrit-server-name}'
656 trigger-on: '{obj:gerrit_release_triggers}'
658 - project-compare-type: ANT
659 project-pattern: '{project}'
661 - branch-compare-type: ANT
662 branch-pattern: '**/{branch}'
665 name: '{project-name}-maven-release-{stream}'
666 id: github-maven-release
668 # yamllint disable-line rule:key-duplicates
669 <<: *lf_maven_release
673 url: '{git-url}/{github-org}/{project}'
676 - lf-infra-github-scm:
677 url: '{git-clone-url}{github-org}/{project}'
678 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
680 submodule-recursive: '{submodule-recursive}'
681 choosing-strategy: default
682 jenkins-ssh-credential: '{jenkins-ssh-credential}'
685 - timed: '{obj:cron}'
686 - lf-infra-github-pr-trigger:
687 trigger-phrase: '^build release$'
688 only-trigger-phrase: true
689 status-context: 'Maven Release'
695 github_pr_admin_list:
702 - lf_maven_sonar: &lf_maven_sonar
705 ######################
706 # Default parameters #
707 ######################
709 branch: master # Sonar should always be run on master branch
710 build-days-to-keep: 7
712 cron: 'H H * * 6' # run weekly
713 git-url: '$GIT_URL/$PROJECT'
714 java-version: openjdk8
715 mvn-global-settings: global-settings
719 sonar-mvn-goal: 'sonar:sonar'
720 staging-profile-id: '' # Unused in this job
722 submodule-recursive: true
724 gerrit_sonar_triggers:
725 - comment-added-contains-event:
726 comment-contains-value: run-sonar$
728 #####################
729 # Job Configuration #
730 #####################
733 - lf-infra-parameters:
737 lftools-version: '{lftools-version}'
738 - lf-infra-maven-parameters:
739 mvn-opts: '{mvn-opts}'
740 mvn-params: '{mvn-params}'
741 mvn-version: '{mvn-version}'
742 # Staging repos do not make sense for Sonar jobs so set it blank.
743 staging-profile-id: ''
745 name: ARCHIVE_ARTIFACTS
746 default: '{archive-artifacts}'
747 description: Artifacts to archive to the logs server.
749 name: SONAR_MAVEN_GOAL
750 default: '{sonar-mvn-goal}'
752 Maven goals to pass to the Sonar call. Typically sonar:sonar
753 however to use a specific version of the sonar-maven-plugin we
754 can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
757 - timed: '{obj:cron}'
759 server-name: '{gerrit-server-name}'
760 trigger-on: '{obj:gerrit_sonar_triggers}'
762 - project-compare-type: 'ANT'
763 project-pattern: '{project}'
765 - branch-compare-type: 'ANT'
766 branch-pattern: '**/master'
774 - lf-infra-maven-sonar:
775 mvn-settings: '{mvn-settings}'
776 mvn-version: '{mvn-version}'
784 name: lf-infra-maven-sonar
785 # Run a Sonar build with Maven
788 mvn-version: '{mvn-version}'
790 # Switch this to the sonar wrapper when JJB 2.0 is available
791 properties-content: SONAR_HOST_URL=$SONAR_URL
792 - lf-provide-maven-settings:
793 global-settings-file: global-settings
794 settings-file: '{mvn-settings}'
795 - shell: !include-raw-escape:
796 - ../shell/common-variables.sh
797 - ../shell/maven-sonar.sh
798 - lf-provide-maven-settings-cleanup
801 name: '{project-name}-sonar'
802 id: gerrit-maven-sonar
804 # yamllint disable-line rule:key-duplicates
808 - lf-infra-gerrit-scm:
809 jenkins-ssh-credential: '{jenkins-ssh-credential}'
811 refspec: $GERRIT_REFSPEC
812 branch: $GERRIT_BRANCH
813 submodule-recursive: '{submodule-recursive}'
814 choosing-strategy: default
817 name: '{project-name}-sonar'
818 id: github-maven-sonar
820 # yamllint disable-line rule:key-duplicates
825 url: '{git-url}/{github-org}/{project}'
828 - lf-infra-github-scm:
829 url: '{git-clone-url}{github-org}/{project}'
830 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
832 submodule-recursive: '{submodule-recursive}'
833 choosing-strategy: default
834 jenkins-ssh-credential: '{jenkins-ssh-credential}'
837 - lf-infra-github-pr-trigger:
838 trigger-phrase: '^recheck$'
839 only-trigger-phrase: false
840 status-context: 'Maven Verify'
846 github_pr_admin_list:
853 - lf_maven_verify: &lf_maven_verify
854 name: lf-maven-verify
856 ######################
857 # Default parameters #
858 ######################
861 build-days-to-keep: 7
863 git-url: '$GIT_URL/$PROJECT'
864 java-version: openjdk8
865 mvn-global-settings: global-settings
867 mvn-params: '-Dstream=$STREAM'
869 staging-profile-id: '' # Unused in this job
871 submodule-recursive: true
873 gerrit_verify_triggers:
874 - patchset-created-event:
876 exclude-trivial-rebase: false
877 exclude-no-code-change: false
878 - draft-published-event
879 - comment-added-contains-event:
880 comment-contains-value: recheck$
881 gerrit_trigger_file_paths:
885 #####################
886 # Job Configuration #
887 #####################
892 - lf-jacoco-nojava-workaround
894 mvn-version: '{mvn-version}'
895 - lf-provide-maven-settings:
896 global-settings-file: '{mvn-global-settings}'
897 settings-file: '{mvn-settings}'
898 - shell: !include-raw-escape:
899 - ../shell/lftools-install.sh
900 - ../shell/common-variables.sh
901 - ../shell/maven-build.sh
902 - lf-provide-maven-settings-cleanup
910 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
911 id: gerrit-maven-verify
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 choosing-strategy: gerrit
927 server-name: '{gerrit-server-name}'
928 trigger-on: '{obj:gerrit_verify_triggers}'
930 - project-compare-type: ANT
931 project-pattern: '{project}'
933 - branch-compare-type: ANT
934 branch-pattern: '**/{branch}'
935 file-paths: '{obj:gerrit_trigger_file_paths}'
938 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
939 id: github-maven-verify
941 # yamllint disable-line rule:key-duplicates
946 url: '{git-url}/{github-org}/{project}'
949 - lf-infra-github-scm:
950 url: '{git-clone-url}{github-org}/{project}'
951 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
953 submodule-recursive: '{submodule-recursive}'
954 choosing-strategy: default
955 jenkins-ssh-credential: '{jenkins-ssh-credential}'
958 - lf-infra-github-pr-trigger:
959 trigger-phrase: '^recheck$'
960 only-trigger-phrase: false
961 status-context: 'Maven Verify'
967 github_pr_admin_list:
970 #############################
971 # Maven Verify Dependencies #
972 #############################
974 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
975 name: lf-maven-verify-dependencies
977 ######################
978 # Default parameters #
979 ######################
982 build-days-to-keep: 7
984 git-url: '$GIT_URL/$PROJECT'
985 java-version: openjdk8
986 mvn-global-settings: global-settings
988 mvn-params: '-Dstream=$STREAM'
990 staging-profile-id: '' # Unused by this job
992 submodule-recursive: true
994 gerrit_verify_triggers:
995 - comment-added-contains-event:
996 comment-contains-value: 'recheck: [0-9 ]+'
997 gerrit_trigger_file_paths:
1001 #####################
1002 # Job Configuration #
1003 #####################
1008 - lf-jacoco-nojava-workaround
1010 mvn-version: '{mvn-version}'
1011 - lf-provide-maven-settings:
1012 global-settings-file: '{mvn-global-settings}'
1013 settings-file: '{mvn-settings}'
1014 - lf-fetch-dependent-patches
1015 - shell: !include-raw-escape:
1016 - ../shell/common-variables.sh
1017 - ../shell/maven-build-deps.sh
1018 - shell: !include-raw-escape:
1019 - ../shell/common-variables.sh
1020 - ../shell/maven-build.sh
1021 - lf-provide-maven-settings-cleanup
1029 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1030 id: gerrit-maven-verify-dependencies
1031 <<: *lf_maven_common
1032 # yamllint disable-line rule:key-duplicates
1033 <<: *lf_maven_verify_dependencies
1036 - lf-infra-gerrit-scm:
1037 jenkins-ssh-credential: '{jenkins-ssh-credential}'
1038 git-url: '{git-url}'
1039 refspec: '$GERRIT_REFSPEC'
1040 branch: '$GERRIT_BRANCH'
1041 submodule-recursive: '{submodule-recursive}'
1042 choosing-strategy: gerrit
1046 server-name: '{gerrit-server-name}'
1047 trigger-on: '{obj:gerrit_verify_triggers}'
1049 - project-compare-type: ANT
1050 project-pattern: '{project}'
1052 - branch-compare-type: ANT
1053 branch-pattern: '**/{branch}'
1054 file-paths: '{obj:gerrit_trigger_file_paths}'