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
12 - gerrit-maven-release
14 - gerrit-maven-verify-dependencies
17 name: '{project-name}-github-maven-jobs'
19 # This job group contains all the recommended jobs that should be deployed
20 # for any project ci that is using github.
24 - github-maven-release
28 name: '{project-name}-maven-javadoc-jobs'
30 # This job group contains all the recommended jobs that should be deployed
34 - gerrit-maven-javadoc-publish
35 - gerrit-maven-javadoc-verify
38 name: '{project-name}-github-maven-javadoc-jobs'
40 # This job group contains all the recommended jobs that should be deployed
44 - github-maven-javadoc-publish
45 - github-maven-javadoc-verify
51 - lf_maven_common: &lf_maven_common
54 project-type: freestyle
59 - lf-infra-properties:
60 build-days-to-keep: '{build-days-to-keep}'
63 - lf-infra-parameters:
67 lftools-version: '{lftools-version}'
68 - lf-infra-maven-parameters:
69 mvn-opts: '{mvn-opts}'
70 mvn-params: '{mvn-params}'
71 mvn-version: '{mvn-version}'
72 # Staging repos do not make sense for CLM jobs so set it blank.
73 staging-profile-id: '{staging-profile-id}'
77 build-timeout: '{build-timeout}'
78 jenkins-ssh-credential: '{jenkins-ssh-credential}'
81 # TODO: Make email notification work.
82 # - lf-infra-email-notify:
83 # email-recipients: '{email-recipients}'
84 # email-prefix: '[releng]'
91 - lf_maven_clm: &lf_maven_clm
94 ######################
95 # Default parameters #
96 ######################
99 build-days-to-keep: 30 # 30 days for troubleshooting purposes
101 git-url: '$GIT_URL/$PROJECT'
102 java-version: openjdk8
103 mvn-global-settings: global-settings
107 staging-profile-id: '' # Unused in this job
109 submodule-recursive: true
111 #####################
112 # Job Configuration #
113 #####################
116 # Build weekly on Saturdays
121 mvn-version: '{mvn-version}'
122 - lf-provide-maven-settings:
123 global-settings-file: '{mvn-global-settings}'
124 settings-file: '{mvn-settings}'
125 - shell: !include-raw-escape:
126 - ../shell/common-variables.sh
127 - ../shell/sonatype-clm.sh
128 - lf-provide-maven-settings-cleanup
129 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
131 application-name: '{project-name}'
134 name: '{project-name}-maven-clm-{stream}'
137 # yamllint disable-line rule:key-duplicates
141 - lf-infra-gerrit-scm:
142 jenkins-ssh-credential: '{jenkins-ssh-credential}'
144 refspec: '$GERRIT_REFSPEC'
145 branch: '$GERRIT_BRANCH'
146 submodule-recursive: '{submodule-recursive}'
147 choosing-strategy: default
150 name: '{project-name}-maven-clm-{stream}'
153 # yamllint disable-line rule:key-duplicates
158 url: '{git-url}/{github-org}/{project}'
161 - lf-infra-github-scm:
162 url: '{git-clone-url}{github-org}/{project}'
163 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
165 submodule-recursive: '{submodule-recursive}'
166 choosing-strategy: default
167 jenkins-ssh-credential: '{jenkins-ssh-credential}'
169 #########################
170 # Maven Javadoc Publish #
171 #########################
173 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
174 name: lf-maven-javadoc-publish
176 ######################
177 # Default parameters #
178 ######################
181 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
183 git-url: '$GIT_URL/$PROJECT'
184 java-version: openjdk8
185 mvn-global-settings: global-settings
189 staging-profile-id: '' # Unused by the javadoc jobs
191 submodule-recursive: true
193 gerrit_merge_triggers:
194 - change-merged-event
195 - comment-added-contains-event:
196 comment-contains-value: remerge$
198 #####################
199 # Job Configuration #
200 #####################
204 mvn-version: '{mvn-version}'
205 - lf-provide-maven-settings:
206 global-settings-file: '{mvn-global-settings}'
207 settings-file: '{mvn-settings}'
208 - lf-infra-create-netrc:
209 server-id: '{mvn-site-id}'
211 properties-content: 'DEPLOY_PATH={javadoc-path}'
212 - shell: !include-raw-escape:
213 - ../shell/common-variables.sh
214 - ../shell/maven-javadoc-generate.sh
215 - ../shell/lftools-install.sh
216 - ../shell/maven-javadoc-publish.sh
217 - lf-provide-maven-settings-cleanup
220 name: '{project-name}-maven-javadoc-publish-{stream}'
221 id: gerrit-maven-javadoc-publish
223 # yamllint disable-line rule:key-duplicates
224 <<: *lf_maven_javadoc_publish
226 git-url: '$GIT_URL/$GERRIT_PROJECT'
229 - lf-infra-gerrit-scm:
233 submodule-recursive: '{submodule-recursive}'
234 choosing-strategy: default
235 jenkins-ssh-credential: '{jenkins-ssh-credential}'
239 server-name: '{gerrit-server-name}'
240 trigger-on: '{obj:gerrit_merge_triggers}'
242 - project-compare-type: ANT
243 project-pattern: '{project}'
245 - branch-compare-type: ANT
246 branch-pattern: '**/{branch}'
249 name: '{project-name}-maven-javadoc-publish-{stream}'
250 id: github-maven-javadoc-publish
252 # yamllint disable-line rule:key-duplicates
253 <<: *lf_maven_javadoc_publish
257 url: '{git-url}/{github-org}/{project}'
260 - lf-infra-github-scm:
261 url: '{git-clone-url}{github-org}/{project}'
264 submodule-recursive: '{submodule-recursive}'
265 choosing-strategy: default
266 jenkins-ssh-credential: '{jenkins-ssh-credential}'
272 - lf-infra-github-pr-trigger:
273 trigger-phrase: '^remerge$'
274 only-trigger-phrase: true
275 status-context: 'JJB Merge'
278 github-org: '{github-org}'
279 github_pr_whitelist: '{obj:github_pr_whitelist}'
280 github_pr_admin_list: '{obj:github_pr_admin_list}'
282 ########################
283 # Maven Javadoc Verify #
284 ########################
286 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
287 name: lf-maven-javadoc-verify
289 ######################
290 # Default parameters #
291 ######################
294 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
296 git-url: '$GIT_URL/$PROJECT'
297 java-version: openjdk8
298 mvn-global-settings: global-settings
302 staging-profile-id: '' # Unused by the javadoc jobs
304 submodule-recursive: true
306 gerrit_verify_triggers:
307 - patchset-created-event:
309 exclude-trivial-rebase: false
310 exclude-no-code-change: false
311 - draft-published-event
312 - comment-added-contains-event:
313 comment-contains-value: recheck$
315 #####################
316 # Job Configuration #
317 #####################
321 mvn-version: '{mvn-version}'
322 - lf-provide-maven-settings:
323 global-settings-file: '{mvn-global-settings}'
324 settings-file: '{mvn-settings}'
325 - shell: !include-raw-escape:
326 - ../shell/common-variables.sh
327 - ../shell/maven-javadoc-generate.sh
328 - lf-provide-maven-settings-cleanup
331 name: '{project-name}-maven-javadoc-verify-{stream}'
332 id: gerrit-maven-javadoc-verify
334 # yamllint disable-line rule:key-duplicates
335 <<: *lf_maven_javadoc_verify
338 - lf-infra-gerrit-scm:
339 jenkins-ssh-credential: '{jenkins-ssh-credential}'
341 refspec: '$GERRIT_REFSPEC'
342 branch: '$GERRIT_BRANCH'
343 submodule-recursive: '{submodule-recursive}'
344 choosing-strategy: gerrit
348 server-name: '{gerrit-server-name}'
349 trigger-on: '{obj:gerrit_verify_triggers}'
351 - project-compare-type: ANT
352 project-pattern: '{project}'
354 - branch-compare-type: ANT
355 branch-pattern: '**/{branch}'
358 name: '{project-name}-maven-javadoc-verify-{stream}'
359 id: github-maven-javadoc-verify
361 # yamllint disable-line rule:key-duplicates
362 <<: *lf_maven_javadoc_verify
366 url: '{git-url}/{github-org}/{project}'
369 - lf-infra-github-scm:
370 url: '{git-clone-url}{github-org}/{project}'
371 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
373 submodule-recursive: '{submodule-recursive}'
374 choosing-strategy: default
375 jenkins-ssh-credential: '{jenkins-ssh-credential}'
378 - lf-infra-github-pr-trigger:
379 trigger-phrase: '^recheck$'
380 only-trigger-phrase: true
381 status-context: 'Maven Javadoc'
387 github_pr_admin_list:
394 - lf_maven_release: &lf_maven_release
395 name: lf-maven-release
397 ######################
398 # Default parameters #
399 ######################
402 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
405 git-url: '$GIT_URL/$PROJECT'
406 java-version: openjdk8
407 mvn-global-settings: global-settings
412 submodule-recursive: true
414 gerrit_release_triggers:
415 - comment-added-contains-event:
416 comment-contains-value: build release$
418 #####################
419 # Job Configuration #
420 #####################
423 - lf-jacoco-nojava-workaround
425 mvn-version: '{mvn-version}'
426 - lf-provide-maven-settings:
427 global-settings-file: '{mvn-global-settings}'
428 settings-file: '{mvn-settings}'
429 - lf-infra-create-netrc:
430 server-id: '{mvn-staging-id}'
431 - shell: !include-raw-escape:
432 - ../shell/lftools-install.sh
433 - ../shell/common-variables.sh
434 - ../shell/maven-patch-release.sh
435 - ../shell/maven-build.sh
436 - ../shell/maven-stage.sh
437 - lf-provide-maven-settings-cleanup
440 name: '{project-name}-maven-release-{stream}'
441 id: gerrit-maven-release
443 # yamllint disable-line rule:key-duplicates
444 <<: *lf_maven_release
447 - lf-infra-gerrit-scm:
448 jenkins-ssh-credential: '{jenkins-ssh-credential}'
450 refspec: '$GERRIT_REFSPEC'
451 branch: '$GERRIT_BRANCH'
452 submodule-recursive: '{submodule-recursive}'
453 choosing-strategy: default
456 - timed: '{obj:cron}'
458 server-name: '{gerrit-server-name}'
459 trigger-on: '{obj:gerrit_release_triggers}'
461 - project-compare-type: ANT
462 project-pattern: '{project}'
464 - branch-compare-type: ANT
465 branch-pattern: '**/{branch}'
468 name: '{project-name}-maven-release-{stream}'
469 id: github-maven-release
471 # yamllint disable-line rule:key-duplicates
472 <<: *lf_maven_release
476 url: '{git-url}/{github-org}/{project}'
479 - lf-infra-github-scm:
480 url: '{git-clone-url}{github-org}/{project}'
481 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
483 submodule-recursive: '{submodule-recursive}'
484 choosing-strategy: default
485 jenkins-ssh-credential: '{jenkins-ssh-credential}'
488 - timed: '{obj:cron}'
489 - lf-infra-github-pr-trigger:
490 trigger-phrase: '^build release$'
491 only-trigger-phrase: true
492 status-context: 'Maven Release'
498 github_pr_admin_list:
505 - lf_maven_sonar: &lf_maven_sonar
508 ######################
509 # Default parameters #
510 ######################
512 branch: master # Sonar should always be run on master branch
513 build-days-to-keep: 7
515 git-url: '$GIT_URL/$PROJECT'
516 java-version: openjdk8
517 mvn-global-settings: global-settings
521 staging-profile-id: '' # Unused in this job
523 submodule-recursive: true
525 gerrit_sonar_triggers:
526 - comment-added-contains-event:
527 comment-contains-value: run-sonar$
529 #####################
530 # Job Configuration #
531 #####################
536 server-name: '{gerrit-server-name}'
537 trigger-on: '{obj:gerrit_sonar_triggers}'
539 - project-compare-type: 'ANT'
540 project-pattern: '{project}'
542 - branch-compare-type: 'ANT'
543 branch-pattern: '**/master'
551 - lf-infra-maven-sonar:
552 mvn-settings: '{mvn-settings}'
553 mvn-version: '{mvn-version}'
561 name: lf-infra-maven-sonar
562 # Run a Sonar build with Maven
565 mvn-version: '{mvn-version}'
567 # Switch this to the sonar wrapper when JJB 2.0 is available
568 properties-content: |
569 SONAR_HOST_URL=$SONAR_URL
570 SONAR_MAVEN_GOAL=sonar:sonar
571 - lf-provide-maven-settings:
572 global-settings-file: global-settings
573 settings-file: '{mvn-settings}'
574 - shell: !include-raw-escape:
575 - ../shell/common-variables.sh
576 - ../shell/maven-sonar.sh
577 - lf-provide-maven-settings-cleanup
580 name: '{project-name}-sonar'
581 id: gerrit-maven-sonar
583 # yamllint disable-line rule:key-duplicates
587 - lf-infra-gerrit-scm:
588 jenkins-ssh-credential: '{jenkins-ssh-credential}'
590 refspec: $GERRIT_REFSPEC
591 branch: $GERRIT_BRANCH
592 submodule-recursive: '{submodule-recursive}'
593 choosing-strategy: default
596 name: '{project-name}-sonar'
597 id: github-maven-sonar
599 # yamllint disable-line rule:key-duplicates
604 url: '{git-url}/{github-org}/{project}'
607 - lf-infra-github-scm:
608 url: '{git-clone-url}{github-org}/{project}'
609 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
611 submodule-recursive: '{submodule-recursive}'
612 choosing-strategy: default
613 jenkins-ssh-credential: '{jenkins-ssh-credential}'
616 - lf-infra-github-pr-trigger:
617 trigger-phrase: '^recheck$'
618 only-trigger-phrase: false
619 status-context: 'Maven Verify'
625 github_pr_admin_list:
632 - lf_maven_verify: &lf_maven_verify
633 name: lf-maven-verify
635 ######################
636 # Default parameters #
637 ######################
640 build-days-to-keep: 7
642 git-url: '$GIT_URL/$PROJECT'
643 java-version: openjdk8
644 mvn-global-settings: global-settings
646 mvn-params: '-Dstream=$STREAM'
648 staging-profile-id: '' # Unused in this job
650 submodule-recursive: true
652 gerrit_verify_triggers:
653 - patchset-created-event:
655 exclude-trivial-rebase: false
656 exclude-no-code-change: false
657 - draft-published-event
658 - comment-added-contains-event:
659 comment-contains-value: recheck$
660 gerrit_trigger_file_paths:
664 #####################
665 # Job Configuration #
666 #####################
671 - lf-jacoco-nojava-workaround
673 mvn-version: '{mvn-version}'
674 - lf-provide-maven-settings:
675 global-settings-file: '{mvn-global-settings}'
676 settings-file: '{mvn-settings}'
677 - shell: !include-raw-escape:
678 - ../shell/lftools-install.sh
679 - ../shell/common-variables.sh
680 - ../shell/maven-build.sh
681 - lf-provide-maven-settings-cleanup
689 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
690 id: gerrit-maven-verify
692 # yamllint disable-line rule:key-duplicates
696 - lf-infra-gerrit-scm:
697 jenkins-ssh-credential: '{jenkins-ssh-credential}'
699 refspec: '$GERRIT_REFSPEC'
700 branch: '$GERRIT_BRANCH'
701 submodule-recursive: '{submodule-recursive}'
702 choosing-strategy: gerrit
706 server-name: '{gerrit-server-name}'
707 trigger-on: '{obj:gerrit_verify_triggers}'
709 - project-compare-type: ANT
710 project-pattern: '{project}'
712 - branch-compare-type: ANT
713 branch-pattern: '**/{branch}'
714 file-paths: '{obj:gerrit_trigger_file_paths}'
717 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
718 id: github-maven-verify
720 # yamllint disable-line rule:key-duplicates
725 url: '{git-url}/{github-org}/{project}'
728 - lf-infra-github-scm:
729 url: '{git-clone-url}{github-org}/{project}'
730 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
732 submodule-recursive: '{submodule-recursive}'
733 choosing-strategy: default
734 jenkins-ssh-credential: '{jenkins-ssh-credential}'
737 - lf-infra-github-pr-trigger:
738 trigger-phrase: '^recheck$'
739 only-trigger-phrase: false
740 status-context: 'Maven Verify'
746 github_pr_admin_list:
749 #############################
750 # Maven Verify Dependencies #
751 #############################
753 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
754 name: lf-maven-verify-dependencies
756 ######################
757 # Default parameters #
758 ######################
761 build-days-to-keep: 7
763 git-url: '$GIT_URL/$PROJECT'
764 java-version: openjdk8
765 mvn-global-settings: global-settings
767 mvn-params: '-Dstream=$STREAM'
769 staging-profile-id: '' # Unused by this job
771 submodule-recursive: true
773 gerrit_verify_triggers:
774 - comment-added-contains-event:
775 comment-contains-value: 'recheck: [0-9 ]+'
776 gerrit_trigger_file_paths:
780 #####################
781 # Job Configuration #
782 #####################
787 - lf-jacoco-nojava-workaround
789 mvn-version: '{mvn-version}'
790 - lf-provide-maven-settings:
791 global-settings-file: '{mvn-global-settings}'
792 settings-file: '{mvn-settings}'
793 - lf-fetch-dependent-patches
794 - shell: !include-raw-escape:
795 - ../shell/common-variables.sh
796 - ../shell/maven-build-deps.sh
797 - shell: !include-raw-escape:
798 - ../shell/common-variables.sh
799 - ../shell/maven-build.sh
800 - lf-provide-maven-settings-cleanup
808 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
809 id: gerrit-maven-verify-dependencies
811 # yamllint disable-line rule:key-duplicates
812 <<: *lf_maven_verify_dependencies
815 - lf-infra-gerrit-scm:
816 jenkins-ssh-credential: '{jenkins-ssh-credential}'
818 refspec: '$GERRIT_REFSPEC'
819 branch: '$GERRIT_BRANCH'
820 submodule-recursive: '{submodule-recursive}'
821 choosing-strategy: gerrit
825 server-name: '{gerrit-server-name}'
826 trigger-on: '{obj:gerrit_verify_triggers}'
828 - project-compare-type: ANT
829 project-pattern: '{project}'
831 - branch-compare-type: ANT
832 branch-pattern: '**/{branch}'
833 file-paths: '{obj:gerrit_trigger_file_paths}'