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