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
88 - lf-infra-properties:
89 build-days-to-keep: '{build-days-to-keep}'
92 - lf-infra-parameters:
96 lftools-version: '{lftools-version}'
97 - lf-infra-maven-parameters:
98 mvn-opts: '{mvn-opts}'
99 mvn-params: '{mvn-params}'
100 mvn-version: '{mvn-version}'
101 # Staging repos do not make sense for CLM jobs so set it blank.
102 staging-profile-id: '{staging-profile-id}'
104 name: ARCHIVE_ARTIFACTS
105 default: '{archive-artifacts}'
106 description: Artifacts to archive to the logs server.
110 build-timeout: '{build-timeout}'
111 jenkins-ssh-credential: '{jenkins-ssh-credential}'
114 # TODO: Make email notification work.
115 # - lf-infra-email-notify:
116 # email-recipients: '{email-recipients}'
117 # email-prefix: '[releng]'
124 - lf_maven_clm: &lf_maven_clm
127 ######################
128 # Default parameters #
129 ######################
132 build-days-to-keep: 30 # 30 days for troubleshooting purposes
134 git-url: '$GIT_URL/$PROJECT'
135 java-version: openjdk8
136 mvn-global-settings: global-settings
140 staging-profile-id: '' # Unused in this job
142 submodule-recursive: true
145 - comment-added-contains-event:
146 comment-contains-value: run-clm$
148 #####################
149 # Job Configuration #
150 #####################
153 # Build weekly on Saturdays
156 server-name: '{gerrit-server-name}'
157 trigger-on: '{obj:gerrit_clm_triggers}'
159 - project-compare-type: ANT
160 project-pattern: '{project}'
162 - branch-compare-type: ANT
163 branch-pattern: '**/{branch}'
172 mvn-version: '{mvn-version}'
173 - lf-provide-maven-settings:
174 global-settings-file: '{mvn-global-settings}'
175 settings-file: '{mvn-settings}'
176 - shell: !include-raw-escape:
177 - ../shell/common-variables.sh
178 - ../shell/sonatype-clm.sh
179 - lf-provide-maven-settings-cleanup
180 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
182 application-name: '{project-name}'
185 name: '{project-name}-maven-clm-{stream}'
188 # yamllint disable-line rule:key-duplicates
192 - lf-infra-gerrit-scm:
193 jenkins-ssh-credential: '{jenkins-ssh-credential}'
195 refspec: '$GERRIT_REFSPEC'
196 branch: '$GERRIT_BRANCH'
197 submodule-recursive: '{submodule-recursive}'
198 choosing-strategy: default
201 name: '{project-name}-maven-clm-{stream}'
204 # yamllint disable-line rule:key-duplicates
209 url: '{git-url}/{github-org}/{project}'
212 - lf-infra-github-scm:
213 url: '{git-clone-url}{github-org}/{project}'
215 branch: 'refs/heads/{branch}'
216 submodule-recursive: '{submodule-recursive}'
217 choosing-strategy: default
218 jenkins-ssh-credential: '{jenkins-ssh-credential}'
221 - lf-infra-github-pr-trigger:
222 trigger-phrase: '^run-clm$'
223 only-trigger-phrase: false
224 status-context: 'CLM'
230 github_pr_admin_list:
233 #########################
234 # Maven Javadoc Publish #
235 #########################
237 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
238 name: lf-maven-javadoc-publish
240 ######################
241 # Default parameters #
242 ######################
245 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
247 git-url: '$GIT_URL/$PROJECT'
248 java-version: openjdk8
249 mvn-global-settings: global-settings
253 staging-profile-id: '' # Unused by the javadoc jobs
255 submodule-recursive: true
257 gerrit_merge_triggers:
258 - change-merged-event
259 - comment-added-contains-event:
260 comment-contains-value: remerge$
262 #####################
263 # Job Configuration #
264 #####################
268 mvn-version: '{mvn-version}'
269 - lf-provide-maven-settings:
270 global-settings-file: '{mvn-global-settings}'
271 settings-file: '{mvn-settings}'
272 - lf-infra-create-netrc:
273 server-id: '{mvn-site-id}'
275 properties-content: 'DEPLOY_PATH={javadoc-path}'
276 - shell: !include-raw-escape:
277 - ../shell/common-variables.sh
278 - ../shell/maven-javadoc-generate.sh
279 - ../shell/lftools-install.sh
280 - ../shell/maven-javadoc-publish.sh
281 - lf-provide-maven-settings-cleanup
284 name: '{project-name}-maven-javadoc-publish-{stream}'
285 id: gerrit-maven-javadoc-publish
287 # yamllint disable-line rule:key-duplicates
288 <<: *lf_maven_javadoc_publish
290 git-url: '$GIT_URL/$GERRIT_PROJECT'
293 - lf-infra-gerrit-scm:
297 submodule-recursive: '{submodule-recursive}'
298 choosing-strategy: default
299 jenkins-ssh-credential: '{jenkins-ssh-credential}'
303 server-name: '{gerrit-server-name}'
304 trigger-on: '{obj:gerrit_merge_triggers}'
306 - project-compare-type: ANT
307 project-pattern: '{project}'
309 - branch-compare-type: ANT
310 branch-pattern: '**/{branch}'
313 name: '{project-name}-maven-javadoc-publish-{stream}'
314 id: github-maven-javadoc-publish
316 # yamllint disable-line rule:key-duplicates
317 <<: *lf_maven_javadoc_publish
321 url: '{git-url}/{github-org}/{project}'
324 - lf-infra-github-scm:
325 url: '{git-clone-url}{github-org}/{project}'
328 submodule-recursive: '{submodule-recursive}'
329 choosing-strategy: default
330 jenkins-ssh-credential: '{jenkins-ssh-credential}'
336 - lf-infra-github-pr-trigger:
337 trigger-phrase: '^remerge$'
338 only-trigger-phrase: true
339 status-context: 'JJB Merge'
342 github-org: '{github-org}'
343 github_pr_whitelist: '{obj:github_pr_whitelist}'
344 github_pr_admin_list: '{obj:github_pr_admin_list}'
346 ########################
347 # Maven Javadoc Verify #
348 ########################
350 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
351 name: lf-maven-javadoc-verify
353 ######################
354 # Default parameters #
355 ######################
358 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
360 git-url: '$GIT_URL/$PROJECT'
361 java-version: openjdk8
362 mvn-global-settings: global-settings
366 staging-profile-id: '' # Unused by the javadoc jobs
368 submodule-recursive: true
370 gerrit_verify_triggers:
371 - patchset-created-event:
373 exclude-trivial-rebase: false
374 exclude-no-code-change: false
375 - draft-published-event
376 - comment-added-contains-event:
377 comment-contains-value: recheck$
379 #####################
380 # Job Configuration #
381 #####################
387 mvn-version: '{mvn-version}'
388 - lf-provide-maven-settings:
389 global-settings-file: '{mvn-global-settings}'
390 settings-file: '{mvn-settings}'
391 - shell: !include-raw-escape:
392 - ../shell/common-variables.sh
393 - ../shell/maven-javadoc-generate.sh
394 - lf-provide-maven-settings-cleanup
397 name: '{project-name}-maven-javadoc-verify-{stream}'
398 id: gerrit-maven-javadoc-verify
400 # yamllint disable-line rule:key-duplicates
401 <<: *lf_maven_javadoc_verify
404 - lf-infra-gerrit-scm:
405 jenkins-ssh-credential: '{jenkins-ssh-credential}'
407 refspec: '$GERRIT_REFSPEC'
408 branch: '$GERRIT_BRANCH'
409 submodule-recursive: '{submodule-recursive}'
410 choosing-strategy: gerrit
414 server-name: '{gerrit-server-name}'
415 trigger-on: '{obj:gerrit_verify_triggers}'
417 - project-compare-type: ANT
418 project-pattern: '{project}'
420 - branch-compare-type: ANT
421 branch-pattern: '**/{branch}'
424 name: '{project-name}-maven-javadoc-verify-{stream}'
425 id: github-maven-javadoc-verify
427 # yamllint disable-line rule:key-duplicates
428 <<: *lf_maven_javadoc_verify
432 url: '{git-url}/{github-org}/{project}'
435 - lf-infra-github-scm:
436 url: '{git-clone-url}{github-org}/{project}'
437 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
439 submodule-recursive: '{submodule-recursive}'
440 choosing-strategy: default
441 jenkins-ssh-credential: '{jenkins-ssh-credential}'
444 - lf-infra-github-pr-trigger:
445 trigger-phrase: '^recheck$'
446 only-trigger-phrase: true
447 status-context: 'Maven Javadoc'
453 github_pr_admin_list:
460 - lf_maven_merge: &lf_maven_merge
463 ######################
464 # Default parameters #
465 ######################
468 build-days-to-keep: 30 # 30 days in case we need to troubleshoot
470 cron: 'H H * * 0' # push fresh snapshot weekly
471 git-url: '$GIT_URL/$PROJECT'
472 java-version: openjdk8
473 mvn-global-settings: global-settings
475 mvn-params: '-Dmerge'
477 nexus-cut-dirs: 6 # Number of dirs in the Nexus path to remove for wget -r.
478 staging-profile-id: '' # Unused by this job.
480 submodule-recursive: true
482 gerrit_merge_triggers:
483 - change-merged-event
484 - comment-added-contains-event:
485 comment-contains-value: remerge$
487 gerrit_trigger_file_paths:
491 post_build_trigger: ''
493 #####################
494 # Job Configuration #
495 #####################
498 - lf-jacoco-nojava-workaround
500 mvn-version: '{mvn-version}'
501 - lf-provide-maven-settings:
502 global-settings-file: '{mvn-global-settings}'
503 settings-file: '{mvn-settings}'
504 - lf-infra-create-netrc:
505 server-id: '{mvn-snapshot-id}'
507 properties-content: |
508 NEXUS_CUT_DIRS={nexus-cut-dirs}
509 NEXUS_REPO={nexus-snapshot-repo}
510 - shell: !include-raw-escape:
511 - ../shell/lftools-install.sh
512 - ../shell/common-variables.sh
513 - ../shell/maven-fetch-metadata.sh
514 - ../shell/maven-build.sh
516 - lf-provide-maven-settings-cleanup
522 - trigger-parameterized-builds: '{obj:post_build_trigger}'
525 name: '{project-name}-maven-merge-{stream}'
526 id: gerrit-maven-merge
528 # yamllint disable-line rule:key-duplicates
532 - lf-infra-gerrit-scm:
533 jenkins-ssh-credential: '{jenkins-ssh-credential}'
535 refspec: '$GERRIT_REFSPEC'
536 branch: '$GERRIT_BRANCH'
537 submodule-recursive: '{submodule-recursive}'
538 choosing-strategy: default
541 - timed: '{obj:cron}'
543 server-name: '{gerrit-server-name}'
544 trigger-on: '{obj:gerrit_merge_triggers}'
546 - project-compare-type: ANT
547 project-pattern: '{project}'
549 - branch-compare-type: ANT
550 branch-pattern: '**/{branch}'
551 file-paths: '{obj:gerrit_trigger_file_paths}'
554 name: '{project-name}-maven-merge-{stream}'
555 id: github-maven-merge
557 # yamllint disable-line rule:key-duplicates
562 url: '{git-url}/{github-org}/{project}'
565 - lf-infra-github-scm:
566 url: '{git-clone-url}{github-org}/{project}'
567 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
569 submodule-recursive: '{submodule-recursive}'
570 choosing-strategy: default
571 jenkins-ssh-credential: '{jenkins-ssh-credential}'
574 - lf-infra-github-pr-trigger:
575 trigger-phrase: '^remerge$'
576 only-trigger-phrase: false
577 status-context: 'Maven Merge'
583 github_pr_admin_list:
590 - lf_maven_release: &lf_maven_release
591 name: lf-maven-release
593 ######################
594 # Default parameters #
595 ######################
598 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
601 git-url: '$GIT_URL/$PROJECT'
602 java-version: openjdk8
603 mvn-global-settings: global-settings
608 submodule-recursive: true
610 gerrit_release_triggers:
611 - comment-added-contains-event:
612 comment-contains-value: build release$
614 #####################
615 # Job Configuration #
616 #####################
619 - lf-jacoco-nojava-workaround
621 mvn-version: '{mvn-version}'
622 - lf-provide-maven-settings:
623 global-settings-file: '{mvn-global-settings}'
624 settings-file: '{mvn-settings}'
625 - lf-infra-create-netrc:
626 server-id: '{mvn-staging-id}'
627 - shell: !include-raw-escape:
628 - ../shell/lftools-install.sh
629 - ../shell/common-variables.sh
630 - ../shell/maven-patch-release.sh
631 - ../shell/maven-build.sh
632 - ../shell/maven-stage.sh
633 - lf-provide-maven-settings-cleanup
636 name: '{project-name}-maven-release-{stream}'
637 id: gerrit-maven-release
639 # yamllint disable-line rule:key-duplicates
640 <<: *lf_maven_release
643 - lf-infra-gerrit-scm:
644 jenkins-ssh-credential: '{jenkins-ssh-credential}'
646 refspec: '$GERRIT_REFSPEC'
647 branch: '$GERRIT_BRANCH'
648 submodule-recursive: '{submodule-recursive}'
649 choosing-strategy: default
652 - timed: '{obj:cron}'
654 server-name: '{gerrit-server-name}'
655 trigger-on: '{obj:gerrit_release_triggers}'
657 - project-compare-type: ANT
658 project-pattern: '{project}'
660 - branch-compare-type: ANT
661 branch-pattern: '**/{branch}'
664 name: '{project-name}-maven-release-{stream}'
665 id: github-maven-release
667 # yamllint disable-line rule:key-duplicates
668 <<: *lf_maven_release
672 url: '{git-url}/{github-org}/{project}'
675 - lf-infra-github-scm:
676 url: '{git-clone-url}{github-org}/{project}'
677 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
679 submodule-recursive: '{submodule-recursive}'
680 choosing-strategy: default
681 jenkins-ssh-credential: '{jenkins-ssh-credential}'
684 - timed: '{obj:cron}'
685 - lf-infra-github-pr-trigger:
686 trigger-phrase: '^build release$'
687 only-trigger-phrase: true
688 status-context: 'Maven Release'
694 github_pr_admin_list:
701 - lf_maven_sonar: &lf_maven_sonar
704 ######################
705 # Default parameters #
706 ######################
708 branch: master # Sonar should always be run on master branch
709 build-days-to-keep: 7
711 cron: 'H H * * 6' # run weekly
712 git-url: '$GIT_URL/$PROJECT'
713 java-version: openjdk8
714 mvn-global-settings: global-settings
718 sonar-mvn-goal: 'sonar:sonar'
719 staging-profile-id: '' # Unused in this job
721 submodule-recursive: true
723 gerrit_sonar_triggers:
724 - comment-added-contains-event:
725 comment-contains-value: run-sonar$
727 #####################
728 # Job Configuration #
729 #####################
732 - lf-infra-parameters:
736 lftools-version: '{lftools-version}'
737 - lf-infra-maven-parameters:
738 mvn-opts: '{mvn-opts}'
739 mvn-params: '{mvn-params}'
740 mvn-version: '{mvn-version}'
741 # Staging repos do not make sense for Sonar jobs so set it blank.
742 staging-profile-id: ''
744 name: ARCHIVE_ARTIFACTS
745 default: '{archive-artifacts}'
746 description: Artifacts to archive to the logs server.
748 name: SONAR_MAVEN_GOAL
749 default: '{sonar-mvn-goal}'
751 Maven goals to pass to the Sonar call. Typically sonar:sonar
752 however to use a specific version of the sonar-maven-plugin we
753 can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
756 - timed: '{obj:cron}'
758 server-name: '{gerrit-server-name}'
759 trigger-on: '{obj:gerrit_sonar_triggers}'
761 - project-compare-type: 'ANT'
762 project-pattern: '{project}'
764 - branch-compare-type: 'ANT'
765 branch-pattern: '**/master'
773 - lf-infra-maven-sonar:
774 mvn-settings: '{mvn-settings}'
775 mvn-version: '{mvn-version}'
783 name: lf-infra-maven-sonar
784 # Run a Sonar build with Maven
787 mvn-version: '{mvn-version}'
789 # Switch this to the sonar wrapper when JJB 2.0 is available
790 properties-content: SONAR_HOST_URL=$SONAR_URL
791 - lf-provide-maven-settings:
792 global-settings-file: global-settings
793 settings-file: '{mvn-settings}'
794 - shell: !include-raw-escape:
795 - ../shell/common-variables.sh
796 - ../shell/maven-sonar.sh
797 - lf-provide-maven-settings-cleanup
800 name: '{project-name}-sonar'
801 id: gerrit-maven-sonar
803 # yamllint disable-line rule:key-duplicates
807 - lf-infra-gerrit-scm:
808 jenkins-ssh-credential: '{jenkins-ssh-credential}'
810 refspec: $GERRIT_REFSPEC
811 branch: $GERRIT_BRANCH
812 submodule-recursive: '{submodule-recursive}'
813 choosing-strategy: default
816 name: '{project-name}-sonar'
817 id: github-maven-sonar
819 # yamllint disable-line rule:key-duplicates
824 url: '{git-url}/{github-org}/{project}'
827 - lf-infra-github-scm:
828 url: '{git-clone-url}{github-org}/{project}'
829 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
831 submodule-recursive: '{submodule-recursive}'
832 choosing-strategy: default
833 jenkins-ssh-credential: '{jenkins-ssh-credential}'
836 - lf-infra-github-pr-trigger:
837 trigger-phrase: '^recheck$'
838 only-trigger-phrase: false
839 status-context: 'Maven Verify'
845 github_pr_admin_list:
852 - lf_maven_verify: &lf_maven_verify
853 name: lf-maven-verify
855 ######################
856 # Default parameters #
857 ######################
860 build-days-to-keep: 7
862 git-url: '$GIT_URL/$PROJECT'
863 java-version: openjdk8
864 mvn-global-settings: global-settings
866 mvn-params: '-Dstream=$STREAM'
868 staging-profile-id: '' # Unused in this job
870 submodule-recursive: true
872 gerrit_verify_triggers:
873 - patchset-created-event:
875 exclude-trivial-rebase: false
876 exclude-no-code-change: false
877 - draft-published-event
878 - comment-added-contains-event:
879 comment-contains-value: recheck$
880 gerrit_trigger_file_paths:
884 #####################
885 # Job Configuration #
886 #####################
891 - lf-jacoco-nojava-workaround
893 mvn-version: '{mvn-version}'
894 - lf-provide-maven-settings:
895 global-settings-file: '{mvn-global-settings}'
896 settings-file: '{mvn-settings}'
897 - shell: !include-raw-escape:
898 - ../shell/lftools-install.sh
899 - ../shell/common-variables.sh
900 - ../shell/maven-build.sh
901 - lf-provide-maven-settings-cleanup
909 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
910 id: gerrit-maven-verify
912 # yamllint disable-line rule:key-duplicates
916 - lf-infra-gerrit-scm:
917 jenkins-ssh-credential: '{jenkins-ssh-credential}'
919 refspec: '$GERRIT_REFSPEC'
920 branch: '$GERRIT_BRANCH'
921 submodule-recursive: '{submodule-recursive}'
922 choosing-strategy: gerrit
926 server-name: '{gerrit-server-name}'
927 trigger-on: '{obj:gerrit_verify_triggers}'
929 - project-compare-type: ANT
930 project-pattern: '{project}'
932 - branch-compare-type: ANT
933 branch-pattern: '**/{branch}'
934 file-paths: '{obj:gerrit_trigger_file_paths}'
937 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
938 id: github-maven-verify
940 # yamllint disable-line rule:key-duplicates
945 url: '{git-url}/{github-org}/{project}'
948 - lf-infra-github-scm:
949 url: '{git-clone-url}{github-org}/{project}'
950 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
952 submodule-recursive: '{submodule-recursive}'
953 choosing-strategy: default
954 jenkins-ssh-credential: '{jenkins-ssh-credential}'
957 - lf-infra-github-pr-trigger:
958 trigger-phrase: '^recheck$'
959 only-trigger-phrase: false
960 status-context: 'Maven Verify'
966 github_pr_admin_list:
969 #############################
970 # Maven Verify Dependencies #
971 #############################
973 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
974 name: lf-maven-verify-dependencies
976 ######################
977 # Default parameters #
978 ######################
981 build-days-to-keep: 7
983 git-url: '$GIT_URL/$PROJECT'
984 java-version: openjdk8
985 mvn-global-settings: global-settings
987 mvn-params: '-Dstream=$STREAM'
989 staging-profile-id: '' # Unused by this job
991 submodule-recursive: true
993 gerrit_verify_triggers:
994 - comment-added-contains-event:
995 comment-contains-value: 'recheck: [0-9 ]+'
996 gerrit_trigger_file_paths:
1000 #####################
1001 # Job Configuration #
1002 #####################
1007 - lf-jacoco-nojava-workaround
1009 mvn-version: '{mvn-version}'
1010 - lf-provide-maven-settings:
1011 global-settings-file: '{mvn-global-settings}'
1012 settings-file: '{mvn-settings}'
1013 - lf-fetch-dependent-patches
1014 - shell: !include-raw-escape:
1015 - ../shell/common-variables.sh
1016 - ../shell/maven-build-deps.sh
1017 - shell: !include-raw-escape:
1018 - ../shell/common-variables.sh
1019 - ../shell/maven-build.sh
1020 - lf-provide-maven-settings-cleanup
1028 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1029 id: gerrit-maven-verify-dependencies
1030 <<: *lf_maven_common
1031 # yamllint disable-line rule:key-duplicates
1032 <<: *lf_maven_verify_dependencies
1035 - lf-infra-gerrit-scm:
1036 jenkins-ssh-credential: '{jenkins-ssh-credential}'
1037 git-url: '{git-url}'
1038 refspec: '$GERRIT_REFSPEC'
1039 branch: '$GERRIT_BRANCH'
1040 submodule-recursive: '{submodule-recursive}'
1041 choosing-strategy: gerrit
1045 server-name: '{gerrit-server-name}'
1046 trigger-on: '{obj:gerrit_verify_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}'