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
118 #####################
119 # Job Configuration #
120 #####################
123 # Build weekly on Saturdays
128 mvn-version: '{mvn-version}'
129 - lf-provide-maven-settings:
130 global-settings-file: '{mvn-global-settings}'
131 settings-file: '{mvn-settings}'
132 - shell: !include-raw-escape:
133 - ../shell/common-variables.sh
134 - ../shell/sonatype-clm.sh
135 - lf-provide-maven-settings-cleanup
136 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
138 application-name: '{project-name}'
141 name: '{project-name}-maven-clm-{stream}'
144 # yamllint disable-line rule:key-duplicates
148 - lf-infra-gerrit-scm:
149 jenkins-ssh-credential: '{jenkins-ssh-credential}'
151 refspec: '$GERRIT_REFSPEC'
152 branch: '$GERRIT_BRANCH'
153 submodule-recursive: '{submodule-recursive}'
154 choosing-strategy: default
157 name: '{project-name}-maven-clm-{stream}'
160 # yamllint disable-line rule:key-duplicates
165 url: '{git-url}/{github-org}/{project}'
168 - lf-infra-github-scm:
169 url: '{git-clone-url}{github-org}/{project}'
171 branch: 'refs/heads/{branch}'
172 submodule-recursive: '{submodule-recursive}'
173 choosing-strategy: default
174 jenkins-ssh-credential: '{jenkins-ssh-credential}'
176 #########################
177 # Maven Javadoc Publish #
178 #########################
180 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
181 name: lf-maven-javadoc-publish
183 ######################
184 # Default parameters #
185 ######################
187 archive-artifacts: ''
189 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
191 git-url: '$GIT_URL/$PROJECT'
192 java-version: openjdk8
193 mvn-global-settings: global-settings
197 staging-profile-id: '' # Unused by the javadoc jobs
199 submodule-recursive: true
201 gerrit_merge_triggers:
202 - change-merged-event
203 - comment-added-contains-event:
204 comment-contains-value: remerge$
206 #####################
207 # Job Configuration #
208 #####################
212 mvn-version: '{mvn-version}'
213 - lf-provide-maven-settings:
214 global-settings-file: '{mvn-global-settings}'
215 settings-file: '{mvn-settings}'
216 - lf-infra-create-netrc:
217 server-id: '{mvn-site-id}'
219 properties-content: 'DEPLOY_PATH={javadoc-path}'
220 - shell: !include-raw-escape:
221 - ../shell/common-variables.sh
222 - ../shell/maven-javadoc-generate.sh
223 - ../shell/lftools-install.sh
224 - ../shell/maven-javadoc-publish.sh
225 - lf-provide-maven-settings-cleanup
228 name: '{project-name}-maven-javadoc-publish-{stream}'
229 id: gerrit-maven-javadoc-publish
231 # yamllint disable-line rule:key-duplicates
232 <<: *lf_maven_javadoc_publish
234 git-url: '$GIT_URL/$GERRIT_PROJECT'
237 - lf-infra-gerrit-scm:
241 submodule-recursive: '{submodule-recursive}'
242 choosing-strategy: default
243 jenkins-ssh-credential: '{jenkins-ssh-credential}'
247 server-name: '{gerrit-server-name}'
248 trigger-on: '{obj:gerrit_merge_triggers}'
250 - project-compare-type: ANT
251 project-pattern: '{project}'
253 - branch-compare-type: ANT
254 branch-pattern: '**/{branch}'
257 name: '{project-name}-maven-javadoc-publish-{stream}'
258 id: github-maven-javadoc-publish
260 # yamllint disable-line rule:key-duplicates
261 <<: *lf_maven_javadoc_publish
265 url: '{git-url}/{github-org}/{project}'
268 - lf-infra-github-scm:
269 url: '{git-clone-url}{github-org}/{project}'
272 submodule-recursive: '{submodule-recursive}'
273 choosing-strategy: default
274 jenkins-ssh-credential: '{jenkins-ssh-credential}'
280 - lf-infra-github-pr-trigger:
281 trigger-phrase: '^remerge$'
282 only-trigger-phrase: true
283 status-context: 'JJB Merge'
286 github-org: '{github-org}'
287 github_pr_whitelist: '{obj:github_pr_whitelist}'
288 github_pr_admin_list: '{obj:github_pr_admin_list}'
290 ########################
291 # Maven Javadoc Verify #
292 ########################
294 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
295 name: lf-maven-javadoc-verify
297 ######################
298 # Default parameters #
299 ######################
301 archive-artifacts: ''
303 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
305 git-url: '$GIT_URL/$PROJECT'
306 java-version: openjdk8
307 mvn-global-settings: global-settings
311 staging-profile-id: '' # Unused by the javadoc jobs
313 submodule-recursive: true
315 gerrit_verify_triggers:
316 - patchset-created-event:
318 exclude-trivial-rebase: false
319 exclude-no-code-change: false
320 - draft-published-event
321 - comment-added-contains-event:
322 comment-contains-value: recheck$
324 #####################
325 # Job Configuration #
326 #####################
332 mvn-version: '{mvn-version}'
333 - lf-provide-maven-settings:
334 global-settings-file: '{mvn-global-settings}'
335 settings-file: '{mvn-settings}'
336 - shell: !include-raw-escape:
337 - ../shell/common-variables.sh
338 - ../shell/maven-javadoc-generate.sh
339 - lf-provide-maven-settings-cleanup
342 name: '{project-name}-maven-javadoc-verify-{stream}'
343 id: gerrit-maven-javadoc-verify
345 # yamllint disable-line rule:key-duplicates
346 <<: *lf_maven_javadoc_verify
349 - lf-infra-gerrit-scm:
350 jenkins-ssh-credential: '{jenkins-ssh-credential}'
352 refspec: '$GERRIT_REFSPEC'
353 branch: '$GERRIT_BRANCH'
354 submodule-recursive: '{submodule-recursive}'
355 choosing-strategy: gerrit
359 server-name: '{gerrit-server-name}'
360 trigger-on: '{obj:gerrit_verify_triggers}'
362 - project-compare-type: ANT
363 project-pattern: '{project}'
365 - branch-compare-type: ANT
366 branch-pattern: '**/{branch}'
369 name: '{project-name}-maven-javadoc-verify-{stream}'
370 id: github-maven-javadoc-verify
372 # yamllint disable-line rule:key-duplicates
373 <<: *lf_maven_javadoc_verify
377 url: '{git-url}/{github-org}/{project}'
380 - lf-infra-github-scm:
381 url: '{git-clone-url}{github-org}/{project}'
382 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
384 submodule-recursive: '{submodule-recursive}'
385 choosing-strategy: default
386 jenkins-ssh-credential: '{jenkins-ssh-credential}'
389 - lf-infra-github-pr-trigger:
390 trigger-phrase: '^recheck$'
391 only-trigger-phrase: true
392 status-context: 'Maven Javadoc'
398 github_pr_admin_list:
405 - lf_maven_merge: &lf_maven_merge
408 ######################
409 # Default parameters #
410 ######################
412 archive-artifacts: ''
414 build-days-to-keep: 30 # 30 days in case we need to troubleshoot
417 git-url: '$GIT_URL/$PROJECT'
418 java-version: openjdk8
419 mvn-global-settings: global-settings
421 mvn-params: '-Dmerge'
423 nexus-cut-dirs: 6 # Number of dirs in the Nexus path to remove for wget -r.
424 staging-profile-id: '' # Unused by this job.
426 submodule-recursive: true
428 gerrit_merge_triggers:
429 - change-merged-event
430 - comment-added-contains-event:
431 comment-contains-value: remerge$
433 gerrit_trigger_file_paths:
437 post_build_trigger: ''
439 #####################
440 # Job Configuration #
441 #####################
444 - lf-jacoco-nojava-workaround
446 mvn-version: '{mvn-version}'
447 - lf-provide-maven-settings:
448 global-settings-file: '{mvn-global-settings}'
449 settings-file: '{mvn-settings}'
450 - lf-infra-create-netrc:
451 server-id: '{mvn-snapshot-id}'
453 properties-content: |
454 NEXUS_CUT_DIRS={nexus-cut-dirs}
455 NEXUS_REPO={nexus-snapshot-repo}
456 - shell: !include-raw-escape:
457 - ../shell/lftools-install.sh
458 - ../shell/common-variables.sh
459 - ../shell/maven-fetch-metadata.sh
460 - ../shell/maven-build.sh
461 - ../shell/maven-deploy.sh
462 - lf-provide-maven-settings-cleanup
468 - trigger-parameterized-builds: '{obj:post_build_trigger}'
471 name: '{project-name}-maven-merge-{stream}'
472 id: gerrit-maven-merge
474 # yamllint disable-line rule:key-duplicates
478 - lf-infra-gerrit-scm:
479 jenkins-ssh-credential: '{jenkins-ssh-credential}'
481 refspec: '$GERRIT_REFSPEC'
482 branch: '$GERRIT_BRANCH'
483 submodule-recursive: '{submodule-recursive}'
484 choosing-strategy: default
489 server-name: '{gerrit-server-name}'
490 trigger-on: '{obj:gerrit_merge_triggers}'
492 - project-compare-type: ANT
493 project-pattern: '{project}'
495 - branch-compare-type: ANT
496 branch-pattern: '**/{branch}'
497 file-paths: '{obj:gerrit_trigger_file_paths}'
500 name: '{project-name}-maven-merge-{stream}'
501 id: github-maven-merge
503 # yamllint disable-line rule:key-duplicates
508 url: '{git-url}/{github-org}/{project}'
511 - lf-infra-github-scm:
512 url: '{git-clone-url}{github-org}/{project}'
513 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
515 submodule-recursive: '{submodule-recursive}'
516 choosing-strategy: default
517 jenkins-ssh-credential: '{jenkins-ssh-credential}'
520 - lf-infra-github-pr-trigger:
521 trigger-phrase: '^remerge$'
522 only-trigger-phrase: false
523 status-context: 'Maven Merge'
529 github_pr_admin_list:
536 - lf_maven_release: &lf_maven_release
537 name: lf-maven-release
539 ######################
540 # Default parameters #
541 ######################
543 archive-artifacts: ''
545 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
548 git-url: '$GIT_URL/$PROJECT'
549 java-version: openjdk8
550 mvn-global-settings: global-settings
555 submodule-recursive: true
557 gerrit_release_triggers:
558 - comment-added-contains-event:
559 comment-contains-value: build release$
561 #####################
562 # Job Configuration #
563 #####################
566 - lf-jacoco-nojava-workaround
568 mvn-version: '{mvn-version}'
569 - lf-provide-maven-settings:
570 global-settings-file: '{mvn-global-settings}'
571 settings-file: '{mvn-settings}'
572 - lf-infra-create-netrc:
573 server-id: '{mvn-staging-id}'
574 - shell: !include-raw-escape:
575 - ../shell/lftools-install.sh
576 - ../shell/common-variables.sh
577 - ../shell/maven-patch-release.sh
578 - ../shell/maven-build.sh
579 - ../shell/maven-stage.sh
580 - lf-provide-maven-settings-cleanup
583 name: '{project-name}-maven-release-{stream}'
584 id: gerrit-maven-release
586 # yamllint disable-line rule:key-duplicates
587 <<: *lf_maven_release
590 - lf-infra-gerrit-scm:
591 jenkins-ssh-credential: '{jenkins-ssh-credential}'
593 refspec: '$GERRIT_REFSPEC'
594 branch: '$GERRIT_BRANCH'
595 submodule-recursive: '{submodule-recursive}'
596 choosing-strategy: default
599 - timed: '{obj:cron}'
601 server-name: '{gerrit-server-name}'
602 trigger-on: '{obj:gerrit_release_triggers}'
604 - project-compare-type: ANT
605 project-pattern: '{project}'
607 - branch-compare-type: ANT
608 branch-pattern: '**/{branch}'
611 name: '{project-name}-maven-release-{stream}'
612 id: github-maven-release
614 # yamllint disable-line rule:key-duplicates
615 <<: *lf_maven_release
619 url: '{git-url}/{github-org}/{project}'
622 - lf-infra-github-scm:
623 url: '{git-clone-url}{github-org}/{project}'
624 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
626 submodule-recursive: '{submodule-recursive}'
627 choosing-strategy: default
628 jenkins-ssh-credential: '{jenkins-ssh-credential}'
631 - timed: '{obj:cron}'
632 - lf-infra-github-pr-trigger:
633 trigger-phrase: '^build release$'
634 only-trigger-phrase: true
635 status-context: 'Maven Release'
641 github_pr_admin_list:
648 - lf_maven_sonar: &lf_maven_sonar
651 ######################
652 # Default parameters #
653 ######################
655 archive-artifacts: ''
656 branch: master # Sonar should always be run on master branch
657 build-days-to-keep: 7
659 git-url: '$GIT_URL/$PROJECT'
660 java-version: openjdk8
661 mvn-global-settings: global-settings
665 sonar-mvn-goal: 'sonar:sonar'
666 staging-profile-id: '' # Unused in this job
668 submodule-recursive: true
670 gerrit_sonar_triggers:
671 - comment-added-contains-event:
672 comment-contains-value: run-sonar$
674 #####################
675 # Job Configuration #
676 #####################
679 - lf-infra-parameters:
683 lftools-version: '{lftools-version}'
684 - lf-infra-maven-parameters:
685 mvn-opts: '{mvn-opts}'
686 mvn-params: '{mvn-params}'
687 mvn-version: '{mvn-version}'
688 # Staging repos do not make sense for Sonar jobs so set it blank.
689 staging-profile-id: ''
691 name: ARCHIVE_ARTIFACTS
692 default: '{archive-artifacts}'
693 description: Artifacts to archive to the logs server.
695 name: SONAR_MAVEN_GOAL
696 default: '{sonar-mvn-goal}'
698 Maven goals to pass to the Sonar call. Typically sonar:sonar
699 however to use a specific version of the sonar-maven-plugin we
700 can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
705 server-name: '{gerrit-server-name}'
706 trigger-on: '{obj:gerrit_sonar_triggers}'
708 - project-compare-type: 'ANT'
709 project-pattern: '{project}'
711 - branch-compare-type: 'ANT'
712 branch-pattern: '**/master'
720 - lf-infra-maven-sonar:
721 mvn-settings: '{mvn-settings}'
722 mvn-version: '{mvn-version}'
730 name: lf-infra-maven-sonar
731 # Run a Sonar build with Maven
734 mvn-version: '{mvn-version}'
736 # Switch this to the sonar wrapper when JJB 2.0 is available
737 properties-content: SONAR_HOST_URL=$SONAR_URL
738 - lf-provide-maven-settings:
739 global-settings-file: global-settings
740 settings-file: '{mvn-settings}'
741 - shell: !include-raw-escape:
742 - ../shell/common-variables.sh
743 - ../shell/maven-sonar.sh
744 - lf-provide-maven-settings-cleanup
747 name: '{project-name}-sonar'
748 id: gerrit-maven-sonar
750 # yamllint disable-line rule:key-duplicates
754 - lf-infra-gerrit-scm:
755 jenkins-ssh-credential: '{jenkins-ssh-credential}'
757 refspec: $GERRIT_REFSPEC
758 branch: $GERRIT_BRANCH
759 submodule-recursive: '{submodule-recursive}'
760 choosing-strategy: default
763 name: '{project-name}-sonar'
764 id: github-maven-sonar
766 # yamllint disable-line rule:key-duplicates
771 url: '{git-url}/{github-org}/{project}'
774 - lf-infra-github-scm:
775 url: '{git-clone-url}{github-org}/{project}'
776 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
778 submodule-recursive: '{submodule-recursive}'
779 choosing-strategy: default
780 jenkins-ssh-credential: '{jenkins-ssh-credential}'
783 - lf-infra-github-pr-trigger:
784 trigger-phrase: '^recheck$'
785 only-trigger-phrase: false
786 status-context: 'Maven Verify'
792 github_pr_admin_list:
799 - lf_maven_verify: &lf_maven_verify
800 name: lf-maven-verify
802 ######################
803 # Default parameters #
804 ######################
806 archive-artifacts: ''
808 build-days-to-keep: 7
810 git-url: '$GIT_URL/$PROJECT'
811 java-version: openjdk8
812 mvn-global-settings: global-settings
814 mvn-params: '-Dstream=$STREAM'
816 staging-profile-id: '' # Unused in this job
818 submodule-recursive: true
820 gerrit_verify_triggers:
821 - patchset-created-event:
823 exclude-trivial-rebase: false
824 exclude-no-code-change: false
825 - draft-published-event
826 - comment-added-contains-event:
827 comment-contains-value: recheck$
828 gerrit_trigger_file_paths:
832 #####################
833 # Job Configuration #
834 #####################
839 - lf-jacoco-nojava-workaround
841 mvn-version: '{mvn-version}'
842 - lf-provide-maven-settings:
843 global-settings-file: '{mvn-global-settings}'
844 settings-file: '{mvn-settings}'
845 - shell: !include-raw-escape:
846 - ../shell/lftools-install.sh
847 - ../shell/common-variables.sh
848 - ../shell/maven-build.sh
849 - lf-provide-maven-settings-cleanup
857 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
858 id: gerrit-maven-verify
860 # yamllint disable-line rule:key-duplicates
864 - lf-infra-gerrit-scm:
865 jenkins-ssh-credential: '{jenkins-ssh-credential}'
867 refspec: '$GERRIT_REFSPEC'
868 branch: '$GERRIT_BRANCH'
869 submodule-recursive: '{submodule-recursive}'
870 choosing-strategy: gerrit
874 server-name: '{gerrit-server-name}'
875 trigger-on: '{obj:gerrit_verify_triggers}'
877 - project-compare-type: ANT
878 project-pattern: '{project}'
880 - branch-compare-type: ANT
881 branch-pattern: '**/{branch}'
882 file-paths: '{obj:gerrit_trigger_file_paths}'
885 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
886 id: github-maven-verify
888 # yamllint disable-line rule:key-duplicates
893 url: '{git-url}/{github-org}/{project}'
896 - lf-infra-github-scm:
897 url: '{git-clone-url}{github-org}/{project}'
898 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
900 submodule-recursive: '{submodule-recursive}'
901 choosing-strategy: default
902 jenkins-ssh-credential: '{jenkins-ssh-credential}'
905 - lf-infra-github-pr-trigger:
906 trigger-phrase: '^recheck$'
907 only-trigger-phrase: false
908 status-context: 'Maven Verify'
914 github_pr_admin_list:
917 #############################
918 # Maven Verify Dependencies #
919 #############################
921 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
922 name: lf-maven-verify-dependencies
924 ######################
925 # Default parameters #
926 ######################
928 archive-artifacts: ''
930 build-days-to-keep: 7
932 git-url: '$GIT_URL/$PROJECT'
933 java-version: openjdk8
934 mvn-global-settings: global-settings
936 mvn-params: '-Dstream=$STREAM'
938 staging-profile-id: '' # Unused by this job
940 submodule-recursive: true
942 gerrit_verify_triggers:
943 - comment-added-contains-event:
944 comment-contains-value: 'recheck: [0-9 ]+'
945 gerrit_trigger_file_paths:
949 #####################
950 # Job Configuration #
951 #####################
956 - lf-jacoco-nojava-workaround
958 mvn-version: '{mvn-version}'
959 - lf-provide-maven-settings:
960 global-settings-file: '{mvn-global-settings}'
961 settings-file: '{mvn-settings}'
962 - lf-fetch-dependent-patches
963 - shell: !include-raw-escape:
964 - ../shell/common-variables.sh
965 - ../shell/maven-build-deps.sh
966 - shell: !include-raw-escape:
967 - ../shell/common-variables.sh
968 - ../shell/maven-build.sh
969 - lf-provide-maven-settings-cleanup
977 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
978 id: gerrit-maven-verify-dependencies
980 # yamllint disable-line rule:key-duplicates
981 <<: *lf_maven_verify_dependencies
984 - lf-infra-gerrit-scm:
985 jenkins-ssh-credential: '{jenkins-ssh-credential}'
987 refspec: '$GERRIT_REFSPEC'
988 branch: '$GERRIT_BRANCH'
989 submodule-recursive: '{submodule-recursive}'
990 choosing-strategy: gerrit
994 server-name: '{gerrit-server-name}'
995 trigger-on: '{obj:gerrit_verify_triggers}'
997 - project-compare-type: ANT
998 project-pattern: '{project}'
1000 - branch-compare-type: ANT
1001 branch-pattern: '**/{branch}'
1002 file-paths: '{obj:gerrit_trigger_file_paths}'