Add job to automatically announce lf releases
[releng/global-jjb.git] / jjb / lf-maven-jobs.yaml
1 ---
2 # This file contains job templates for Maven projects.
3
4 ##########
5 # Macros #
6 ##########
7
8 - builder:
9     name: lf-maven-build
10     builders:
11       - inject:
12           properties-content: 'MAVEN_GOALS={mvn-goals}'
13       - shell: !include-raw-escape:
14           - ../shell/common-variables.sh
15           - ../shell/maven-build.sh
16
17 - builder:
18     name: lf-maven-deploy
19     builders:
20       - shell: !include-raw:
21           - ../shell/common-variables.sh
22           - ../shell/maven-deploy.sh
23
24 - builder:
25     name: lf-maven-stage
26     builders:
27       # include-raw-escape fails due to JJB bug
28       - shell: !include-raw:
29           - ../shell/common-variables.sh
30           - ../shell/maven-stage.sh
31
32 - builder:
33     name: lf-update-java-alternatives
34     builders:
35       - inject:
36           # Work around inject plugin overriding our GIT_URL variable incorrectly
37           # https://issues.jenkins-ci.org/browse/JENKINS-49775
38           properties-content: |
39             SET_JDK_VERSION={java-version}
40             GIT_URL="$GIT_URL"
41       - shell: !include-raw-escape: ../shell/update-java-alternatives.sh
42       - inject:
43           properties-file: '/tmp/java.env'
44
45 ####################
46 # COMMON FUNCTIONS #
47 ####################
48
49 - lf_maven_common: &lf_maven_common
50     name: lf-maven-common
51
52     ######################
53     # Default parameters #
54     ######################
55
56     archive-artifacts: >
57       **/*.log
58       **/hs_err_*.log
59       **/target/**/feature.xml
60       **/target/failsafe-reports/failsafe-summary.xml
61       **/target/surefire-reports/*-output.txt
62
63     #####################
64     # Job Configuration #
65     #####################
66
67     project-type: freestyle
68     node: '{build-node}'
69
70     properties:
71       - lf-infra-properties:
72           build-days-to-keep: '{build-days-to-keep}'
73
74     parameters:
75       - lf-infra-parameters:
76           project: '{project}'
77           branch: '{branch}'
78           stream: '{stream}'
79       - lf-infra-maven-parameters:
80           mvn-opts: '{mvn-opts}'
81           mvn-params: '{mvn-params}'
82           mvn-version: '{mvn-version}'
83       - string:
84           name: ARCHIVE_ARTIFACTS
85           default: '{archive-artifacts}'
86           description: Artifacts to archive to the logs server.
87
88     wrappers:
89       - lf-infra-wrappers:
90           build-timeout: '{build-timeout}'
91           jenkins-ssh-credential: '{jenkins-ssh-credential}'
92
93     publishers:
94       # TODO: Make email notification work.
95       # - lf-infra-email-notify:
96       #     email-recipients: '{email-recipients}'
97       #     email-prefix: '[releng]'
98       - lf-infra-publish
99
100 #############
101 # Maven CLM #
102 #############
103
104 - lf_maven_clm: &lf_maven_clm
105     name: lf-maven-clm
106
107     ######################
108     # Default parameters #
109     ######################
110
111     branch: master
112     build-days-to-keep: 30  # 30 days for troubleshooting purposes
113     build-timeout: 60
114     disable-job: false
115     git-url: '$GIT_URL/$PROJECT'
116     github-url: 'https://github.com'
117     java-version: openjdk8
118     mvn-global-settings: global-settings
119     mvn-opts: ''
120     mvn-params: ''
121     mvn-version: mvn35
122     nexus-iq-namespace: ''  # Recommend a trailing dash when set. Example: odl-
123     nexus-iq-stage: 'build'
124     stream: master
125     submodule-recursive: true
126     submodule-timeout: 10
127
128     nexus_iq_scan_patterns:
129       - '**/*.ear'
130       - '**/*.jar'
131       - '**/*.tar.gz'
132       - '**/*.war'
133       - '**/*.zip'
134
135     gerrit_clm_triggers:
136       - comment-added-contains-event:
137           comment-contains-value: run-clm$
138
139     parameters:
140       - lf-infra-parameters:
141           project: '{project}'
142           branch: '{branch}'
143           stream: '{stream}'
144       - lf-infra-maven-parameters:
145           mvn-opts: '{mvn-opts}'
146           mvn-params: '{mvn-params}'
147           mvn-version: '{mvn-version}'
148       - string:
149           name: ARCHIVE_ARTIFACTS
150           default: '{archive-artifacts}'
151           description: Artifacts to archive to the logs server.
152       - lf-clm-parameters:
153           nexus-iq-stage: '{nexus-iq-stage}'
154
155     #####################
156     # Job Configuration #
157     #####################
158
159     disabled: '{disable-job}'
160
161     builders:
162       - lf-infra-pre-build
163       - lf-maven-install:
164           mvn-version: '{mvn-version}'
165       - lf-update-java-alternatives:
166           java-version: '{java-version}'
167       - lf-provide-maven-settings:
168           global-settings-file: '{mvn-global-settings}'
169           settings-file: '{mvn-settings}'
170       - shell: !include-raw-escape:
171           - ../shell/common-variables.sh
172           - ../shell/sonatype-clm.sh
173       - lf-provide-maven-settings-cleanup
174       - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
175       - nexus-iq-policy-evaluator:
176           stage: '{nexus-iq-stage}'
177           application-type: 'manual'
178           application-id: '{nexus-iq-namespace}{project-name}'
179           scan-patterns: '{obj:nexus_iq_scan_patterns}'
180           fail-build-network-error: true
181
182 - job-template:
183     name: '{project-name}-maven-clm-{stream}'
184     id: gerrit-maven-clm
185     <<: *lf_maven_common
186     # yamllint disable-line rule:key-duplicates
187     <<: *lf_maven_clm
188
189     scm:
190       - lf-infra-gerrit-scm:
191           jenkins-ssh-credential: '{jenkins-ssh-credential}'
192           git-url: '{git-url}'
193           refspec: '$GERRIT_REFSPEC'
194           branch: '$GERRIT_BRANCH'
195           submodule-recursive: '{submodule-recursive}'
196           submodule-timeout: '{submodule-timeout}'
197           choosing-strategy: default
198
199     triggers:
200       # Build weekly on Saturdays
201       - timed: 'H H * * 6'
202       - gerrit:
203           server-name: '{gerrit-server-name}'
204           trigger-on: '{obj:gerrit_clm_triggers}'
205           projects:
206             - project-compare-type: ANT
207               project-pattern: '{project}'
208               branches:
209                 - branch-compare-type: ANT
210                   branch-pattern: '**/{branch}'
211           skip-vote:
212             successful: true
213             failed: true
214             unstable: true
215             notbuilt: true
216
217 - job-template:
218     name: '{project-name}-maven-clm-{stream}'
219     id: github-maven-clm
220     <<: *lf_maven_common
221     # yamllint disable-line rule:key-duplicates
222     <<: *lf_maven_clm
223
224     properties:
225       - lf-infra-properties:
226           build-days-to-keep: '{build-days-to-keep}'
227       - github:
228           url: '{github-url}/{github-org}/{project}'
229
230     scm:
231       - lf-infra-github-scm:
232           url: '{git-clone-url}{github-org}/{project}'
233           refspec: ''
234           branch: 'refs/heads/{branch}'
235           submodule-recursive: '{submodule-recursive}'
236           submodule-timeout: '{submodule-timeout}'
237           choosing-strategy: default
238           jenkins-ssh-credential: '{jenkins-ssh-credential}'
239
240     triggers:
241       # Build weekly on Saturdays
242       - timed: 'H H * * 6'
243       - github-pull-request:
244           trigger-phrase: '^run-clm$'
245           only-trigger-phrase: true
246           status-context: 'CLM'
247           permit-all: true
248           github-hooks: true
249           org-list:
250             - '{github-org}'
251           white-list: '{obj:github_pr_whitelist}'
252           admin-list: '{obj:github_pr_admin_list}'
253           white-list-target-branches:
254             - '{branch}'
255
256 #########################
257 # Maven Javadoc Publish #
258 #########################
259
260 - lf_maven_javadoc_publish: &lf_maven_javadoc_publish
261     name: lf-maven-javadoc-publish
262
263     ######################
264     # Default parameters #
265     ######################
266
267     branch: master
268     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
269     build-timeout: 60
270     disable-job: false
271     git-url: '$GIT_URL/$PROJECT'
272     github-url: 'https://github.com'
273     java-version: openjdk8
274     mvn-global-settings: global-settings
275     mvn-opts: ''
276     mvn-params: ''
277     mvn-version: mvn35
278     stream: master
279     submodule-recursive: true
280     submodule-timeout: 10
281
282     gerrit_merge_triggers:
283       - change-merged-event
284       - comment-added-contains-event:
285           comment-contains-value: remerge$
286
287     #####################
288     # Job Configuration #
289     #####################
290
291     disabled: '{disable-job}'
292
293     builders:
294       - lf-infra-pre-build
295       - lf-maven-install:
296           mvn-version: '{mvn-version}'
297       - lf-update-java-alternatives:
298           java-version: '{java-version}'
299       - lf-provide-maven-settings:
300           global-settings-file: '{mvn-global-settings}'
301           settings-file: '{mvn-settings}'
302       - lf-infra-create-netrc:
303           server-id: '{mvn-site-id}'
304       - inject:
305           properties-content: 'DEPLOY_PATH={javadoc-path}'
306       - shell: !include-raw-escape:
307           - ../shell/common-variables.sh
308           - ../shell/maven-javadoc-generate.sh
309           - ../shell/maven-javadoc-publish.sh
310       - lf-provide-maven-settings-cleanup
311
312 - job-template:
313     name: '{project-name}-maven-javadoc-publish-{stream}-{java-version}'
314     id: gerrit-maven-javadoc-publish
315     <<: *lf_maven_common
316     # yamllint disable-line rule:key-duplicates
317     <<: *lf_maven_javadoc_publish
318
319     git-url: '$GIT_URL/$GERRIT_PROJECT'
320
321     scm:
322       - lf-infra-gerrit-scm:
323           git-url: '{git-url}'
324           refspec: ''
325           branch: '{branch}'
326           submodule-recursive: '{submodule-recursive}'
327           submodule-timeout: '{submodule-timeout}'
328           choosing-strategy: default
329           jenkins-ssh-credential: '{jenkins-ssh-credential}'
330
331     triggers:
332       - gerrit:
333           server-name: '{gerrit-server-name}'
334           trigger-on: '{obj:gerrit_merge_triggers}'
335           projects:
336             - project-compare-type: ANT
337               project-pattern: '{project}'
338               branches:
339                 - branch-compare-type: ANT
340                   branch-pattern: '**/{branch}'
341
342 - job-template:
343     name: '{project-name}-maven-javadoc-publish-{stream}-{java-version}'
344     id: github-maven-javadoc-publish
345     <<: *lf_maven_common
346     # yamllint disable-line rule:key-duplicates
347     <<: *lf_maven_javadoc_publish
348
349     properties:
350       - lf-infra-properties:
351           build-days-to-keep: '{build-days-to-keep}'
352       - github:
353           url: '{github-url}/{github-org}/{project}'
354
355     scm:
356       - lf-infra-github-scm:
357           url: '{git-clone-url}{github-org}/{project}'
358           refspec: ''
359           branch: '{branch}'
360           submodule-recursive: '{submodule-recursive}'
361           submodule-timeout: '{submodule-timeout}'
362           choosing-strategy: default
363           jenkins-ssh-credential: '{jenkins-ssh-credential}'
364
365     triggers:
366       - github
367       - pollscm:
368           cron: ''
369       - github-pull-request:
370           trigger-phrase: '^remerge$'
371           only-trigger-phrase: true
372           status-context: 'Maven Javadoc Publish'
373           permit-all: true
374           github-hooks: true
375           org-list:
376             - '{github-org}'
377           white-list: '{obj:github_pr_whitelist}'
378           admin-list: '{obj:github_pr_admin_list}'
379           white-list-target-branches:
380             - '{branch}'
381
382 ########################
383 # Maven Javadoc Verify #
384 ########################
385
386 - lf_maven_javadoc_verify: &lf_maven_javadoc_verify
387     name: lf-maven-javadoc-verify
388
389     ######################
390     # Default parameters #
391     ######################
392
393     branch: master
394     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
395     build-timeout: 60
396     disable-job: false
397     git-url: '$GIT_URL/$PROJECT'
398     github-url: 'https://github.com'
399     java-version: openjdk8
400     mvn-global-settings: global-settings
401     mvn-opts: ''
402     mvn-params: ''
403     mvn-version: mvn35
404     stream: master
405     submodule-recursive: true
406     submodule-timeout: 10
407
408     gerrit_verify_triggers:
409       - patchset-created-event:
410           exclude-drafts: true
411           exclude-trivial-rebase: false
412           exclude-no-code-change: false
413       - draft-published-event
414       - comment-added-contains-event:
415           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
416
417     #####################
418     # Job Configuration #
419     #####################
420
421     concurrent: true
422     disabled: '{disable-job}'
423
424     builders:
425       - lf-infra-pre-build
426       - lf-maven-install:
427           mvn-version: '{mvn-version}'
428       - lf-update-java-alternatives:
429           java-version: '{java-version}'
430       - lf-provide-maven-settings:
431           global-settings-file: '{mvn-global-settings}'
432           settings-file: '{mvn-settings}'
433       - shell: !include-raw-escape:
434           - ../shell/common-variables.sh
435           - ../shell/maven-javadoc-generate.sh
436       - lf-provide-maven-settings-cleanup
437
438 - job-template:
439     name: '{project-name}-maven-javadoc-verify-{stream}-{java-version}'
440     id: gerrit-maven-javadoc-verify
441     <<: *lf_maven_common
442     # yamllint disable-line rule:key-duplicates
443     <<: *lf_maven_javadoc_verify
444
445     scm:
446       - lf-infra-gerrit-scm:
447           jenkins-ssh-credential: '{jenkins-ssh-credential}'
448           git-url: '{git-url}'
449           refspec: '$GERRIT_REFSPEC'
450           branch: '$GERRIT_BRANCH'
451           submodule-recursive: '{submodule-recursive}'
452           submodule-timeout: '{submodule-timeout}'
453           choosing-strategy: gerrit
454
455     triggers:
456       - gerrit:
457           server-name: '{gerrit-server-name}'
458           trigger-on: '{obj:gerrit_verify_triggers}'
459           projects:
460             - project-compare-type: ANT
461               project-pattern: '{project}'
462               branches:
463                 - branch-compare-type: ANT
464                   branch-pattern: '**/{branch}'
465
466 - job-template:
467     name: '{project-name}-maven-javadoc-verify-{stream}-{java-version}'
468     id: github-maven-javadoc-verify
469     <<: *lf_maven_common
470     # yamllint disable-line rule:key-duplicates
471     <<: *lf_maven_javadoc_verify
472
473     properties:
474       - lf-infra-properties:
475           build-days-to-keep: '{build-days-to-keep}'
476       - github:
477           url: '{github-url}/{github-org}/{project}'
478
479     scm:
480       - lf-infra-github-scm:
481           url: '{git-clone-url}{github-org}/{project}'
482           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
483           branch: '$sha1'
484           submodule-recursive: '{submodule-recursive}'
485           submodule-timeout: '{submodule-timeout}'
486           choosing-strategy: default
487           jenkins-ssh-credential: '{jenkins-ssh-credential}'
488
489     triggers:
490       - github-pull-request:
491           trigger-phrase: ^(recheck|reverify)$
492           only-trigger-phrase: false
493           status-context: 'Maven Javadoc Verify'
494           permit-all: true
495           github-hooks: true
496           white-list-target-branches:
497             - '{branch}'
498
499 ###############
500 # Maven Merge #
501 ###############
502
503 - lf_maven_merge: &lf_maven_merge
504     name: lf-maven-merge
505
506     ######################
507     # Default parameters #
508     ######################
509
510     branch: master
511     build-days-to-keep: 30  # 30 days in case we need to troubleshoot
512     build-timeout: 60
513     cron: '@daily'
514     disable-job: false
515     git-url: '$GIT_URL/$PROJECT'
516     github-url: 'https://github.com'
517     java-version: openjdk8
518     mvn-global-settings: global-settings
519     mvn-goals: clean deploy
520     mvn-opts: ''
521     mvn-params: '-Dmerge'
522     mvn-version: mvn35
523     nexus-cut-dirs: 6  # Number of dirs in the Nexus path to remove for wget -r.
524     stream: master
525     submodule-recursive: true
526     submodule-timeout: 10
527
528     gerrit_merge_triggers:
529       - change-merged-event
530       - comment-added-contains-event:
531           comment-contains-value: remerge$
532
533     gerrit_trigger_file_paths:
534       - compare-type: REG_EXP
535         pattern: '.*'
536
537     # github_included_regions MUST match gerrit_trigger_file_paths
538     github_included_regions:
539       - '.*'
540
541     post_build_trigger: ''
542
543     #####################
544     # Job Configuration #
545     #####################
546
547     disabled: '{disable-job}'
548
549     builders:
550       - lf-infra-pre-build
551       - lf-jacoco-nojava-workaround
552       - lf-maven-install:
553           mvn-version: '{mvn-version}'
554       - lf-update-java-alternatives:
555           java-version: '{java-version}'
556       - lf-provide-maven-settings:
557           global-settings-file: '{mvn-global-settings}'
558           settings-file: '{mvn-settings}'
559       - lf-infra-create-netrc:
560           server-id: '{mvn-snapshot-id}'
561       - inject:
562           properties-content: |
563               NEXUS_CUT_DIRS={nexus-cut-dirs}
564               NEXUS_REPO={nexus-snapshot-repo}
565       - shell: !include-raw-escape: ../shell/maven-fetch-metadata.sh
566       - lf-maven-build:
567           mvn-goals: '{mvn-goals}'
568       - lf-maven-deploy
569       - lf-provide-maven-settings-cleanup
570
571     publishers:
572       - findbugs
573       - lf-jacoco-report
574       - lf-infra-publish
575       - trigger-parameterized-builds: '{obj:post_build_trigger}'
576
577 - job-template:
578     name: '{project-name}-maven-merge-{stream}'
579     id: gerrit-maven-merge
580     <<: *lf_maven_common
581     # yamllint disable-line rule:key-duplicates
582     <<: *lf_maven_merge
583
584     scm:
585       - lf-infra-gerrit-scm:
586           jenkins-ssh-credential: '{jenkins-ssh-credential}'
587           git-url: '{git-url}'
588           refspec: '$GERRIT_REFSPEC'
589           branch: '$GERRIT_BRANCH'
590           submodule-recursive: '{submodule-recursive}'
591           submodule-timeout: '{submodule-timeout}'
592           choosing-strategy: default
593
594     triggers:
595       - timed: '{obj:cron}'
596       - gerrit:
597           server-name: '{gerrit-server-name}'
598           trigger-on: '{obj:gerrit_merge_triggers}'
599           projects:
600             - project-compare-type: ANT
601               project-pattern: '{project}'
602               branches:
603                 - branch-compare-type: ANT
604                   branch-pattern: '**/{branch}'
605               file-paths: '{obj:gerrit_trigger_file_paths}'
606
607 - job-template:
608     name: '{project-name}-maven-merge-{stream}'
609     id: github-maven-merge
610     <<: *lf_maven_common
611     # yamllint disable-line rule:key-duplicates
612     <<: *lf_maven_merge
613
614     properties:
615       - lf-infra-properties:
616           build-days-to-keep: '{build-days-to-keep}'
617       - github:
618           url: '{github-url}/{github-org}/{project}'
619
620     scm:
621       - lf-infra-github-scm:
622           url: '{git-clone-url}{github-org}/{project}'
623           refspec: ''
624           branch: 'refs/heads/{branch}'
625           submodule-recursive: '{submodule-recursive}'
626           submodule-timeout: '{submodule-timeout}'
627           choosing-strategy: default
628           jenkins-ssh-credential: '{jenkins-ssh-credential}'
629
630     triggers:
631       - timed: '{obj:cron}'
632       - github
633       - pollscm:
634           cron: ''
635       - github-pull-request:
636           trigger-phrase: '^remerge$'
637           only-trigger-phrase: true
638           status-context: 'Maven Merge'
639           permit-all: true
640           github-hooks: true
641           org-list:
642             - '{github-org}'
643           white-list: '{obj:github_pr_whitelist}'
644           admin-list: '{obj:github_pr_admin_list}'
645           white-list-target-branches:
646             - '{branch}'
647           included-regions: '{obj:github_included_regions}'
648
649 ###############
650 # Maven Stage #
651 ###############
652
653 - lf_maven_stage: &lf_maven_stage
654     name: lf-maven-stage
655
656     ######################
657     # Default parameters #
658     ######################
659
660     branch: master
661     build-days-to-keep: 30  # 30 days in case a release takes long to get approved.
662     build-timeout: 60
663     cron: '@daily'
664     disable-job: false
665     git-url: '$GIT_URL/$PROJECT'
666     github-url: 'https://github.com'
667     java-version: openjdk8
668     mvn-central: false
669     mvn-global-settings: global-settings
670     mvn-goals: clean deploy
671     mvn-opts: ''
672     mvn-params: ''
673     mvn-version: mvn35
674     ossrh-profile-id: ''
675     sign-artifacts: false
676     stream: master
677     submodule-recursive: true
678     submodule-timeout: 10
679
680     gerrit_release_triggers:
681       - comment-added-contains-event:
682           comment-contains-value: stage-release$
683
684     #####################
685     # Job Configuration #
686     #####################
687
688     disabled: '{disable-job}'
689
690     parameters:
691       - lf-infra-parameters:
692           project: '{project}'
693           branch: '{branch}'
694           stream: '{stream}'
695       - lf-infra-maven-parameters:
696           mvn-opts: '{mvn-opts}'
697           mvn-params: '{mvn-params}'
698           mvn-version: '{mvn-version}'
699           staging-profile-id: '{staging-profile-id}'
700       - string:
701           name: ARCHIVE_ARTIFACTS
702           default: '{archive-artifacts}'
703           description: Artifacts to archive to the logs server.
704       - string:
705           name: STAGING_PROFILE_ID
706           default: '{staging-profile-id}'
707           description: Nexus staging profile ID.
708
709     builders:
710       - lf-infra-pre-build
711       - lf-jacoco-nojava-workaround
712       - lf-maven-install:
713           mvn-version: '{mvn-version}'
714       - lf-update-java-alternatives:
715           java-version: '{java-version}'
716       - lf-provide-maven-settings:
717           global-settings-file: '{mvn-global-settings}'
718           settings-file: '{mvn-settings}'
719       - lf-infra-create-netrc:
720           server-id: '{mvn-staging-id}'
721       - shell: !include-raw-escape: ../shell/maven-patch-release.sh
722       - lf-maven-build:
723           mvn-goals: '{mvn-goals}'
724       - lf-sigul-sign-dir:
725           sign-artifacts: '{sign-artifacts}'
726           sign-dir: '$WORKSPACE/m2repo'
727       - lf-maven-stage
728       - lf-maven-central:
729           mvn-central: '{mvn-central}'
730           ossrh-profile-id: '{ossrh-profile-id}'
731       - lf-provide-maven-settings-cleanup
732
733 - job-template:
734     name: '{project-name}-maven-stage-{stream}'
735     id: gerrit-maven-stage
736     <<: *lf_maven_common
737     # yamllint disable-line rule:key-duplicates
738     <<: *lf_maven_stage
739
740     scm:
741       - lf-infra-gerrit-scm:
742           jenkins-ssh-credential: '{jenkins-ssh-credential}'
743           git-url: '{git-url}'
744           refspec: '$GERRIT_REFSPEC'
745           branch: '$GERRIT_BRANCH'
746           submodule-recursive: '{submodule-recursive}'
747           submodule-timeout: '{submodule-timeout}'
748           choosing-strategy: default
749
750     triggers:
751       - timed: '{obj:cron}'
752       - gerrit:
753           server-name: '{gerrit-server-name}'
754           trigger-on: '{obj:gerrit_release_triggers}'
755           projects:
756             - project-compare-type: ANT
757               project-pattern: '{project}'
758               branches:
759                 - branch-compare-type: ANT
760                   branch-pattern: '**/{branch}'
761
762 - job-template:
763     name: '{project-name}-maven-stage-{stream}'
764     id: github-maven-stage
765     <<: *lf_maven_common
766     # yamllint disable-line rule:key-duplicates
767     <<: *lf_maven_stage
768
769     properties:
770       - lf-infra-properties:
771           build-days-to-keep: '{build-days-to-keep}'
772       - github:
773           url: '{github-url}/{github-org}/{project}'
774
775     scm:
776       - lf-infra-github-scm:
777           url: '{git-clone-url}{github-org}/{project}'
778           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
779           branch: '{branch}'
780           submodule-recursive: '{submodule-recursive}'
781           submodule-timeout: '{submodule-timeout}'
782           choosing-strategy: default
783           jenkins-ssh-credential: '{jenkins-ssh-credential}'
784
785     triggers:
786       - timed: '{obj:cron}'
787       - github-pull-request:
788           trigger-phrase: '^build release$'
789           only-trigger-phrase: true
790           status-context: 'Maven Release'
791           permit-all: true
792           github-hooks: true
793           white-list-target-branches:
794             - '{branch}'
795
796 ###############
797 # Maven Sonar #
798 ###############
799
800 - lf_maven_sonar: &lf_maven_sonar
801     name: lf-maven-sonar
802
803     ######################
804     # Default parameters #
805     ######################
806
807     branch: master  # Sonar should always be run on master branch
808     build-days-to-keep: 7
809     build-timeout: 60
810     cron: 'H H * * 6'  # run weekly
811     disable-job: false
812     git-url: '$GIT_URL/$PROJECT'
813     github-url: 'https://github.com'
814     java-version: openjdk8
815     mvn-global-settings: global-settings
816     mvn-opts: ''
817     mvn-params: ''
818     mvn-version: mvn35
819     sonar-mvn-goal: 'sonar:sonar'
820     stream: master
821     submodule-recursive: true
822     submodule-timeout: 10
823
824     gerrit_sonar_triggers:
825       - comment-added-contains-event:
826           comment-contains-value: run-sonar$
827
828     #####################
829     # Job Configuration #
830     #####################
831
832     disabled: '{disable-job}'
833
834     parameters:
835       - lf-infra-parameters:
836           project: '{project}'
837           branch: '{branch}'
838           stream: '{stream}'
839       - lf-infra-maven-parameters:
840           mvn-opts: '{mvn-opts}'
841           mvn-params: '{mvn-params}'
842           mvn-version: '{mvn-version}'
843       - string:
844           name: ARCHIVE_ARTIFACTS
845           default: '{archive-artifacts}'
846           description: Artifacts to archive to the logs server.
847       - string:
848           name: SONAR_MAVEN_GOAL
849           default: '{sonar-mvn-goal}'
850           description: |
851               Maven goals to pass to the Sonar call. Typically sonar:sonar
852               however to use a specific version of the sonar-maven-plugin we
853               can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
854
855     triggers:
856       - timed: '{obj:cron}'
857       - gerrit:
858           server-name: '{gerrit-server-name}'
859           trigger-on: '{obj:gerrit_sonar_triggers}'
860           projects:
861             - project-compare-type: 'ANT'
862               project-pattern: '{project}'
863               branches:
864                 - branch-compare-type: 'ANT'
865                   branch-pattern: '**/master'
866           skip-vote:
867             successful: true
868             failed: true
869             unstable: true
870             notbuilt: true
871
872     builders:
873       - lf-infra-pre-build
874       - lf-infra-maven-sonar:
875           java-version: '{java-version}'
876           mvn-settings: '{mvn-settings}'
877           mvn-version: '{mvn-version}'
878
879     publishers:
880       - lf-jacoco-report
881       - findbugs
882       - lf-infra-publish
883
884 - builder:
885     name: lf-infra-maven-sonar
886     # Run a Sonar build with Maven
887     builders:
888       - lf-maven-install:
889           mvn-version: '{mvn-version}'
890       - lf-update-java-alternatives:
891           java-version: '{java-version}'
892       - inject:
893           # Switch this to the sonar wrapper when JJB 2.0 is available
894           properties-content: SONAR_HOST_URL=$SONAR_URL
895       - lf-provide-maven-settings:
896           global-settings-file: global-settings
897           settings-file: '{mvn-settings}'
898       - shell: !include-raw-escape:
899           - ../shell/common-variables.sh
900           - ../shell/maven-sonar.sh
901       - lf-provide-maven-settings-cleanup
902
903 - job-template:
904     name: '{project-name}-sonar'
905     id: gerrit-maven-sonar
906     <<: *lf_maven_common
907     # yamllint disable-line rule:key-duplicates
908     <<: *lf_maven_sonar
909
910     scm:
911       - lf-infra-gerrit-scm:
912           jenkins-ssh-credential: '{jenkins-ssh-credential}'
913           git-url: '{git-url}'
914           refspec: $GERRIT_REFSPEC
915           branch: $GERRIT_BRANCH
916           submodule-recursive: '{submodule-recursive}'
917           submodule-timeout: '{submodule-timeout}'
918           choosing-strategy: default
919
920 - job-template:
921     name: '{project-name}-sonar'
922     id: github-maven-sonar
923     <<: *lf_maven_common
924     # yamllint disable-line rule:key-duplicates
925     <<: *lf_maven_sonar
926
927     properties:
928       - lf-infra-properties:
929           build-days-to-keep: '{build-days-to-keep}'
930       - github:
931           url: '{github-url}/{github-org}/{project}'
932
933     scm:
934       - lf-infra-github-scm:
935           url: '{git-clone-url}{github-org}/{project}'
936           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
937           branch: '$sha1'
938           submodule-recursive: '{submodule-recursive}'
939           submodule-timeout: '{submodule-timeout}'
940           choosing-strategy: default
941           jenkins-ssh-credential: '{jenkins-ssh-credential}'
942
943     triggers:
944       - timed: '{obj:cron}'
945       - github-pull-request:
946           trigger-phrase: '^run-sonar$'
947           only-trigger-phrase: true
948           status-context: 'Maven Sonar'
949           permit-all: true
950           github-hooks: true
951           org-list:
952             - '{github-org}'
953           white-list: '{obj:github_pr_whitelist}'
954           admin-list: '{obj:github_pr_admin_list}'
955           white-list-target-branches:
956             - '{branch}'
957
958 ################
959 # Maven Verify #
960 ################
961
962 - lf_maven_verify: &lf_maven_verify
963     name: lf-maven-verify
964
965     ######################
966     # Default parameters #
967     ######################
968
969     branch: master
970     build-days-to-keep: 7
971     build-timeout: 60
972     disable-job: false
973     git-url: '$GIT_URL/$PROJECT'
974     github-url: 'https://github.com'
975     java-version: openjdk8
976     mvn-global-settings: global-settings
977     mvn-goals: clean deploy
978     mvn-opts: ''
979     mvn-params: '-Dstream=$STREAM'
980     mvn-version: mvn35
981     stream: master
982     submodule-recursive: true
983     submodule-timeout: 10
984
985     gerrit_verify_triggers:
986       - patchset-created-event:
987           exclude-drafts: true
988           exclude-trivial-rebase: false
989           exclude-no-code-change: false
990       - draft-published-event
991       - comment-added-contains-event:
992           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
993
994     gerrit_trigger_file_paths:
995       - compare-type: REG_EXP
996         pattern: '.*'
997
998     # github_included_regions MUST match gerrit_trigger_file_paths
999     github_included_regions:
1000       - '.*'
1001
1002     #####################
1003     # Job Configuration #
1004     #####################
1005
1006     concurrent: true
1007     disabled: '{disable-job}'
1008
1009     builders:
1010       - lf-infra-pre-build
1011       - lf-jacoco-nojava-workaround
1012       - lf-maven-install:
1013           mvn-version: '{mvn-version}'
1014       - lf-update-java-alternatives:
1015           java-version: '{java-version}'
1016       - lf-provide-maven-settings:
1017           global-settings-file: '{mvn-global-settings}'
1018           settings-file: '{mvn-settings}'
1019       - lf-maven-build:
1020           mvn-goals: '{mvn-goals}'
1021       - lf-provide-maven-settings-cleanup
1022
1023     publishers:
1024       - findbugs
1025       - lf-jacoco-report
1026       - lf-infra-publish
1027
1028 - job-template:
1029     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1030     id: gerrit-maven-verify
1031     <<: *lf_maven_common
1032     # yamllint disable-line rule:key-duplicates
1033     <<: *lf_maven_verify
1034
1035     scm:
1036       - lf-infra-gerrit-scm:
1037           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1038           git-url: '{git-url}'
1039           refspec: '$GERRIT_REFSPEC'
1040           branch: '$GERRIT_BRANCH'
1041           submodule-recursive: '{submodule-recursive}'
1042           submodule-timeout: '{submodule-timeout}'
1043           choosing-strategy: gerrit
1044
1045     triggers:
1046       - gerrit:
1047           server-name: '{gerrit-server-name}'
1048           trigger-on: '{obj:gerrit_verify_triggers}'
1049           projects:
1050             - project-compare-type: ANT
1051               project-pattern: '{project}'
1052               branches:
1053                 - branch-compare-type: ANT
1054                   branch-pattern: '**/{branch}'
1055               file-paths: '{obj:gerrit_trigger_file_paths}'
1056
1057 - job-template:
1058     name: '{project-name}-maven-verify-{stream}-{mvn-version}-{java-version}'
1059     id: github-maven-verify
1060     <<: *lf_maven_common
1061     # yamllint disable-line rule:key-duplicates
1062     <<: *lf_maven_verify
1063
1064     properties:
1065       - lf-infra-properties:
1066           build-days-to-keep: '{build-days-to-keep}'
1067       - github:
1068           url: '{github-url}/{github-org}/{project}'
1069
1070     scm:
1071       - lf-infra-github-scm:
1072           url: '{git-clone-url}{github-org}/{project}'
1073           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
1074           branch: '$sha1'
1075           submodule-recursive: '{submodule-recursive}'
1076           submodule-timeout: '{submodule-timeout}'
1077           choosing-strategy: default
1078           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1079
1080     triggers:
1081       - github-pull-request:
1082           trigger-phrase: '^(recheck|reverify)$'
1083           only-trigger-phrase: false
1084           status-context: 'Maven Verify'
1085           permit-all: true
1086           github-hooks: true
1087           white-list-target-branches:
1088             - '{branch}'
1089           included-regions: '{obj:github_included_regions}'
1090
1091 #############################
1092 # Maven Verify Dependencies #
1093 #############################
1094
1095 - lf_maven_verify_dependencies: &lf_maven_verify_dependencies
1096     name: lf-maven-verify-dependencies
1097
1098     ######################
1099     # Default parameters #
1100     ######################
1101
1102     branch: master
1103     build-days-to-keep: 7
1104     build-timeout: 60
1105     disable-job: false
1106     git-url: '$GIT_URL/$PROJECT'
1107     github-url: 'https://github.com'
1108     java-version: openjdk8
1109     mvn-global-settings: global-settings
1110     mvn-goals: clean deploy
1111     mvn-opts: ''
1112     mvn-params: '-Dstream=$STREAM'
1113     mvn-version: mvn35
1114     stream: master
1115     submodule-recursive: true
1116     submodule-timeout: 10
1117
1118     gerrit_verify_triggers:
1119       - comment-added-contains-event:
1120           comment-contains-value: 'recheck: [0-9 ]+'
1121     gerrit_trigger_file_paths:
1122       - compare-type: ANT
1123         pattern: '**'
1124
1125     #####################
1126     # Job Configuration #
1127     #####################
1128
1129     concurrent: true
1130     disabled: '{disable-job}'
1131
1132     builders:
1133       - lf-infra-pre-build
1134       - lf-jacoco-nojava-workaround
1135       - lf-maven-install:
1136           mvn-version: '{mvn-version}'
1137       - lf-update-java-alternatives:
1138           java-version: '{java-version}'
1139       - lf-provide-maven-settings:
1140           global-settings-file: '{mvn-global-settings}'
1141           settings-file: '{mvn-settings}'
1142       - lf-fetch-dependent-patches
1143       - shell: !include-raw-escape:
1144           - ../shell/common-variables.sh
1145           - ../shell/maven-build-deps.sh
1146       - lf-maven-build:
1147           mvn-goals: '{mvn-goals}'
1148       - lf-provide-maven-settings-cleanup
1149
1150     publishers:
1151       - findbugs
1152       - lf-jacoco-report
1153       - lf-infra-publish
1154
1155 - job-template:
1156     name: '{project-name}-maven-verify-deps-{stream}-{mvn-version}-{java-version}'
1157     id: gerrit-maven-verify-dependencies
1158     <<: *lf_maven_common
1159     # yamllint disable-line rule:key-duplicates
1160     <<: *lf_maven_verify_dependencies
1161
1162     scm:
1163       - lf-infra-gerrit-scm:
1164           jenkins-ssh-credential: '{jenkins-ssh-credential}'
1165           git-url: '{git-url}'
1166           refspec: '$GERRIT_REFSPEC'
1167           branch: '$GERRIT_BRANCH'
1168           submodule-recursive: '{submodule-recursive}'
1169           submodule-timeout: '{submodule-timeout}'
1170           choosing-strategy: gerrit
1171
1172     triggers:
1173       - gerrit:
1174           server-name: '{gerrit-server-name}'
1175           trigger-on: '{obj:gerrit_verify_triggers}'
1176           projects:
1177             - project-compare-type: ANT
1178               project-pattern: '{project}'
1179               branches:
1180                 - branch-compare-type: ANT
1181                   branch-pattern: '**/{branch}'
1182               file-paths: '{obj:gerrit_trigger_file_paths}'