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