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 staging-profile-id: '' # Unused in this job
667 submodule-recursive: true
669 gerrit_sonar_triggers:
670 - comment-added-contains-event:
671 comment-contains-value: run-sonar$
673 #####################
674 # Job Configuration #
675 #####################
680 server-name: '{gerrit-server-name}'
681 trigger-on: '{obj:gerrit_sonar_triggers}'
683 - project-compare-type: 'ANT'
684 project-pattern: '{project}'
686 - branch-compare-type: 'ANT'
687 branch-pattern: '**/master'
695 - lf-infra-maven-sonar:
696 mvn-settings: '{mvn-settings}'
697 mvn-version: '{mvn-version}'
705 name: lf-infra-maven-sonar
706 # Run a Sonar build with Maven
709 mvn-version: '{mvn-version}'
711 # Switch this to the sonar wrapper when JJB 2.0 is available
712 properties-content: |
713 SONAR_HOST_URL=$SONAR_URL
714 SONAR_MAVEN_GOAL=sonar:sonar
715 - lf-provide-maven-settings:
716 global-settings-file: global-settings
717 settings-file: '{mvn-settings}'
718 - shell: !include-raw-escape:
719 - ../shell/common-variables.sh
720 - ../shell/maven-sonar.sh
721 - lf-provide-maven-settings-cleanup
724 name: '{project-name}-sonar'
725 id: gerrit-maven-sonar
727 # yamllint disable-line rule:key-duplicates
731 - lf-infra-gerrit-scm:
732 jenkins-ssh-credential: '{jenkins-ssh-credential}'
734 refspec: $GERRIT_REFSPEC
735 branch: $GERRIT_BRANCH
736 submodule-recursive: '{submodule-recursive}'
737 choosing-strategy: default
740 name: '{project-name}-sonar'
741 id: github-maven-sonar
743 # yamllint disable-line rule:key-duplicates
748 url: '{git-url}/{github-org}/{project}'
751 - lf-infra-github-scm:
752 url: '{git-clone-url}{github-org}/{project}'
753 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
755 submodule-recursive: '{submodule-recursive}'
756 choosing-strategy: default
757 jenkins-ssh-credential: '{jenkins-ssh-credential}'
760 - lf-infra-github-pr-trigger:
761 trigger-phrase: '^recheck$'
762 only-trigger-phrase: false
763 status-context: 'Maven Verify'
769 github_pr_admin_list:
776 - lf_maven_verify: &lf_maven_verify
777 name: lf-maven-verify
779 ######################
780 # Default parameters #
781 ######################
783 archive-artifacts: ''
785 build-days-to-keep: 7
787 git-url: '$GIT_URL/$PROJECT'
788 java-version: openjdk8
789 mvn-global-settings: global-settings
791 mvn-params: '-Dstream=$STREAM'
793 staging-profile-id: '' # Unused in this job
795 submodule-recursive: true
797 gerrit_verify_triggers:
798 - patchset-created-event:
800 exclude-trivial-rebase: false
801 exclude-no-code-change: false
802 - draft-published-event
803 - comment-added-contains-event:
804 comment-contains-value: recheck$
805 gerrit_trigger_file_paths:
809 #####################
810 # Job Configuration #
811 #####################
816 - lf-jacoco-nojava-workaround
818 mvn-version: '{mvn-version}'
819 - lf-provide-maven-settings:
820 global-settings-file: '{mvn-global-settings}'
821 settings-file: '{mvn-settings}'
822 - shell: !include-raw-escape:
823 - ../shell/lftools-install.sh
824 - ../shell/common-variables.sh
825 - ../shell/maven-build.sh
826 - lf-provide-maven-settings-cleanup
834 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
835 id: gerrit-maven-verify
837 # yamllint disable-line rule:key-duplicates
841 - lf-infra-gerrit-scm:
842 jenkins-ssh-credential: '{jenkins-ssh-credential}'
844 refspec: '$GERRIT_REFSPEC'
845 branch: '$GERRIT_BRANCH'
846 submodule-recursive: '{submodule-recursive}'
847 choosing-strategy: gerrit
851 server-name: '{gerrit-server-name}'
852 trigger-on: '{obj:gerrit_verify_triggers}'
854 - project-compare-type: ANT
855 project-pattern: '{project}'
857 - branch-compare-type: ANT
858 branch-pattern: '**/{branch}'
859 file-paths: '{obj:gerrit_trigger_file_paths}'
862 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
863 id: github-maven-verify
865 # yamllint disable-line rule:key-duplicates
870 url: '{git-url}/{github-org}/{project}'
873 - lf-infra-github-scm:
874 url: '{git-clone-url}{github-org}/{project}'
875 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
877 submodule-recursive: '{submodule-recursive}'
878 choosing-strategy: default
879 jenkins-ssh-credential: '{jenkins-ssh-credential}'
882 - lf-infra-github-pr-trigger:
883 trigger-phrase: '^recheck$'
884 only-trigger-phrase: false
885 status-context: 'Maven Verify'
891 github_pr_admin_list:
894 #############################
895 # Maven Verify Dependencies #
896 #############################
898 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
899 name: lf-maven-verify-dependencies
901 ######################
902 # Default parameters #
903 ######################
905 archive-artifacts: ''
907 build-days-to-keep: 7
909 git-url: '$GIT_URL/$PROJECT'
910 java-version: openjdk8
911 mvn-global-settings: global-settings
913 mvn-params: '-Dstream=$STREAM'
915 staging-profile-id: '' # Unused by this job
917 submodule-recursive: true
919 gerrit_verify_triggers:
920 - comment-added-contains-event:
921 comment-contains-value: 'recheck: [0-9 ]+'
922 gerrit_trigger_file_paths:
926 #####################
927 # Job Configuration #
928 #####################
933 - lf-jacoco-nojava-workaround
935 mvn-version: '{mvn-version}'
936 - lf-provide-maven-settings:
937 global-settings-file: '{mvn-global-settings}'
938 settings-file: '{mvn-settings}'
939 - lf-fetch-dependent-patches
940 - shell: !include-raw-escape:
941 - ../shell/common-variables.sh
942 - ../shell/maven-build-deps.sh
943 - shell: !include-raw-escape:
944 - ../shell/common-variables.sh
945 - ../shell/maven-build.sh
946 - lf-provide-maven-settings-cleanup
954 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
955 id: gerrit-maven-verify-dependencies
957 # yamllint disable-line rule:key-duplicates
958 <<: *lf_maven_verify_dependencies
961 - lf-infra-gerrit-scm:
962 jenkins-ssh-credential: '{jenkins-ssh-credential}'
964 refspec: '$GERRIT_REFSPEC'
965 branch: '$GERRIT_BRANCH'
966 submodule-recursive: '{submodule-recursive}'
967 choosing-strategy: gerrit
971 server-name: '{gerrit-server-name}'
972 trigger-on: '{obj:gerrit_verify_triggers}'
974 - project-compare-type: ANT
975 project-pattern: '{project}'
977 - branch-compare-type: ANT
978 branch-pattern: '**/{branch}'
979 file-paths: '{obj:gerrit_trigger_file_paths}'