Update automated project templates
[releng/builder.git] / jjb / yangtools / yangtools.yaml
1 # REMOVE THIS LINE IF YOU WANT TO CUSTOMIZE ANYTHING BELOW
2 # Otherwise this file will be automatically overwritten by the template
3 # autobuilder.
4
5 # ODL Releng build templates
6 - project:
7     name: yangtools
8     jobs:
9         - 'yangtools-merge-{stream}'
10         - 'yangtools-periodic-{stream}'
11         - 'yangtools-distribution-{stream}'
12         - 'yangtools-distribution-check-{stream}'
13         - 'yangtools-integration-{stream}'
14         - 'yangtools-sonar'
15         - 'yangtools-clm-{stream}'
16         - 'yangtools-validate-autorelease-{stream}'
17
18
19     # stream:    release stream (eg. stable-lithium or beryllium)
20     # branch:    git branch (eg. stable/lithium or master)
21     stream:
22         - boron:
23             branch: 'master'
24             jdk: openjdk8
25             jdks:
26                 - openjdk8
27             disable_autorelease: False
28             disable_distribution_check: False
29         - beryllium:
30             branch: 'stable/beryllium'
31             jdk: openjdk7
32             jdks:
33                 - openjdk7
34                 - openjdk8
35             disable_autorelease: False
36             disable_distribution_check: False
37         - stable-lithium:
38             branch: 'stable/lithium'
39             jdk: openjdk7
40             jdks:
41                 - openjdk7
42                 - openjdk8
43             disable_autorelease: True
44             disable_distribution_check: True
45
46     project: 'yangtools'
47
48 # For the Job templates below replace instances of:
49 # PROJECT_SHORTNAME with your project name (eg. circuitsw)
50 # PROJECT_PATH with your project name (eg. ofextensions/circuitsw)
51 # MAVEN_GOALS with your maven goals to build
52 # MAVEN_OPTS with your maven options to build
53
54 - job-template:
55     name: 'yangtools-merge-{stream}'
56
57     # Job template for ODL merge jobs
58     #
59     # The purpose of this job template is to setup a ODL merge job
60     # and deploy artifacts to Nexus.
61     #
62     # Required Variables:
63     #     stream:    release stream (eg. stable-lithium or beryllium)
64     #     branch:    git branch (eg. stable/lithium or master)
65
66     project-type: maven
67     node: dynamic_merge
68     jdk: '{jdk}'
69
70     logrotate:
71         daysToKeep: '14'
72         numToKeep: '10'
73         artifactDaysToKeep: '{build-artifact-days-to-keep}'
74         artifactNumToKeep: '{build-artifact-num-to-keep}'
75
76     parameters:
77         - project-parameter:
78             project: '{project}'
79         - gerrit-parameters:
80             project: '{project}'
81             branch: '{branch}'
82             refspec: 'refs/heads/{branch}'
83
84     scm:
85         - gerrit-trigger-scm:
86             credentials-id: '{ssh-credentials}'
87             refspec: ''
88             choosing-strategy: 'default'
89
90     wrappers:
91         - opendaylight-infra-wrappers:
92             build-timeout: '{build-timeout}'
93
94     triggers:
95         - timed: 'H H * * 0'
96         - gerrit-trigger-patch-merged:
97             name: 'yangtools'
98             branch: '{branch}'
99
100     prebuilders:
101         - jacoco-nojava-workaround
102         - provide-maven-settings:
103             global-settings-file: 'odl-global-settings'
104             settings-file: 'yangtools-settings'
105
106     maven:
107         maven-name: '{mvn33}'
108         root-pom: 'pom.xml'
109         goals: 'clean install -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r  -V -B -Djenkins -Dmerge -Dstream={stream}'
110         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
111         settings: 'yangtools-settings'
112         settings-type: cfp
113         global-settings: 'odl-global-settings'
114         global-settings-type: cfp
115         post-step-run-condition: UNSTABLE
116
117     postbuilders:
118         - conditional-step:
119             condition-kind: file-exists
120             condition-filename: deploy-site.xml
121             condition-basedir: workspace
122
123             # The strategy here is intentional to run Maven site:deploy twice
124             # once using regular pom.xml to produce a staged-site which is
125             # then used by deploy-site.xml to push to Nexus. This is a
126             # workaround to Maven Site's default linking code which creates
127             # incorrect URLs for sites due to auto-detection assuming your
128             # project is configured in a certain way which ODL is not.
129             steps:
130             - maven-target:
131                 maven-version: '{mvn33}'
132                 pom: pom.xml
133                 goals: 'site:deploy -V -B -Dstream={stream}'
134                 java-opts:
135                     - '-Xmx2g'
136                 settings: 'yangtools-settings'
137                 settings-type: cfp
138                 global-settings: 'odl-global-settings'
139                 global-settings-type: cfp
140             - maven-target:
141                 maven-version: '{mvn33}'
142                 pom: deploy-site.xml
143                 goals: 'site:deploy -V -B -Dstream={stream}'
144                 java-opts:
145                     - '-Xmx2g'
146                 settings: 'yangtools-settings'
147                 settings-type: cfp
148                 global-settings: 'odl-global-settings'
149                 global-settings-type: cfp
150
151     reporters:
152         - findbugs
153
154     publishers:
155         - archive-artifacts:
156             artifacts: '**/target/surefire-reports/*-output.txt, '
157         - email-notification:
158             email-prefix: '[yangtools]'
159         - maven-deploy:
160             id: ''
161             unique-version: true
162             deploy-unstable: false
163         - jacoco-report
164         - archive-build:
165             maven-version: '{mvn33}'
166
167 - job-template:
168     name: 'yangtools-periodic-{stream}'
169     disabled: false
170
171     # Job template for periodic builders
172     #
173     # The purpose of this job template is to setup a periodic
174     # builder.
175     #
176     # Required Variables:
177     #     stream:    release stream (eg. stable-lithium or beryllium)
178     #     branch:    git branch (eg. stable/lithium or master)
179
180     project-type: maven
181     node: dynamic_verify
182     jdk: '{jdk}'
183
184     logrotate:
185         daysToKeep: '14'
186         numToKeep: '10'
187         artifactDaysToKeep: '{build-artifact-days-to-keep}'
188         artifactNumToKeep: '{build-artifact-num-to-keep}'
189
190     parameters:
191         - project-parameter:
192             project: '{project}'
193
194     scm:
195         - git-scm:
196             credentials-id: '{ssh-credentials}'
197             refspec: ''
198             branch: '{branch}'
199
200     wrappers:
201         - opendaylight-infra-wrappers:
202             build-timeout: '{build-timeout}'
203
204     triggers:
205         - timed: '@daily'
206
207     prebuilders:
208         - jacoco-nojava-workaround
209         - provide-maven-settings:
210             global-settings-file: 'odl-global-settings'
211             settings-file: 'yangtools-settings'
212
213     maven:
214         maven-name: '{mvn33}'
215         root-pom: 'pom.xml'
216         goals: 'clean install -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r  -V -B -Djenkins'
217         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
218         settings: 'yangtools-settings'
219         settings-type: cfp
220         global-settings: 'odl-global-settings'
221         global-settings-type: cfp
222
223     reporters:
224         - findbugs
225
226     publishers:
227         - email-notification:
228             email-prefix: '[yangtools]'
229         - jacoco-report
230         - archive-build:
231             maven-version: '{mvn33}'
232
233 - job-template:
234     name: 'yangtools-distribution-{stream}'
235
236     # Required variables:
237     #     stream:    release stream (eg. stable-lithium or beryllium)
238     #     branch:    git branch (eg. stable/lithium or master)
239
240     project-type: maven
241     node: dynamic_merge
242     jdk: '{jdk}'
243
244     logrotate:
245         daysToKeep: '{build-days-to-keep}'
246         numToKeep: '{build-num-to-keep}'
247         artifactDaysToKeep: '{build-artifact-days-to-keep}'
248         artifactNumToKeep: '{build-artifact-num-to-keep}'
249
250     parameters:
251         - project-parameter:
252             project: 'integration/distribution'
253
254     scm:
255         - git-scm:
256             credentials-id: '{ssh-credentials}'
257             refspec: ''
258             branch: '{branch}'
259
260     wrappers:
261         - opendaylight-infra-wrappers:
262             build-timeout: '{build-timeout}'
263
264     triggers:
265         - reverse:
266             jobs: '{project}-merge-{stream}'
267             result: 'success'
268
269     prebuilders:
270         - provide-maven-settings:
271             global-settings-file: 'odl-global-settings'
272             settings-file: 'yangtools-settings'
273
274     maven:
275         maven-name: '{mvn33}'
276         root-pom: 'pom.xml'
277         goals: 'clean install -V -B -Djenkins -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
278         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
279         settings: 'integration-distribution-settings'
280         settings-type: cfp
281         global-settings: 'odl-global-settings'
282         global-settings-type: cfp
283
284     publishers:
285         - email-notification:
286             email-prefix: '[{project}]'
287         - maven-deploy:
288             id: ''
289             unique-version: true
290             deploy-unstable: false
291         - archive-build:
292             maven-version: '{mvn33}'
293
294 # Template: integration-patch-distribution-{stream}
295 # Goal: Build a patch and make sure the distribution can deploy with this change
296 # Operation: This job template builds a patch, creates a distribution containing
297 #            the patch, and triggers the distribution deploy test
298
299 - job-template:
300     name: 'yangtools-distribution-check-{stream}'
301     disabled: '{obj:disable_distribution_check}'
302
303     project-type: maven
304     node: dynamic_verify
305     concurrent: true
306     jdk: '{jdk}'
307
308     logrotate:
309         daysToKeep: '{build-days-to-keep}'
310         numToKeep: '{build-num-to-keep}'
311         artifactDaysToKeep: '{build-artifact-days-to-keep}'
312         artifactNumToKeep: '{build-artifact-num-to-keep}'
313
314     parameters:
315         - gerrit-parameters:
316             project: '{project}'
317             branch: '{branch}'
318             refspec: 'refs/heads/{branch}'
319         - project-parameter:
320             project: '{project}'
321         - integration-distribution-git-url
322
323     scm:
324         - integration-gerrit-scm:
325             credentials-id: '{ssh-credentials}'
326             basedir: '$GERRIT_PROJECT'
327             refspec: '$GERRIT_REFSPEC'
328             branch: '{branch}'
329         - integration-distribution-scm:
330             credentials-id: '{ssh-credentials}'
331             branch: '{branch}'
332
333     wrappers:
334         - opendaylight-infra-wrappers:
335             build-timeout: '{build-timeout}'
336
337     triggers:
338         - gerrit:
339             server-name: 'OpenDaylight'
340             trigger-on:
341                 - patchset-created-event:
342                     exclude-drafts: 'true'
343                     exclude-trivial-rebase: 'false'
344                     exclude-no-code-change: 'true'
345                 - draft-published-event
346                 - comment-added-contains-event:
347                     comment-contains-value: 'test-distribution'
348                 - comment-added-contains-event:
349                     comment-contains-value: 'reverify'
350                 - comment-added-contains-event:
351                     comment-contains-value: 'recheck'
352             projects:
353               - project-compare-type: 'ANT'
354                 project-pattern: '{name}'
355                 branches:
356                   - branch-compare-type: 'ANT'
357                     branch-pattern: '**/{branch}'
358             skip-vote:
359                 successful: false
360                 failed: false
361                 unstable: false
362                 notbuilt: false
363
364     prebuilders:
365         - maven-target:
366             maven-version: '{mvn33}'
367             pom: '$GERRIT_PROJECT/pom.xml'
368             goals: 'clean install -V -B -Djenkins -DskipTests -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true -Dmaven.site.skip=true -DgenerateReports=false -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r -Dstream={stream}'
369             java-opts:
370                 - '-Xmx4096m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
371             settings: 'yangtools-settings'
372             settings-type: cfp
373             global-settings: 'odl-global-settings'
374             global-settings-type: cfp
375
376     maven:
377         maven-name: '{mvn33}'
378         root-pom: 'distribution/pom.xml'
379         goals: 'clean install -V -B -Djenkins -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
380         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
381         settings: 'yangtools-settings'
382         settings-type: cfp
383         global-settings: 'odl-global-settings'
384         global-settings-type: cfp
385         ignore-upstream-changes: true
386         post-step-run-condition: 'SUCCESS'
387
388     postbuilders:
389         - integration-distribution-check
390
391     publishers:
392         - email-notification:
393             email-prefix: '[yangtools]'
394         - postbuildscript:
395             builders:
396                 - shell: |
397                     #!/bin/bash
398                     mkdir -p $WORKSPACE/archives
399                     cp karaf*.log $WORKSPACE/archives
400             script-only-if-succeeded: False
401             script-only-if-failed: False
402             mark-unstable-if-failed: True
403         - archive-build:
404             maven-version: '{mvn33}'
405
406 - job-template:
407     name: 'yangtools-integration-{stream}'
408     disabled: false
409
410     # Job template for ODL integration verify jobs
411     #
412     # This is similar to a normal verify job, but it runs
413     # when a project that's a dependency of your project
414     # is successfully built.
415     #
416     # Required Variables:
417     #     stream:    release stream (eg. stable-lithium or beryllium)
418     #     branch:    git branch (eg. stable/lithium or master)
419
420     project-type: maven
421     node: dynamic_merge
422     jdk: '{jdk}'
423
424     logrotate:
425         daysToKeep: '{build-days-to-keep}'
426         numToKeep: '{build-num-to-keep}'
427         artifactDaysToKeep: '{build-artifact-days-to-keep}'
428         artifactNumToKeep: '{build-artifact-num-to-keep}'
429
430     parameters:
431         - project-parameter:
432             project: '{project}'
433
434     scm:
435         - git-scm:
436             credentials-id: '{ssh-credentials}'
437             refspec: ''
438             branch: '{branch}'
439
440     wrappers:
441         - opendaylight-infra-wrappers:
442             build-timeout: '{build-timeout}'
443
444     triggers:
445         - reverse:
446             jobs: 'odlparent-merge-{stream}'
447             result: 'success'
448
449     prebuilders:
450         - jacoco-nojava-workaround
451         - provide-maven-settings:
452             global-settings-file: 'odl-global-settings'
453             settings-file: 'yangtools-settings'
454
455     maven:
456         maven-name: '{mvn33}'
457         root-pom: 'pom.xml'
458         goals: 'clean install -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r  -V -B -Djenkins'
459         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
460         settings: 'yangtools-settings'
461         settings-type: cfp
462         global-settings: 'odl-global-settings'
463         global-settings-type: cfp
464
465     reporters:
466         - findbugs
467
468     publishers:
469         - email-notification:
470             email-prefix: '[yangtools] [odlparent]'
471         - jacoco-report
472         - archive-build:
473             maven-version: '{mvn33}'
474
475 - job-template:
476     name: 'yangtools-sonar'
477     disabled: false
478
479     project-type: maven
480     node: dynamic_verify
481     jdk: 'openjdk8'
482
483     logrotate:
484         daysToKeep: '7'
485         numToKeep: '10'
486         artifactDaysToKeep: '1'
487         artifactNumToKeep: '1'
488
489     parameters:
490         - project-parameter:
491             project: '{project}'
492
493     scm:
494         - git-scm:
495             credentials-id: '{ssh-credentials}'
496             refspec: ''
497             branch: 'master'
498
499     wrappers:
500         - opendaylight-infra-wrappers:
501             build-timeout: '{build-timeout}'
502
503     triggers:
504         - timed: 'H H * * 6'
505         - gerrit-trigger-patch-sonar:
506             name: 'yangtools'
507
508     prebuilders:
509         - jacoco-nojava-workaround
510         - provide-maven-settings:
511             global-settings-file: 'odl-global-settings'
512             settings-file: 'yangtools-settings'
513
514     maven:
515         maven-name: '{mvn33}'
516         root-pom: 'pom.xml'
517         goals: 'clean install -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r  -V -B -Djenkins -Dsonar'
518         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
519         settings: 'yangtools-settings'
520         settings-type: cfp
521         global-settings: 'odl-global-settings'
522         global-settings-type: cfp
523
524     reporters:
525         - findbugs
526
527     publishers:
528         - sonar:
529             language: 'java'
530             maven-opts: '-Xmx6144m -XX:MaxPermSize=1024m'
531         - email-notification:
532             email-prefix: '[yangtools]'
533         - jacoco-report
534         - archive-build:
535             maven-version: '{mvn33}'
536
537 - job-template:
538     name: 'yangtools-clm-{stream}'
539     disabled: false
540
541     project-type: maven
542     node: dynamic_verify
543     jdk: '{jdk}'
544
545     logrotate:
546         daysToKeep: '{build-days-to-keep}'
547         numToKeep: '{build-num-to-keep}'
548         artifactDaysToKeep: '{build-artifact-days-to-keep}'
549         artifactNumToKeep: '{build-artifact-num-to-keep}'
550
551     parameters:
552         - project-parameter:
553             project: '{project}'
554
555     scm:
556         - git-scm:
557             credentials-id: '{ssh-credentials}'
558             refspec: ''
559             branch: '{branch}'
560
561     wrappers:
562         - opendaylight-infra-wrappers:
563             build-timeout: '{build-timeout}'
564
565     triggers:
566         - timed: 'H H * * 6'
567
568     prebuilders:
569         - provide-maven-settings:
570             global-settings-file: 'odl-global-settings'
571             settings-file: 'yangtools-settings'
572
573     maven:
574         maven-name: '{mvn33}'
575         root-pom: 'pom.xml'
576         goals: 'clean install com.sonatype.clm:clm-maven-plugin:index -V -B -Djenkins -DskipTests=true -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
577         maven-opts: '-Xmx4096m -XX:MaxPermSize=512m'
578         settings: 'yangtools-settings'
579         settings-type: cfp
580         global-settings: 'odl-global-settings'
581         global-settings-type: cfp
582
583     postbuilders:
584         - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
585         - check-clm:
586             application-name: yangtools
587
588     publishers:
589         - email-notification:
590             email-prefix: '[yangtools]'
591         - archive-build:
592             maven-version: '{mvn33}'
593
594 - job-template:
595     name: 'yangtools-validate-autorelease-{stream}'
596     disabled: '{obj:disable_autorelease}'
597
598     project-type: maven
599     node: dynamic_verify
600     concurrent: true
601     jdk: '{jdk}'
602
603     logrotate:
604         daysToKeep: '{build-days-to-keep}'
605         numToKeep: '{build-num-to-keep}'
606         artifactDaysToKeep: '{build-artifact-days-to-keep}'
607         artifactNumToKeep: '{build-artifact-num-to-keep}'
608
609     parameters:
610         - project-parameter:
611             project: '{project}'
612         - gerrit-parameters:
613             project: '{project}'
614             branch: '{branch}'
615             refspec: 'refs/heads/{branch}'
616         - autorelease-release-tag:
617             release-tag: 'validate'
618         - autorelease-release-branch:
619             release-branch: '{branch}'
620         - string:
621             name: CLONE_URL
622             default: 'ssh://jenkins-$SILO@git.opendaylight.org:29418/releng/autorelease'
623             description: "Autorelease clone URL"
624
625     scm:
626         - git:
627             url: '$CLONE_URL'
628             credentials-id: '{ssh-credentials}'
629             refspec: ''
630             branches:
631                 - 'origin/{branch}'
632             skip-tag: true
633             submodule:
634                 recursive: true
635                 timeout: 60
636
637     wrappers:
638         - opendaylight-infra-wrappers:
639             build-timeout: '{build-timeout}'
640
641     triggers:
642         - gerrit:
643             server-name: 'OpenDaylight'
644             trigger-on:
645                 - patchset-created-event:
646                     exclude-drafts: 'true'
647                     exclude-trivial-rebase: 'false'
648                     exclude-no-code-change: 'true'
649                 - draft-published-event
650                 - comment-added-contains-event:
651                     comment-contains-value: 'recheck'
652                 - comment-added-contains-event:
653                     comment-contains-value: 'reverify'
654                 - comment-added-contains-event:
655                     comment-contains-value: 'revalidate'
656             projects:
657               - project-compare-type: 'ANT'
658                 project-pattern: 'yangtools'
659                 branches:
660                   - branch-compare-type: 'ANT'
661                     branch-pattern: '**/{branch}'
662                 file-paths:
663                     - compare-type: ANT
664                       pattern: '**/*.xml'
665
666     prebuilders:
667         - jacoco-nojava-workaround
668         - autorelease-checkout-gerrit-patch
669         - autorelease-generate-release-patches
670         - maven-target:
671             maven-version: '{mvn33}'
672             pom: validate-pom.xml
673             goals: 'clean install -V -B -T1.5C -Djenkins -DskipTests -Dcheckstyle.skip=true -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
674             java-opts:
675             - '-Xmx8g'
676             settings: 'autorelease-settings'
677             settings-type: cfp
678             global-settings: 'odl-global-settings'
679             global-settings-type: cfp
680
681     maven:
682         maven-name: '{mvn33}'
683         root-pom: 'pom.xml'
684         goals: 'clean validate -V -B -Djenkins -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
685         maven-opts: '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
686         settings: 'autorelease-settings'
687         settings-type: cfp
688         global-settings: 'odl-global-settings'
689         global-settings-type: cfp
690         automatic-archiving: false
691         post-step-run-condition: UNSTABLE
692
693     postbuilders:
694         - autorelease-sys-stats
695
696     publishers:
697         - email-notification:
698             email-prefix: '[autorelease] [yangtools]'
699         - archive-build:
700             maven-version: '{mvn33}'
701