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.
13 - gerrit-maven-release
15 - gerrit-maven-verify-dependencies
18 name: '{project-name}-github-maven-jobs'
20 # This job group contains all the recommended jobs that should be deployed
21 # for any project ci that is using github.
23 # TODO: Add Maven Merge job to this list once it's been fully tested.
26 - github-maven-release
30 name: '{project-name}-maven-javadoc-jobs'
32 # This job group contains all the recommended jobs that should be deployed
36 - gerrit-maven-javadoc-publish
37 - gerrit-maven-javadoc-verify
40 name: '{project-name}-github-maven-javadoc-jobs'
42 # This job group contains all the recommended jobs that should be deployed
46 - github-maven-javadoc-publish
47 - github-maven-javadoc-verify
53 - lf_maven_common: &lf_maven_common
56 project-type: freestyle
61 - lf-infra-properties:
62 build-days-to-keep: '{build-days-to-keep}'
65 - lf-infra-parameters:
69 lftools-version: '{lftools-version}'
70 - lf-infra-maven-parameters:
71 mvn-opts: '{mvn-opts}'
72 mvn-params: '{mvn-params}'
73 mvn-version: '{mvn-version}'
74 # Staging repos do not make sense for CLM jobs so set it blank.
75 staging-profile-id: '{staging-profile-id}'
77 name: ARCHIVE_ARTIFACTS
78 default: '{archive-artifacts}'
79 description: Artifacts to archive to the logs server.
83 build-timeout: '{build-timeout}'
84 jenkins-ssh-credential: '{jenkins-ssh-credential}'
87 # TODO: Make email notification work.
88 # - lf-infra-email-notify:
89 # email-recipients: '{email-recipients}'
90 # email-prefix: '[releng]'
97 - lf_maven_clm: &lf_maven_clm
100 ######################
101 # Default parameters #
102 ######################
104 archive-artifacts: ''
106 build-days-to-keep: 30 # 30 days for troubleshooting purposes
108 git-url: '$GIT_URL/$PROJECT'
109 java-version: openjdk8
110 mvn-global-settings: global-settings
114 staging-profile-id: '' # Unused in this job
116 submodule-recursive: true
119 - comment-added-contains-event:
120 comment-contains-value: run-clm$
122 #####################
123 # Job Configuration #
124 #####################
127 # Build weekly on Saturdays
130 server-name: '{gerrit-server-name}'
131 trigger-on: '{obj:gerrit_clm_triggers}'
133 - project-compare-type: ANT
134 project-pattern: '{project}'
136 - branch-compare-type: ANT
137 branch-pattern: '**/{branch}'
146 mvn-version: '{mvn-version}'
147 - lf-provide-maven-settings:
148 global-settings-file: '{mvn-global-settings}'
149 settings-file: '{mvn-settings}'
150 - shell: !include-raw-escape:
151 - ../shell/common-variables.sh
152 - ../shell/sonatype-clm.sh
153 - lf-provide-maven-settings-cleanup
154 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
156 application-name: '{project-name}'
159 name: '{project-name}-maven-clm-{stream}'
162 # yamllint disable-line rule:key-duplicates
166 - lf-infra-gerrit-scm:
167 jenkins-ssh-credential: '{jenkins-ssh-credential}'
169 refspec: '$GERRIT_REFSPEC'
170 branch: '$GERRIT_BRANCH'
171 submodule-recursive: '{submodule-recursive}'
172 choosing-strategy: default
175 name: '{project-name}-maven-clm-{stream}'
178 # yamllint disable-line rule:key-duplicates
183 url: '{git-url}/{github-org}/{project}'
186 - lf-infra-github-scm:
187 url: '{git-clone-url}{github-org}/{project}'
189 branch: 'refs/heads/{branch}'
190 submodule-recursive: '{submodule-recursive}'
191 choosing-strategy: default
192 jenkins-ssh-credential: '{jenkins-ssh-credential}'
195 - lf-infra-github-pr-trigger:
196 trigger-phrase: '^run-clm$'
197 only-trigger-phrase: false
198 status-context: 'CLM'
204 github_pr_admin_list:
207 #########################
208 # Maven Javadoc Publish #
209 #########################
211 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
212 name: lf-maven-javadoc-publish
214 ######################
215 # Default parameters #
216 ######################
218 archive-artifacts: ''
220 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
222 git-url: '$GIT_URL/$PROJECT'
223 java-version: openjdk8
224 mvn-global-settings: global-settings
228 staging-profile-id: '' # Unused by the javadoc jobs
230 submodule-recursive: true
232 gerrit_merge_triggers:
233 - change-merged-event
234 - comment-added-contains-event:
235 comment-contains-value: remerge$
237 #####################
238 # Job Configuration #
239 #####################
243 mvn-version: '{mvn-version}'
244 - lf-provide-maven-settings:
245 global-settings-file: '{mvn-global-settings}'
246 settings-file: '{mvn-settings}'
247 - lf-infra-create-netrc:
248 server-id: '{mvn-site-id}'
250 properties-content: 'DEPLOY_PATH={javadoc-path}'
251 - shell: !include-raw-escape:
252 - ../shell/common-variables.sh
253 - ../shell/maven-javadoc-generate.sh
254 - ../shell/lftools-install.sh
255 - ../shell/maven-javadoc-publish.sh
256 - lf-provide-maven-settings-cleanup
259 name: '{project-name}-maven-javadoc-publish-{stream}'
260 id: gerrit-maven-javadoc-publish
262 # yamllint disable-line rule:key-duplicates
263 <<: *lf_maven_javadoc_publish
265 git-url: '$GIT_URL/$GERRIT_PROJECT'
268 - lf-infra-gerrit-scm:
272 submodule-recursive: '{submodule-recursive}'
273 choosing-strategy: default
274 jenkins-ssh-credential: '{jenkins-ssh-credential}'
278 server-name: '{gerrit-server-name}'
279 trigger-on: '{obj:gerrit_merge_triggers}'
281 - project-compare-type: ANT
282 project-pattern: '{project}'
284 - branch-compare-type: ANT
285 branch-pattern: '**/{branch}'
288 name: '{project-name}-maven-javadoc-publish-{stream}'
289 id: github-maven-javadoc-publish
291 # yamllint disable-line rule:key-duplicates
292 <<: *lf_maven_javadoc_publish
296 url: '{git-url}/{github-org}/{project}'
299 - lf-infra-github-scm:
300 url: '{git-clone-url}{github-org}/{project}'
303 submodule-recursive: '{submodule-recursive}'
304 choosing-strategy: default
305 jenkins-ssh-credential: '{jenkins-ssh-credential}'
311 - lf-infra-github-pr-trigger:
312 trigger-phrase: '^remerge$'
313 only-trigger-phrase: true
314 status-context: 'JJB Merge'
317 github-org: '{github-org}'
318 github_pr_whitelist: '{obj:github_pr_whitelist}'
319 github_pr_admin_list: '{obj:github_pr_admin_list}'
321 ########################
322 # Maven Javadoc Verify #
323 ########################
325 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
326 name: lf-maven-javadoc-verify
328 ######################
329 # Default parameters #
330 ######################
332 archive-artifacts: ''
334 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
336 git-url: '$GIT_URL/$PROJECT'
337 java-version: openjdk8
338 mvn-global-settings: global-settings
342 staging-profile-id: '' # Unused by the javadoc jobs
344 submodule-recursive: true
346 gerrit_verify_triggers:
347 - patchset-created-event:
349 exclude-trivial-rebase: false
350 exclude-no-code-change: false
351 - draft-published-event
352 - comment-added-contains-event:
353 comment-contains-value: recheck$
355 #####################
356 # Job Configuration #
357 #####################
363 mvn-version: '{mvn-version}'
364 - lf-provide-maven-settings:
365 global-settings-file: '{mvn-global-settings}'
366 settings-file: '{mvn-settings}'
367 - shell: !include-raw-escape:
368 - ../shell/common-variables.sh
369 - ../shell/maven-javadoc-generate.sh
370 - lf-provide-maven-settings-cleanup
373 name: '{project-name}-maven-javadoc-verify-{stream}'
374 id: gerrit-maven-javadoc-verify
376 # yamllint disable-line rule:key-duplicates
377 <<: *lf_maven_javadoc_verify
380 - lf-infra-gerrit-scm:
381 jenkins-ssh-credential: '{jenkins-ssh-credential}'
383 refspec: '$GERRIT_REFSPEC'
384 branch: '$GERRIT_BRANCH'
385 submodule-recursive: '{submodule-recursive}'
386 choosing-strategy: gerrit
390 server-name: '{gerrit-server-name}'
391 trigger-on: '{obj:gerrit_verify_triggers}'
393 - project-compare-type: ANT
394 project-pattern: '{project}'
396 - branch-compare-type: ANT
397 branch-pattern: '**/{branch}'
400 name: '{project-name}-maven-javadoc-verify-{stream}'
401 id: github-maven-javadoc-verify
403 # yamllint disable-line rule:key-duplicates
404 <<: *lf_maven_javadoc_verify
408 url: '{git-url}/{github-org}/{project}'
411 - lf-infra-github-scm:
412 url: '{git-clone-url}{github-org}/{project}'
413 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
415 submodule-recursive: '{submodule-recursive}'
416 choosing-strategy: default
417 jenkins-ssh-credential: '{jenkins-ssh-credential}'
420 - lf-infra-github-pr-trigger:
421 trigger-phrase: '^recheck$'
422 only-trigger-phrase: true
423 status-context: 'Maven Javadoc'
429 github_pr_admin_list:
436 - lf_maven_merge: &lf_maven_merge
439 ######################
440 # Default parameters #
441 ######################
443 archive-artifacts: ''
445 build-days-to-keep: 30 # 30 days in case we need to troubleshoot
448 git-url: '$GIT_URL/$PROJECT'
449 java-version: openjdk8
450 mvn-global-settings: global-settings
452 mvn-params: '-Dmerge'
454 nexus-cut-dirs: 6 # Number of dirs in the Nexus path to remove for wget -r.
455 staging-profile-id: '' # Unused by this job.
457 submodule-recursive: true
459 gerrit_merge_triggers:
460 - change-merged-event
461 - comment-added-contains-event:
462 comment-contains-value: remerge$
464 gerrit_trigger_file_paths:
468 post_build_trigger: ''
470 #####################
471 # Job Configuration #
472 #####################
475 - lf-jacoco-nojava-workaround
477 mvn-version: '{mvn-version}'
478 - lf-provide-maven-settings:
479 global-settings-file: '{mvn-global-settings}'
480 settings-file: '{mvn-settings}'
481 - lf-infra-create-netrc:
482 server-id: '{mvn-snapshot-id}'
484 properties-content: |
485 NEXUS_CUT_DIRS={nexus-cut-dirs}
486 NEXUS_REPO={nexus-snapshot-repo}
487 - shell: !include-raw-escape:
488 - ../shell/lftools-install.sh
489 - ../shell/common-variables.sh
490 - ../shell/maven-fetch-metadata.sh
491 - ../shell/maven-build.sh
492 - ../shell/maven-deploy.sh
493 - lf-provide-maven-settings-cleanup
499 - trigger-parameterized-builds: '{obj:post_build_trigger}'
502 name: '{project-name}-maven-merge-{stream}'
503 id: gerrit-maven-merge
505 # yamllint disable-line rule:key-duplicates
509 - lf-infra-gerrit-scm:
510 jenkins-ssh-credential: '{jenkins-ssh-credential}'
512 refspec: '$GERRIT_REFSPEC'
513 branch: '$GERRIT_BRANCH'
514 submodule-recursive: '{submodule-recursive}'
515 choosing-strategy: default
520 server-name: '{gerrit-server-name}'
521 trigger-on: '{obj:gerrit_merge_triggers}'
523 - project-compare-type: ANT
524 project-pattern: '{project}'
526 - branch-compare-type: ANT
527 branch-pattern: '**/{branch}'
528 file-paths: '{obj:gerrit_trigger_file_paths}'
531 name: '{project-name}-maven-merge-{stream}'
532 id: github-maven-merge
534 # yamllint disable-line rule:key-duplicates
539 url: '{git-url}/{github-org}/{project}'
542 - lf-infra-github-scm:
543 url: '{git-clone-url}{github-org}/{project}'
544 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
546 submodule-recursive: '{submodule-recursive}'
547 choosing-strategy: default
548 jenkins-ssh-credential: '{jenkins-ssh-credential}'
551 - lf-infra-github-pr-trigger:
552 trigger-phrase: '^remerge$'
553 only-trigger-phrase: false
554 status-context: 'Maven Merge'
560 github_pr_admin_list:
567 - lf_maven_release: &lf_maven_release
568 name: lf-maven-release
570 ######################
571 # Default parameters #
572 ######################
574 archive-artifacts: ''
576 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
579 git-url: '$GIT_URL/$PROJECT'
580 java-version: openjdk8
581 mvn-global-settings: global-settings
586 submodule-recursive: true
588 gerrit_release_triggers:
589 - comment-added-contains-event:
590 comment-contains-value: build release$
592 #####################
593 # Job Configuration #
594 #####################
597 - lf-jacoco-nojava-workaround
599 mvn-version: '{mvn-version}'
600 - lf-provide-maven-settings:
601 global-settings-file: '{mvn-global-settings}'
602 settings-file: '{mvn-settings}'
603 - lf-infra-create-netrc:
604 server-id: '{mvn-staging-id}'
605 - shell: !include-raw-escape:
606 - ../shell/lftools-install.sh
607 - ../shell/common-variables.sh
608 - ../shell/maven-patch-release.sh
609 - ../shell/maven-build.sh
610 - ../shell/maven-stage.sh
611 - lf-provide-maven-settings-cleanup
614 name: '{project-name}-maven-release-{stream}'
615 id: gerrit-maven-release
617 # yamllint disable-line rule:key-duplicates
618 <<: *lf_maven_release
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 choosing-strategy: default
630 - timed: '{obj:cron}'
632 server-name: '{gerrit-server-name}'
633 trigger-on: '{obj:gerrit_release_triggers}'
635 - project-compare-type: ANT
636 project-pattern: '{project}'
638 - branch-compare-type: ANT
639 branch-pattern: '**/{branch}'
642 name: '{project-name}-maven-release-{stream}'
643 id: github-maven-release
645 # yamllint disable-line rule:key-duplicates
646 <<: *lf_maven_release
650 url: '{git-url}/{github-org}/{project}'
653 - lf-infra-github-scm:
654 url: '{git-clone-url}{github-org}/{project}'
655 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
657 submodule-recursive: '{submodule-recursive}'
658 choosing-strategy: default
659 jenkins-ssh-credential: '{jenkins-ssh-credential}'
662 - timed: '{obj:cron}'
663 - lf-infra-github-pr-trigger:
664 trigger-phrase: '^build release$'
665 only-trigger-phrase: true
666 status-context: 'Maven Release'
672 github_pr_admin_list:
679 - lf_maven_sonar: &lf_maven_sonar
682 ######################
683 # Default parameters #
684 ######################
686 archive-artifacts: ''
687 branch: master # Sonar should always be run on master branch
688 build-days-to-keep: 7
690 git-url: '$GIT_URL/$PROJECT'
691 java-version: openjdk8
692 mvn-global-settings: global-settings
696 sonar-mvn-goal: 'sonar:sonar'
697 staging-profile-id: '' # Unused in this job
699 submodule-recursive: true
701 gerrit_sonar_triggers:
702 - comment-added-contains-event:
703 comment-contains-value: run-sonar$
705 #####################
706 # Job Configuration #
707 #####################
710 - lf-infra-parameters:
714 lftools-version: '{lftools-version}'
715 - lf-infra-maven-parameters:
716 mvn-opts: '{mvn-opts}'
717 mvn-params: '{mvn-params}'
718 mvn-version: '{mvn-version}'
719 # Staging repos do not make sense for Sonar jobs so set it blank.
720 staging-profile-id: ''
722 name: ARCHIVE_ARTIFACTS
723 default: '{archive-artifacts}'
724 description: Artifacts to archive to the logs server.
726 name: SONAR_MAVEN_GOAL
727 default: '{sonar-mvn-goal}'
729 Maven goals to pass to the Sonar call. Typically sonar:sonar
730 however to use a specific version of the sonar-maven-plugin we
731 can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
736 server-name: '{gerrit-server-name}'
737 trigger-on: '{obj:gerrit_sonar_triggers}'
739 - project-compare-type: 'ANT'
740 project-pattern: '{project}'
742 - branch-compare-type: 'ANT'
743 branch-pattern: '**/master'
751 - lf-infra-maven-sonar:
752 mvn-settings: '{mvn-settings}'
753 mvn-version: '{mvn-version}'
761 name: lf-infra-maven-sonar
762 # Run a Sonar build with Maven
765 mvn-version: '{mvn-version}'
767 # Switch this to the sonar wrapper when JJB 2.0 is available
768 properties-content: SONAR_HOST_URL=$SONAR_URL
769 - lf-provide-maven-settings:
770 global-settings-file: global-settings
771 settings-file: '{mvn-settings}'
772 - shell: !include-raw-escape:
773 - ../shell/common-variables.sh
774 - ../shell/maven-sonar.sh
775 - lf-provide-maven-settings-cleanup
778 name: '{project-name}-sonar'
779 id: gerrit-maven-sonar
781 # yamllint disable-line rule:key-duplicates
785 - lf-infra-gerrit-scm:
786 jenkins-ssh-credential: '{jenkins-ssh-credential}'
788 refspec: $GERRIT_REFSPEC
789 branch: $GERRIT_BRANCH
790 submodule-recursive: '{submodule-recursive}'
791 choosing-strategy: default
794 name: '{project-name}-sonar'
795 id: github-maven-sonar
797 # yamllint disable-line rule:key-duplicates
802 url: '{git-url}/{github-org}/{project}'
805 - lf-infra-github-scm:
806 url: '{git-clone-url}{github-org}/{project}'
807 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
809 submodule-recursive: '{submodule-recursive}'
810 choosing-strategy: default
811 jenkins-ssh-credential: '{jenkins-ssh-credential}'
814 - lf-infra-github-pr-trigger:
815 trigger-phrase: '^recheck$'
816 only-trigger-phrase: false
817 status-context: 'Maven Verify'
823 github_pr_admin_list:
830 - lf_maven_verify: &lf_maven_verify
831 name: lf-maven-verify
833 ######################
834 # Default parameters #
835 ######################
837 archive-artifacts: ''
839 build-days-to-keep: 7
841 git-url: '$GIT_URL/$PROJECT'
842 java-version: openjdk8
843 mvn-global-settings: global-settings
845 mvn-params: '-Dstream=$STREAM'
847 staging-profile-id: '' # Unused in this job
849 submodule-recursive: true
851 gerrit_verify_triggers:
852 - patchset-created-event:
854 exclude-trivial-rebase: false
855 exclude-no-code-change: false
856 - draft-published-event
857 - comment-added-contains-event:
858 comment-contains-value: recheck$
859 gerrit_trigger_file_paths:
863 #####################
864 # Job Configuration #
865 #####################
870 - lf-jacoco-nojava-workaround
872 mvn-version: '{mvn-version}'
873 - lf-provide-maven-settings:
874 global-settings-file: '{mvn-global-settings}'
875 settings-file: '{mvn-settings}'
876 - shell: !include-raw-escape:
877 - ../shell/lftools-install.sh
878 - ../shell/common-variables.sh
879 - ../shell/maven-build.sh
880 - lf-provide-maven-settings-cleanup
888 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
889 id: gerrit-maven-verify
891 # yamllint disable-line rule:key-duplicates
895 - lf-infra-gerrit-scm:
896 jenkins-ssh-credential: '{jenkins-ssh-credential}'
898 refspec: '$GERRIT_REFSPEC'
899 branch: '$GERRIT_BRANCH'
900 submodule-recursive: '{submodule-recursive}'
901 choosing-strategy: gerrit
905 server-name: '{gerrit-server-name}'
906 trigger-on: '{obj:gerrit_verify_triggers}'
908 - project-compare-type: ANT
909 project-pattern: '{project}'
911 - branch-compare-type: ANT
912 branch-pattern: '**/{branch}'
913 file-paths: '{obj:gerrit_trigger_file_paths}'
916 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
917 id: github-maven-verify
919 # yamllint disable-line rule:key-duplicates
924 url: '{git-url}/{github-org}/{project}'
927 - lf-infra-github-scm:
928 url: '{git-clone-url}{github-org}/{project}'
929 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
931 submodule-recursive: '{submodule-recursive}'
932 choosing-strategy: default
933 jenkins-ssh-credential: '{jenkins-ssh-credential}'
936 - lf-infra-github-pr-trigger:
937 trigger-phrase: '^recheck$'
938 only-trigger-phrase: false
939 status-context: 'Maven Verify'
945 github_pr_admin_list:
948 #############################
949 # Maven Verify Dependencies #
950 #############################
952 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
953 name: lf-maven-verify-dependencies
955 ######################
956 # Default parameters #
957 ######################
959 archive-artifacts: ''
961 build-days-to-keep: 7
963 git-url: '$GIT_URL/$PROJECT'
964 java-version: openjdk8
965 mvn-global-settings: global-settings
967 mvn-params: '-Dstream=$STREAM'
969 staging-profile-id: '' # Unused by this job
971 submodule-recursive: true
973 gerrit_verify_triggers:
974 - comment-added-contains-event:
975 comment-contains-value: 'recheck: [0-9 ]+'
976 gerrit_trigger_file_paths:
980 #####################
981 # Job Configuration #
982 #####################
987 - lf-jacoco-nojava-workaround
989 mvn-version: '{mvn-version}'
990 - lf-provide-maven-settings:
991 global-settings-file: '{mvn-global-settings}'
992 settings-file: '{mvn-settings}'
993 - lf-fetch-dependent-patches
994 - shell: !include-raw-escape:
995 - ../shell/common-variables.sh
996 - ../shell/maven-build-deps.sh
997 - shell: !include-raw-escape:
998 - ../shell/common-variables.sh
999 - ../shell/maven-build.sh
1000 - lf-provide-maven-settings-cleanup
1008 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1009 id: gerrit-maven-verify-dependencies
1010 <<: *lf_maven_common
1011 # yamllint disable-line rule:key-duplicates
1012 <<: *lf_maven_verify_dependencies
1015 - lf-infra-gerrit-scm:
1016 jenkins-ssh-credential: '{jenkins-ssh-credential}'
1017 git-url: '{git-url}'
1018 refspec: '$GERRIT_REFSPEC'
1019 branch: '$GERRIT_BRANCH'
1020 submodule-recursive: '{submodule-recursive}'
1021 choosing-strategy: gerrit
1025 server-name: '{gerrit-server-name}'
1026 trigger-on: '{obj:gerrit_verify_triggers}'
1028 - project-compare-type: ANT
1029 project-pattern: '{project}'
1031 - branch-compare-type: ANT
1032 branch-pattern: '**/{branch}'
1033 file-paths: '{obj:gerrit_trigger_file_paths}'