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