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 #####################
323 mvn-version: '{mvn-version}'
324 - lf-provide-maven-settings:
325 global-settings-file: '{mvn-global-settings}'
326 settings-file: '{mvn-settings}'
327 - shell: !include-raw-escape:
328 - ../shell/common-variables.sh
329 - ../shell/maven-javadoc-generate.sh
330 - lf-provide-maven-settings-cleanup
333 name: '{project-name}-maven-javadoc-verify-{stream}'
334 id: gerrit-maven-javadoc-verify
336 # yamllint disable-line rule:key-duplicates
337 <<: *lf_maven_javadoc_verify
340 - lf-infra-gerrit-scm:
341 jenkins-ssh-credential: '{jenkins-ssh-credential}'
343 refspec: '$GERRIT_REFSPEC'
344 branch: '$GERRIT_BRANCH'
345 submodule-recursive: '{submodule-recursive}'
346 choosing-strategy: gerrit
350 server-name: '{gerrit-server-name}'
351 trigger-on: '{obj:gerrit_verify_triggers}'
353 - project-compare-type: ANT
354 project-pattern: '{project}'
356 - branch-compare-type: ANT
357 branch-pattern: '**/{branch}'
360 name: '{project-name}-maven-javadoc-verify-{stream}'
361 id: github-maven-javadoc-verify
363 # yamllint disable-line rule:key-duplicates
364 <<: *lf_maven_javadoc_verify
368 url: '{git-url}/{github-org}/{project}'
371 - lf-infra-github-scm:
372 url: '{git-clone-url}{github-org}/{project}'
373 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
375 submodule-recursive: '{submodule-recursive}'
376 choosing-strategy: default
377 jenkins-ssh-credential: '{jenkins-ssh-credential}'
380 - lf-infra-github-pr-trigger:
381 trigger-phrase: '^recheck$'
382 only-trigger-phrase: true
383 status-context: 'Maven Javadoc'
389 github_pr_admin_list:
396 - lf_maven_release: &lf_maven_release
397 name: lf-maven-release
399 ######################
400 # Default parameters #
401 ######################
404 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
407 git-url: '$GIT_URL/$PROJECT'
408 java-version: openjdk8
409 mvn-global-settings: global-settings
414 submodule-recursive: true
416 gerrit_release_triggers:
417 - comment-added-contains-event:
418 comment-contains-value: build release$
420 #####################
421 # Job Configuration #
422 #####################
425 - lf-jacoco-nojava-workaround
427 mvn-version: '{mvn-version}'
428 - lf-provide-maven-settings:
429 global-settings-file: '{mvn-global-settings}'
430 settings-file: '{mvn-settings}'
431 - lf-infra-create-netrc:
432 server-id: '{mvn-staging-id}'
433 - shell: !include-raw-escape:
434 - ../shell/lftools-install.sh
435 - ../shell/common-variables.sh
436 - ../shell/maven-patch-release.sh
437 - ../shell/maven-build.sh
438 - ../shell/maven-stage.sh
439 - lf-provide-maven-settings-cleanup
442 name: '{project-name}-maven-release-{stream}'
443 id: gerrit-maven-release
445 # yamllint disable-line rule:key-duplicates
446 <<: *lf_maven_release
449 - lf-infra-gerrit-scm:
450 jenkins-ssh-credential: '{jenkins-ssh-credential}'
452 refspec: '$GERRIT_REFSPEC'
453 branch: '$GERRIT_BRANCH'
454 submodule-recursive: '{submodule-recursive}'
455 choosing-strategy: default
458 - timed: '{obj:cron}'
460 server-name: '{gerrit-server-name}'
461 trigger-on: '{obj:gerrit_release_triggers}'
463 - project-compare-type: ANT
464 project-pattern: '{project}'
466 - branch-compare-type: ANT
467 branch-pattern: '**/{branch}'
470 name: '{project-name}-maven-release-{stream}'
471 id: github-maven-release
473 # yamllint disable-line rule:key-duplicates
474 <<: *lf_maven_release
478 url: '{git-url}/{github-org}/{project}'
481 - lf-infra-github-scm:
482 url: '{git-clone-url}{github-org}/{project}'
483 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
485 submodule-recursive: '{submodule-recursive}'
486 choosing-strategy: default
487 jenkins-ssh-credential: '{jenkins-ssh-credential}'
490 - timed: '{obj:cron}'
491 - lf-infra-github-pr-trigger:
492 trigger-phrase: '^build release$'
493 only-trigger-phrase: true
494 status-context: 'Maven Release'
500 github_pr_admin_list:
507 - lf_maven_sonar: &lf_maven_sonar
510 ######################
511 # Default parameters #
512 ######################
514 branch: master # Sonar should always be run on master branch
515 build-days-to-keep: 7
517 git-url: '$GIT_URL/$PROJECT'
518 java-version: openjdk8
519 mvn-global-settings: global-settings
523 staging-profile-id: '' # Unused in this job
525 submodule-recursive: true
527 gerrit_sonar_triggers:
528 - comment-added-contains-event:
529 comment-contains-value: run-sonar$
531 #####################
532 # Job Configuration #
533 #####################
538 server-name: '{gerrit-server-name}'
539 trigger-on: '{obj:gerrit_sonar_triggers}'
541 - project-compare-type: 'ANT'
542 project-pattern: '{project}'
544 - branch-compare-type: 'ANT'
545 branch-pattern: '**/master'
553 - lf-infra-maven-sonar:
554 mvn-settings: '{mvn-settings}'
555 mvn-version: '{mvn-version}'
563 name: lf-infra-maven-sonar
564 # Run a Sonar build with Maven
567 mvn-version: '{mvn-version}'
569 # Switch this to the sonar wrapper when JJB 2.0 is available
570 properties-content: |
571 SONAR_HOST_URL=$SONAR_URL
572 SONAR_MAVEN_GOAL=sonar:sonar
573 - lf-provide-maven-settings:
574 global-settings-file: global-settings
575 settings-file: '{mvn-settings}'
576 - shell: !include-raw-escape:
577 - ../shell/common-variables.sh
578 - ../shell/maven-sonar.sh
579 - lf-provide-maven-settings-cleanup
582 name: '{project-name}-sonar'
583 id: gerrit-maven-sonar
585 # yamllint disable-line rule:key-duplicates
589 - lf-infra-gerrit-scm:
590 jenkins-ssh-credential: '{jenkins-ssh-credential}'
592 refspec: $GERRIT_REFSPEC
593 branch: $GERRIT_BRANCH
594 submodule-recursive: '{submodule-recursive}'
595 choosing-strategy: default
598 name: '{project-name}-sonar'
599 id: github-maven-sonar
601 # yamllint disable-line rule:key-duplicates
606 url: '{git-url}/{github-org}/{project}'
609 - lf-infra-github-scm:
610 url: '{git-clone-url}{github-org}/{project}'
611 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
613 submodule-recursive: '{submodule-recursive}'
614 choosing-strategy: default
615 jenkins-ssh-credential: '{jenkins-ssh-credential}'
618 - lf-infra-github-pr-trigger:
619 trigger-phrase: '^recheck$'
620 only-trigger-phrase: false
621 status-context: 'Maven Verify'
627 github_pr_admin_list:
634 - lf_maven_verify: &lf_maven_verify
635 name: lf-maven-verify
637 ######################
638 # Default parameters #
639 ######################
642 build-days-to-keep: 7
644 git-url: '$GIT_URL/$PROJECT'
645 java-version: openjdk8
646 mvn-global-settings: global-settings
648 mvn-params: '-Dstream=$STREAM'
650 staging-profile-id: '' # Unused in this job
652 submodule-recursive: true
654 gerrit_verify_triggers:
655 - patchset-created-event:
657 exclude-trivial-rebase: false
658 exclude-no-code-change: false
659 - draft-published-event
660 - comment-added-contains-event:
661 comment-contains-value: recheck$
662 gerrit_trigger_file_paths:
666 #####################
667 # Job Configuration #
668 #####################
673 - lf-jacoco-nojava-workaround
675 mvn-version: '{mvn-version}'
676 - lf-provide-maven-settings:
677 global-settings-file: '{mvn-global-settings}'
678 settings-file: '{mvn-settings}'
679 - shell: !include-raw-escape:
680 - ../shell/lftools-install.sh
681 - ../shell/common-variables.sh
682 - ../shell/maven-build.sh
683 - lf-provide-maven-settings-cleanup
691 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
692 id: gerrit-maven-verify
694 # yamllint disable-line rule:key-duplicates
698 - lf-infra-gerrit-scm:
699 jenkins-ssh-credential: '{jenkins-ssh-credential}'
701 refspec: '$GERRIT_REFSPEC'
702 branch: '$GERRIT_BRANCH'
703 submodule-recursive: '{submodule-recursive}'
704 choosing-strategy: gerrit
708 server-name: '{gerrit-server-name}'
709 trigger-on: '{obj:gerrit_verify_triggers}'
711 - project-compare-type: ANT
712 project-pattern: '{project}'
714 - branch-compare-type: ANT
715 branch-pattern: '**/{branch}'
716 file-paths: '{obj:gerrit_trigger_file_paths}'
719 name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
720 id: github-maven-verify
722 # yamllint disable-line rule:key-duplicates
727 url: '{git-url}/{github-org}/{project}'
730 - lf-infra-github-scm:
731 url: '{git-clone-url}{github-org}/{project}'
732 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
734 submodule-recursive: '{submodule-recursive}'
735 choosing-strategy: default
736 jenkins-ssh-credential: '{jenkins-ssh-credential}'
739 - lf-infra-github-pr-trigger:
740 trigger-phrase: '^recheck$'
741 only-trigger-phrase: false
742 status-context: 'Maven Verify'
748 github_pr_admin_list:
751 #############################
752 # Maven Verify Dependencies #
753 #############################
755 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
756 name: lf-maven-verify-dependencies
758 ######################
759 # Default parameters #
760 ######################
763 build-days-to-keep: 7
765 git-url: '$GIT_URL/$PROJECT'
766 java-version: openjdk8
767 mvn-global-settings: global-settings
769 mvn-params: '-Dstream=$STREAM'
771 staging-profile-id: '' # Unused by this job
773 submodule-recursive: true
775 gerrit_verify_triggers:
776 - comment-added-contains-event:
777 comment-contains-value: 'recheck: [0-9 ]+'
778 gerrit_trigger_file_paths:
782 #####################
783 # Job Configuration #
784 #####################
789 - lf-jacoco-nojava-workaround
791 mvn-version: '{mvn-version}'
792 - lf-provide-maven-settings:
793 global-settings-file: '{mvn-global-settings}'
794 settings-file: '{mvn-settings}'
795 - lf-fetch-dependent-patches
796 - shell: !include-raw-escape:
797 - ../shell/common-variables.sh
798 - ../shell/maven-build-deps.sh
799 - shell: !include-raw-escape:
800 - ../shell/common-variables.sh
801 - ../shell/maven-build.sh
802 - lf-provide-maven-settings-cleanup
810 name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
811 id: gerrit-maven-verify-dependencies
813 # yamllint disable-line rule:key-duplicates
814 <<: *lf_maven_verify_dependencies
817 - lf-infra-gerrit-scm:
818 jenkins-ssh-credential: '{jenkins-ssh-credential}'
820 refspec: '$GERRIT_REFSPEC'
821 branch: '$GERRIT_BRANCH'
822 submodule-recursive: '{submodule-recursive}'
823 choosing-strategy: gerrit
827 server-name: '{gerrit-server-name}'
828 trigger-on: '{obj:gerrit_verify_triggers}'
830 - project-compare-type: ANT
831 project-pattern: '{project}'
833 - branch-compare-type: ANT
834 branch-pattern: '**/{branch}'
835 file-paths: '{obj:gerrit_trigger_file_paths}'