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
55 - lf_maven_common: &lf_maven_common
58 project-type: freestyle
63 - lf-infra-properties:
64 build-days-to-keep: '{build-days-to-keep}'
67 - lf-infra-parameters:
71 lftools-version: '{lftools-version}'
72 - lf-infra-maven-parameters:
73 mvn-opts: '{mvn-opts}'
74 mvn-params: '{mvn-params}'
75 mvn-version: '{mvn-version}'
76 # Staging repos do not make sense for CLM jobs so set it blank.
77 staging-profile-id: '{staging-profile-id}'
79 name: ARCHIVE_ARTIFACTS
80 default: '{archive-artifacts}'
81 description: Artifacts to archive to the logs server.
85 build-timeout: '{build-timeout}'
86 jenkins-ssh-credential: '{jenkins-ssh-credential}'
89 # TODO: Make email notification work.
90 # - lf-infra-email-notify:
91 # email-recipients: '{email-recipients}'
92 # email-prefix: '[releng]'
99 - lf_maven_clm: &lf_maven_clm
102 ######################
103 # Default parameters #
104 ######################
106 archive-artifacts: ''
108 build-days-to-keep: 30 # 30 days for troubleshooting purposes
110 git-url: '$GIT_URL/$PROJECT'
111 java-version: openjdk8
112 mvn-global-settings: global-settings
116 staging-profile-id: '' # Unused in this job
118 submodule-recursive: true
121 - comment-added-contains-event:
122 comment-contains-value: run-clm$
124 #####################
125 # Job Configuration #
126 #####################
129 # Build weekly on Saturdays
132 server-name: '{gerrit-server-name}'
133 trigger-on: '{obj:gerrit_clm_triggers}'
135 - project-compare-type: ANT
136 project-pattern: '{project}'
138 - branch-compare-type: ANT
139 branch-pattern: '**/{branch}'
148 mvn-version: '{mvn-version}'
149 - lf-provide-maven-settings:
150 global-settings-file: '{mvn-global-settings}'
151 settings-file: '{mvn-settings}'
152 - shell: !include-raw-escape:
153 - ../shell/common-variables.sh
154 - ../shell/sonatype-clm.sh
155 - lf-provide-maven-settings-cleanup
156 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
158 application-name: '{project-name}'
161 name: '{project-name}-maven-clm-{stream}'
164 # yamllint disable-line rule:key-duplicates
168 - lf-infra-gerrit-scm:
169 jenkins-ssh-credential: '{jenkins-ssh-credential}'
171 refspec: '$GERRIT_REFSPEC'
172 branch: '$GERRIT_BRANCH'
173 submodule-recursive: '{submodule-recursive}'
174 choosing-strategy: default
177 name: '{project-name}-maven-clm-{stream}'
180 # yamllint disable-line rule:key-duplicates
185 url: '{git-url}/{github-org}/{project}'
188 - lf-infra-github-scm:
189 url: '{git-clone-url}{github-org}/{project}'
191 branch: 'refs/heads/{branch}'
192 submodule-recursive: '{submodule-recursive}'
193 choosing-strategy: default
194 jenkins-ssh-credential: '{jenkins-ssh-credential}'
197 - lf-infra-github-pr-trigger:
198 trigger-phrase: '^run-clm$'
199 only-trigger-phrase: false
200 status-context: 'CLM'
206 github_pr_admin_list:
209 #########################
210 # Maven Javadoc Publish #
211 #########################
213 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
214 name: lf-maven-javadoc-publish
216 ######################
217 # Default parameters #
218 ######################
220 archive-artifacts: ''
222 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
224 git-url: '$GIT_URL/$PROJECT'
225 java-version: openjdk8
226 mvn-global-settings: global-settings
230 staging-profile-id: '' # Unused by the javadoc jobs
232 submodule-recursive: true
234 gerrit_merge_triggers:
235 - change-merged-event
236 - comment-added-contains-event:
237 comment-contains-value: remerge$
239 #####################
240 # Job Configuration #
241 #####################
245 mvn-version: '{mvn-version}'
246 - lf-provide-maven-settings:
247 global-settings-file: '{mvn-global-settings}'
248 settings-file: '{mvn-settings}'
249 - lf-infra-create-netrc:
250 server-id: '{mvn-site-id}'
252 properties-content: 'DEPLOY_PATH={javadoc-path}'
253 - shell: !include-raw-escape:
254 - ../shell/common-variables.sh
255 - ../shell/maven-javadoc-generate.sh
256 - ../shell/lftools-install.sh
257 - ../shell/maven-javadoc-publish.sh
258 - lf-provide-maven-settings-cleanup
261 name: '{project-name}-maven-javadoc-publish-{stream}'
262 id: gerrit-maven-javadoc-publish
264 # yamllint disable-line rule:key-duplicates
265 <<: *lf_maven_javadoc_publish
267 git-url: '$GIT_URL/$GERRIT_PROJECT'
270 - lf-infra-gerrit-scm:
274 submodule-recursive: '{submodule-recursive}'
275 choosing-strategy: default
276 jenkins-ssh-credential: '{jenkins-ssh-credential}'
280 server-name: '{gerrit-server-name}'
281 trigger-on: '{obj:gerrit_merge_triggers}'
283 - project-compare-type: ANT
284 project-pattern: '{project}'
286 - branch-compare-type: ANT
287 branch-pattern: '**/{branch}'
290 name: '{project-name}-maven-javadoc-publish-{stream}'
291 id: github-maven-javadoc-publish
293 # yamllint disable-line rule:key-duplicates
294 <<: *lf_maven_javadoc_publish
298 url: '{git-url}/{github-org}/{project}'
301 - lf-infra-github-scm:
302 url: '{git-clone-url}{github-org}/{project}'
305 submodule-recursive: '{submodule-recursive}'
306 choosing-strategy: default
307 jenkins-ssh-credential: '{jenkins-ssh-credential}'
313 - lf-infra-github-pr-trigger:
314 trigger-phrase: '^remerge$'
315 only-trigger-phrase: true
316 status-context: 'JJB Merge'
319 github-org: '{github-org}'
320 github_pr_whitelist: '{obj:github_pr_whitelist}'
321 github_pr_admin_list: '{obj:github_pr_admin_list}'
323 ########################
324 # Maven Javadoc Verify #
325 ########################
327 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
328 name: lf-maven-javadoc-verify
330 ######################
331 # Default parameters #
332 ######################
334 archive-artifacts: ''
336 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
338 git-url: '$GIT_URL/$PROJECT'
339 java-version: openjdk8
340 mvn-global-settings: global-settings
344 staging-profile-id: '' # Unused by the javadoc jobs
346 submodule-recursive: true
348 gerrit_verify_triggers:
349 - patchset-created-event:
351 exclude-trivial-rebase: false
352 exclude-no-code-change: false
353 - draft-published-event
354 - comment-added-contains-event:
355 comment-contains-value: recheck$
357 #####################
358 # Job Configuration #
359 #####################
365 mvn-version: '{mvn-version}'
366 - lf-provide-maven-settings:
367 global-settings-file: '{mvn-global-settings}'
368 settings-file: '{mvn-settings}'
369 - shell: !include-raw-escape:
370 - ../shell/common-variables.sh
371 - ../shell/maven-javadoc-generate.sh
372 - lf-provide-maven-settings-cleanup
375 name: '{project-name}-maven-javadoc-verify-{stream}'
376 id: gerrit-maven-javadoc-verify
378 # yamllint disable-line rule:key-duplicates
379 <<: *lf_maven_javadoc_verify
382 - lf-infra-gerrit-scm:
383 jenkins-ssh-credential: '{jenkins-ssh-credential}'
385 refspec: '$GERRIT_REFSPEC'
386 branch: '$GERRIT_BRANCH'
387 submodule-recursive: '{submodule-recursive}'
388 choosing-strategy: gerrit
392 server-name: '{gerrit-server-name}'
393 trigger-on: '{obj:gerrit_verify_triggers}'
395 - project-compare-type: ANT
396 project-pattern: '{project}'
398 - branch-compare-type: ANT
399 branch-pattern: '**/{branch}'
402 name: '{project-name}-maven-javadoc-verify-{stream}'
403 id: github-maven-javadoc-verify
405 # yamllint disable-line rule:key-duplicates
406 <<: *lf_maven_javadoc_verify
410 url: '{git-url}/{github-org}/{project}'
413 - lf-infra-github-scm:
414 url: '{git-clone-url}{github-org}/{project}'
415 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
417 submodule-recursive: '{submodule-recursive}'
418 choosing-strategy: default
419 jenkins-ssh-credential: '{jenkins-ssh-credential}'
422 - lf-infra-github-pr-trigger:
423 trigger-phrase: '^recheck$'
424 only-trigger-phrase: true
425 status-context: 'Maven Javadoc'
431 github_pr_admin_list:
438 - lf_maven_merge: &lf_maven_merge
441 ######################
442 # Default parameters #
443 ######################
445 archive-artifacts: ''
447 build-days-to-keep: 30 # 30 days in case we need to troubleshoot
450 git-url: '$GIT_URL/$PROJECT'
451 java-version: openjdk8
452 mvn-global-settings: global-settings
454 mvn-params: '-Dmerge'
456 nexus-cut-dirs: 6 # Number of dirs in the Nexus path to remove for wget -r.
457 staging-profile-id: '' # Unused by this job.
459 submodule-recursive: true
461 gerrit_merge_triggers:
462 - change-merged-event
463 - comment-added-contains-event:
464 comment-contains-value: remerge$
466 gerrit_trigger_file_paths:
470 post_build_trigger: ''
472 #####################
473 # Job Configuration #
474 #####################
477 - lf-jacoco-nojava-workaround
479 mvn-version: '{mvn-version}'
480 - lf-provide-maven-settings:
481 global-settings-file: '{mvn-global-settings}'
482 settings-file: '{mvn-settings}'
483 - lf-infra-create-netrc:
484 server-id: '{mvn-snapshot-id}'
486 properties-content: |
487 NEXUS_CUT_DIRS={nexus-cut-dirs}
488 NEXUS_REPO={nexus-snapshot-repo}
489 - shell: !include-raw-escape:
490 - ../shell/lftools-install.sh
491 - ../shell/common-variables.sh
492 - ../shell/maven-fetch-metadata.sh
493 - ../shell/maven-build.sh
494 - ../shell/maven-deploy.sh
495 - lf-provide-maven-settings-cleanup
501 - trigger-parameterized-builds: '{obj:post_build_trigger}'
504 name: '{project-name}-maven-merge-{stream}'
505 id: gerrit-maven-merge
507 # yamllint disable-line rule:key-duplicates
511 - lf-infra-gerrit-scm:
512 jenkins-ssh-credential: '{jenkins-ssh-credential}'
514 refspec: '$GERRIT_REFSPEC'
515 branch: '$GERRIT_BRANCH'
516 submodule-recursive: '{submodule-recursive}'
517 choosing-strategy: default
522 server-name: '{gerrit-server-name}'
523 trigger-on: '{obj:gerrit_merge_triggers}'
525 - project-compare-type: ANT
526 project-pattern: '{project}'
528 - branch-compare-type: ANT
529 branch-pattern: '**/{branch}'
530 file-paths: '{obj:gerrit_trigger_file_paths}'
533 name: '{project-name}-maven-merge-{stream}'
534 id: github-maven-merge
536 # yamllint disable-line rule:key-duplicates
541 url: '{git-url}/{github-org}/{project}'
544 - lf-infra-github-scm:
545 url: '{git-clone-url}{github-org}/{project}'
546 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
548 submodule-recursive: '{submodule-recursive}'
549 choosing-strategy: default
550 jenkins-ssh-credential: '{jenkins-ssh-credential}'
553 - lf-infra-github-pr-trigger:
554 trigger-phrase: '^remerge$'
555 only-trigger-phrase: false
556 status-context: 'Maven Merge'
562 github_pr_admin_list:
569 - lf_maven_release: &lf_maven_release
570 name: lf-maven-release
572 ######################
573 # Default parameters #
574 ######################
576 archive-artifacts: ''
578 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
581 git-url: '$GIT_URL/$PROJECT'
582 java-version: openjdk8
583 mvn-global-settings: global-settings
588 submodule-recursive: true
590 gerrit_release_triggers:
591 - comment-added-contains-event:
592 comment-contains-value: build release$
594 #####################
595 # Job Configuration #
596 #####################
599 - lf-jacoco-nojava-workaround
601 mvn-version: '{mvn-version}'
602 - lf-provide-maven-settings:
603 global-settings-file: '{mvn-global-settings}'
604 settings-file: '{mvn-settings}'
605 - lf-infra-create-netrc:
606 server-id: '{mvn-staging-id}'
607 - shell: !include-raw-escape:
608 - ../shell/lftools-install.sh
609 - ../shell/common-variables.sh
610 - ../shell/maven-patch-release.sh
611 - ../shell/maven-build.sh
612 - ../shell/maven-stage.sh
613 - lf-provide-maven-settings-cleanup
616 name: '{project-name}-maven-release-{stream}'
617 id: gerrit-maven-release
619 # yamllint disable-line rule:key-duplicates
620 <<: *lf_maven_release
623 - lf-infra-gerrit-scm:
624 jenkins-ssh-credential: '{jenkins-ssh-credential}'
626 refspec: '$GERRIT_REFSPEC'
627 branch: '$GERRIT_BRANCH'
628 submodule-recursive: '{submodule-recursive}'
629 choosing-strategy: default
632 - timed: '{obj:cron}'
634 server-name: '{gerrit-server-name}'
635 trigger-on: '{obj:gerrit_release_triggers}'
637 - project-compare-type: ANT
638 project-pattern: '{project}'
640 - branch-compare-type: ANT
641 branch-pattern: '**/{branch}'
644 name: '{project-name}-maven-release-{stream}'
645 id: github-maven-release
647 # yamllint disable-line rule:key-duplicates
648 <<: *lf_maven_release
652 url: '{git-url}/{github-org}/{project}'
655 - lf-infra-github-scm:
656 url: '{git-clone-url}{github-org}/{project}'
657 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
659 submodule-recursive: '{submodule-recursive}'
660 choosing-strategy: default
661 jenkins-ssh-credential: '{jenkins-ssh-credential}'
664 - timed: '{obj:cron}'
665 - lf-infra-github-pr-trigger:
666 trigger-phrase: '^build release$'
667 only-trigger-phrase: true
668 status-context: 'Maven Release'
674 github_pr_admin_list:
681 - lf_maven_sonar: &lf_maven_sonar
684 ######################
685 # Default parameters #
686 ######################
688 archive-artifacts: ''
689 branch: master # Sonar should always be run on master branch
690 build-days-to-keep: 7
692 git-url: '$GIT_URL/$PROJECT'
693 java-version: openjdk8
694 mvn-global-settings: global-settings
698 sonar-mvn-goal: 'sonar:sonar'
699 staging-profile-id: '' # Unused in this job
701 submodule-recursive: true
703 gerrit_sonar_triggers:
704 - comment-added-contains-event:
705 comment-contains-value: run-sonar$
707 #####################
708 # Job Configuration #
709 #####################
712 - lf-infra-parameters:
716 lftools-version: '{lftools-version}'
717 - lf-infra-maven-parameters:
718 mvn-opts: '{mvn-opts}'
719 mvn-params: '{mvn-params}'
720 mvn-version: '{mvn-version}'
721 # Staging repos do not make sense for Sonar jobs so set it blank.
722 staging-profile-id: ''
724 name: ARCHIVE_ARTIFACTS
725 default: '{archive-artifacts}'
726 description: Artifacts to archive to the logs server.
728 name: SONAR_MAVEN_GOAL
729 default: '{sonar-mvn-goal}'
731 Maven goals to pass to the Sonar call. Typically sonar:sonar
732 however to use a specific version of the sonar-maven-plugin we
733 can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
738 server-name: '{gerrit-server-name}'
739 trigger-on: '{obj:gerrit_sonar_triggers}'
741 - project-compare-type: 'ANT'
742 project-pattern: '{project}'
744 - branch-compare-type: 'ANT'
745 branch-pattern: '**/master'
753 - lf-infra-maven-sonar:
754 mvn-settings: '{mvn-settings}'
755 mvn-version: '{mvn-version}'
763 name: lf-infra-maven-sonar
764 # Run a Sonar build with Maven
767 mvn-version: '{mvn-version}'
769 # Switch this to the sonar wrapper when JJB 2.0 is available
770 properties-content: SONAR_HOST_URL=$SONAR_URL
771 - lf-provide-maven-settings:
772 global-settings-file: global-settings
773 settings-file: '{mvn-settings}'
774 - shell: !include-raw-escape:
775 - ../shell/common-variables.sh
776 - ../shell/maven-sonar.sh
777 - lf-provide-maven-settings-cleanup
780 name: '{project-name}-sonar'
781 id: gerrit-maven-sonar
783 # yamllint disable-line rule:key-duplicates
787 - lf-infra-gerrit-scm:
788 jenkins-ssh-credential: '{jenkins-ssh-credential}'
790 refspec: $GERRIT_REFSPEC
791 branch: $GERRIT_BRANCH
792 submodule-recursive: '{submodule-recursive}'
793 choosing-strategy: default
796 name: '{project-name}-sonar'
797 id: github-maven-sonar
799 # yamllint disable-line rule:key-duplicates
804 url: '{git-url}/{github-org}/{project}'
807 - lf-infra-github-scm:
808 url: '{git-clone-url}{github-org}/{project}'
809 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
811 submodule-recursive: '{submodule-recursive}'
812 choosing-strategy: default
813 jenkins-ssh-credential: '{jenkins-ssh-credential}'
816 - lf-infra-github-pr-trigger:
817 trigger-phrase: '^recheck$'
818 only-trigger-phrase: false
819 status-context: 'Maven Verify'
825 github_pr_admin_list:
832 - lf_maven_verify: &lf_maven_verify
833 name: lf-maven-verify
835 ######################
836 # Default parameters #
837 ######################
839 archive-artifacts: ''
841 build-days-to-keep: 7
843 git-url: '$GIT_URL/$PROJECT'
844 java-version: openjdk8
845 mvn-global-settings: global-settings
847 mvn-params: '-Dstream=$STREAM'
849 staging-profile-id: '' # Unused in this job
851 submodule-recursive: true
853 gerrit_verify_triggers:
854 - patchset-created-event:
856 exclude-trivial-rebase: false
857 exclude-no-code-change: false
858 - draft-published-event
859 - comment-added-contains-event:
860 comment-contains-value: recheck$
861 gerrit_trigger_file_paths:
865 #####################
866 # Job Configuration #
867 #####################
872 - lf-jacoco-nojava-workaround
874 mvn-version: '{mvn-version}'
875 - lf-provide-maven-settings:
876 global-settings-file: '{mvn-global-settings}'
877 settings-file: '{mvn-settings}'
878 - shell: !include-raw-escape:
879 - ../shell/lftools-install.sh
880 - ../shell/common-variables.sh
881 - ../shell/maven-build.sh
882 - lf-provide-maven-settings-cleanup
890 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
891 id: gerrit-maven-verify
893 # yamllint disable-line rule:key-duplicates
897 - lf-infra-gerrit-scm:
898 jenkins-ssh-credential: '{jenkins-ssh-credential}'
900 refspec: '$GERRIT_REFSPEC'
901 branch: '$GERRIT_BRANCH'
902 submodule-recursive: '{submodule-recursive}'
903 choosing-strategy: gerrit
907 server-name: '{gerrit-server-name}'
908 trigger-on: '{obj:gerrit_verify_triggers}'
910 - project-compare-type: ANT
911 project-pattern: '{project}'
913 - branch-compare-type: ANT
914 branch-pattern: '**/{branch}'
915 file-paths: '{obj:gerrit_trigger_file_paths}'
918 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
919 id: github-maven-verify
921 # yamllint disable-line rule:key-duplicates
926 url: '{git-url}/{github-org}/{project}'
929 - lf-infra-github-scm:
930 url: '{git-clone-url}{github-org}/{project}'
931 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
933 submodule-recursive: '{submodule-recursive}'
934 choosing-strategy: default
935 jenkins-ssh-credential: '{jenkins-ssh-credential}'
938 - lf-infra-github-pr-trigger:
939 trigger-phrase: '^recheck$'
940 only-trigger-phrase: false
941 status-context: 'Maven Verify'
947 github_pr_admin_list:
950 #############################
951 # Maven Verify Dependencies #
952 #############################
954 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
955 name: lf-maven-verify-dependencies
957 ######################
958 # Default parameters #
959 ######################
961 archive-artifacts: ''
963 build-days-to-keep: 7
965 git-url: '$GIT_URL/$PROJECT'
966 java-version: openjdk8
967 mvn-global-settings: global-settings
969 mvn-params: '-Dstream=$STREAM'
971 staging-profile-id: '' # Unused by this job
973 submodule-recursive: true
975 gerrit_verify_triggers:
976 - comment-added-contains-event:
977 comment-contains-value: 'recheck: [0-9 ]+'
978 gerrit_trigger_file_paths:
982 #####################
983 # Job Configuration #
984 #####################
989 - lf-jacoco-nojava-workaround
991 mvn-version: '{mvn-version}'
992 - lf-provide-maven-settings:
993 global-settings-file: '{mvn-global-settings}'
994 settings-file: '{mvn-settings}'
995 - lf-fetch-dependent-patches
996 - shell: !include-raw-escape:
997 - ../shell/common-variables.sh
998 - ../shell/maven-build-deps.sh
999 - shell: !include-raw-escape:
1000 - ../shell/common-variables.sh
1001 - ../shell/maven-build.sh
1002 - lf-provide-maven-settings-cleanup
1010 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1011 id: gerrit-maven-verify-dependencies
1012 <<: *lf_maven_common
1013 # yamllint disable-line rule:key-duplicates
1014 <<: *lf_maven_verify_dependencies
1017 - lf-infra-gerrit-scm:
1018 jenkins-ssh-credential: '{jenkins-ssh-credential}'
1019 git-url: '{git-url}'
1020 refspec: '$GERRIT_REFSPEC'
1021 branch: '$GERRIT_BRANCH'
1022 submodule-recursive: '{submodule-recursive}'
1023 choosing-strategy: gerrit
1027 server-name: '{gerrit-server-name}'
1028 trigger-on: '{obj:gerrit_verify_triggers}'
1030 - project-compare-type: ANT
1031 project-pattern: '{project}'
1033 - branch-compare-type: ANT
1034 branch-pattern: '**/{branch}'
1035 file-paths: '{obj:gerrit_trigger_file_paths}'