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