Add job to automatically cleanup old images
[releng/builder.git] / jjb / releng-templates-java.yaml
1 ---
2 - job-template:
3     # Template used for running CLM scans
4     # Arguements:
5     #   {name}         - Project Shortname
6     #   {project}      - Fully qualified project name
7     #   {mvn-settings} - Project maven settings file
8     #   {stream}
9     #   {jdk}
10     name: '{project-name}-clm-{stream}'
11
12     project-type: freestyle
13     node: '{build-node}'
14     jdk: '{jdk}'
15
16     properties:
17       - opendaylight-infra-properties:
18           build-days-to-keep: '{build-days-to-keep}'
19
20     parameters:
21       - opendaylight-infra-parameters:
22           project: '{project}'
23           branch: '{branch}'
24           refspec: 'refs/heads/{branch}'
25           artifacts: '{archive-artifacts}'
26
27     scm:
28       - git-scm:
29           refspec: ''
30           branch: '{branch}'
31
32     wrappers:
33       - opendaylight-infra-wrappers:
34           build-timeout: '{build-timeout}'
35
36     triggers:
37       - timed: 'H H * * 6'
38
39     builders:
40       - provide-maven-settings:
41           global-settings-file: 'odl-global-settings'
42           settings-file: '{mvn-settings}'
43       - maven-target:
44           maven-version: 'mvn33'
45           pom: 'pom.xml'
46           goals: >
47               clean install dependency:tree com.sonatype.clm:clm-maven-plugin:index
48               -V -B -Pq
49               -Djenkins
50               -Dmaven.repo.local=/tmp/r
51               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
52           java-opts:
53             - '-Xmx4096m -XX:MaxPermSize=512m'
54           settings: '{mvn-settings}'
55           settings-type: cfp
56           global-settings: 'odl-global-settings'
57           global-settings-type: cfp
58       - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
59       - check-clm:
60           application-name: '{project-name}'
61
62     publishers:
63       - email-notification:
64           email-recipients: '{email-recipients}'
65           email-prefix: '[{project-name}]'
66       - opendaylight-infra-shiplogs:
67           maven-version: 'mvn33'
68
69 - job-template:
70     # Template: {project-name}-distribution-check-{stream}
71     # Goal: Build a patch and make sure the distribution can deploy with this change.
72     # Operation: This job template builds a patch, creates a distribution containing
73     #            the patch (making sure dependencies are specified),
74     #            and performs the distribution deploy test.
75
76     name: '{project-name}-distribution-check-{stream}'
77     disabled: false
78
79     project-type: freestyle
80     node: '{build-node}'
81     concurrent: true
82     jdk: '{jdk}'
83
84     properties:
85       - opendaylight-infra-properties:
86           build-days-to-keep: '{build-days-to-keep}'
87
88     parameters:
89       - opendaylight-infra-parameters:
90           project: '{project}'
91           branch: '{branch}'
92           refspec: 'refs/heads/{branch}'
93           artifacts: '{archive-artifacts} **/dependency_tree.txt **/target/surefire-reports/*-output.txt'
94       - integration-distribution-git-url:
95           git-url: '{git-url}'
96
97     scm:
98       - integration-gerrit-scm:
99           basedir: '$GERRIT_PROJECT'
100           refspec: '$GERRIT_REFSPEC'
101           branch: '{branch}'
102       - integration-distribution-scm:
103           branch: '{distribution_branch}'
104
105     wrappers:
106       - opendaylight-infra-wrappers:
107           # Distro-check jobs typically run within 10 - 30 minutes
108           # with 45 minutes being the occassional edge case.
109           # enforce a 60 minute limit to ensure stuck jobs get
110           # cleared up sooner.
111           build-timeout: '60'
112
113     triggers:
114       - gerrit-trigger-patch-submitted:
115           server: '{server-name}'
116           project: '{project}'
117           branch: '{branch}'
118           files: '**'
119
120     builders:
121       # Step zero: Wipe file repositories up front.
122       - shell: |
123           echo "wipe r: the local Maven repository"
124           rm -rfv /tmp/r
125           echo "wipe n: the fake remote (Nexus) repository"
126           rm -rfv /tmp/n
127           echo "wipe t: the transient repository used in some manipulations"
128           rm -rfv /tmp/t
129       # Step one: Online build of the project, using local repository /tmp/r/ and deploying artifacts to /tmp/n/.
130       # Ordinary SingleFeatureTest failures are detected in the verify job, so we can use "q" profile here.
131       - maven-target:
132           maven-version: 'mvn33'
133           pom: '$GERRIT_PROJECT/pom.xml'
134           goals: >
135               clean deploy dependency:tree
136               -DoutputFile=dependency_tree.txt
137               -V -B -Pq
138               -Djenkins
139               -Dstream={stream}
140               -DaltDeploymentRepository=fake-nexus::default::file:///tmp/n/
141               -Dmaven.repo.local=/tmp/r
142               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
143           java-opts:
144             - '-Xmx4096m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
145           settings: '{mvn-settings}'
146           settings-type: cfp
147           global-settings: 'odl-global-settings'
148           global-settings-type: cfp
149       # Step two: Verify all deployed artifacts belong to the project's groupId.
150       # This is done by moving the allowed directories out of /tmp/n and checking no files remained there.
151       # The correct directory is derived from $GERRIT_PROJECT.
152       - shell: |
153           mkdir -p /tmp/t/org/opendaylight/$GERRIT_PROJECT
154           mv /tmp/n/org/opendaylight/$GERRIT_PROJECT/* /tmp/t/org/opendaylight/$GERRIT_PROJECT/
155           test -z "`find /tmp/n/ -type f`" || ( echo "ERROR: Mismatched groupId detected (see above)." && false )
156           rm -rf /tmp/n
157           mv /tmp/t /tmp/n
158       # Step three: Online build of integration distribution.
159       # This step is mainly used for downloading other project artifacts.
160       # Running SingleFeaturesTest here does not seem to be required, so -Pq is used again.
161       - maven-target:
162           maven-version: 'mvn33'
163           pom: 'distribution/pom.xml'
164           goals: >
165               clean install dependency:tree
166               -DoutputFile=dependency_tree.txt
167               -V -B -Pq
168               -Djenkins
169               -Dstream={stream}
170               -Dmaven.repo.local=/tmp/r
171               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
172           java-opts:
173             - '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
174           settings: '{mvn-settings}'
175           settings-type: cfp
176           global-settings: 'odl-global-settings'
177           global-settings-type: cfp
178       # Step four: Delete snapshot artifacts from the local repository.
179       # This is critical to detect orphaned artifacts or missing project-internal dependency declarations.
180       # Also other files related to maven repository resolution are removed,
181       # and then empty directories are removed, in order to simplify debugging.
182       - shell: !include-raw-escape: integration-distribution-delete-snaphot-artifacts.sh
183       # Now the ugly part. It seems that the only way to tell Maven 2+
184       # which remote repositories to use is via settings.xml file.
185       # So we create such a file here, but it needs most of odlparent:settings.xml
186       - shell: |
187           echo '
188           <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
189             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
190             xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
191             https://maven.apache.org/xsd/settings-1.0.0.xsd">
192             <profiles>
193               <profile>
194                 <id>opendaylight-release</id>
195                 <repositories>
196                   <repository>
197                     <id>opendaylight-mirror</id>
198                     <name>opendaylight</name>
199                     <url>https://nexus.opendaylight.org/content/repositories/public/</url>
200                     <releases><updatePolicy>never</updatePolicy></releases>
201                     <snapshots><enabled>false</enabled></snapshots>
202                   </repository>
203                 </repositories>
204                 <pluginRepositories>
205                   <pluginRepository>
206                     <id>opendaylight-plugin-mirror</id>
207                     <name>opendaylight-plugin</name>
208                     <url>https://nexus.opendaylight.org/content/repositories/public/</url>
209                     <releases><updatePolicy>never</updatePolicy></releases>
210                     <snapshots><enabled>false</enabled></snapshots>
211                   </pluginRepository>
212                 </pluginRepositories>
213               </profile>
214               <profile>
215                 <id>file-snapshots</id>
216                 <repositories>
217                   <repository>
218                     <id>file-snapshots</id>
219                     <name>file</name>
220                     <url>file:///tmp/n/</url>
221                     <releases><enabled>false</enabled></releases>
222                   </repository>
223                 </repositories>
224                 <pluginRepositories>
225                   <pluginRepository>
226                     <id>file-plugin-snapshots</id>
227                     <name>file-plugin</name>
228                     <url>file:///tmp/n/</url>
229                     <releases><enabled>false</enabled></releases>
230                   </pluginRepository>
231                 </pluginRepositories>
232               </profile>
233             </profiles>
234             <activeProfiles>
235               <activeProfile>file-snapshots</activeProfile>
236               <activeProfile>opendaylight-release</activeProfile>
237             </activeProfiles>
238           </settings>
239           ' > fake_remotes.xml
240       # # Notes: The settings are minimal in order to detect breakage scenarios while allowing for the following quirks:
241       # # * Some plugins seem to have hardcoded repos, for example check-license looks at repository.apache.org
242       # # * Some plugin artifacts (related to surefire) are not downloaded when tests are skipped.
243       # # * populate-local-repo looks at oss.sonatype.org and does not store things (like guava) to /tmp/r
244       # Step five: Repeat the distribution build but with the new settings.
245       # Here, only the project snapshot artifacts deployed to /tmp/n are available,
246       # which faithfully reproduces conditions in later verify-like job runs.
247       # We cannot use --offline, because: "Cannot access file (file:///tmp/n) in offline mode"
248       # This is where SingleFeatureTest is not skipped.
249       - maven-target:
250           maven-version: 'mvn33'
251           pom: 'distribution/pom.xml'
252           goals: >
253               clean install dependency:tree
254               -DoutputFile=dependency_tree.txt -s fake_remotes.xml
255               -V -B -Pq
256               -DskipTests=false
257               -Djenkins
258               -Dstream={stream}
259               -Dmaven.repo.local=/tmp/r
260               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
261           java-opts:
262             - '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
263       # Step six: Run Karaf and verify no critical failures are present.
264       - integration-distribution-check
265
266     publishers:
267       - email-notification:
268           email-recipients: '{email-recipients}'
269           email-prefix: '[{project-name}]'
270       - postbuildscript:
271           builders:
272             - shell: |
273                 #!/bin/bash
274                 mkdir -p $WORKSPACE/archives
275                 cp karaf*.log $WORKSPACE/archives
276           script-only-if-succeeded: false
277           script-only-if-failed: false
278           mark-unstable-if-failed: true
279       - archive:
280           artifacts: '*.zip'
281       - opendaylight-infra-shiplogs:
282           maven-version: 'mvn33'
283
284 - job-template:
285     name: '{project-name}-integration-{stream}'
286
287     # Job template for ODL integration verify jobs
288     #
289     # This is similar to a normal verify job, but it runs
290     # when a project that's a dependency of your project
291     # is successfully built.
292     #
293     # Required Variables:
294     #     stream:    release stream (eg. boron or carbon)
295     #     branch:    git branch (eg. stable/boron or master)
296
297     project-type: freestyle
298     node: '{build-node}'
299     jdk: '{jdk}'
300
301     properties:
302       - opendaylight-infra-properties:
303           build-days-to-keep: '{build-days-to-keep}'
304
305     parameters:
306       - opendaylight-infra-parameters:
307           project: '{project}'
308           branch: '{branch}'
309           refspec: 'refs/heads/{branch}'
310           artifacts: '{archive-artifacts}'
311
312     scm:
313       - git-scm:
314           refspec: ''
315           branch: '{branch}'
316
317     wrappers:
318       - opendaylight-infra-wrappers:
319           build-timeout: '{build-timeout}'
320
321     triggers:
322       - reverse:
323           jobs: '{dependencies}'
324           result: 'success'
325
326     builders:
327       - jacoco-nojava-workaround
328       - provide-maven-settings:
329           global-settings-file: 'odl-global-settings'
330           settings-file: '{mvn-settings}'
331       - maven-target:
332           maven-version: 'mvn33'
333           goals: '{mvn-goals} -V -B -Djenkins -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
334           java-opts:
335             - '{mvn-opts}'
336           settings: '{mvn-settings}'
337           settings-type: cfp
338           global-settings: 'odl-global-settings'
339           global-settings-type: cfp
340
341     publishers:
342       - email-notification:
343           email-recipients: '{email-recipients}'
344           email-prefix: '{email-upstream}'
345       - findbugs
346       - jacoco-report
347       - opendaylight-infra-shiplogs:
348           maven-version: 'mvn33'
349
350 - job-template:
351     name: '{project-name}-merge-{stream}'
352
353     # Job template for ODL merge jobs
354     #
355     # The purpose of this job template is to setup a ODL merge job
356     # and deploy artifacts to Nexus.
357     #
358     # Required Variables:
359     #     stream:    release stream (eg. boron or carbon)
360     #     branch:    git branch (eg. stable/boron or master)
361
362     # Need to keep jobs that deploy to Nexus at end of build as Maven
363     # projects. Maybe reconsider this once upstream moves deploy to a
364     # separate lifecycle:
365     #     https://issues.apache.org/jira/browse/MNG-5666
366     project-type: maven
367     node: '{build-node}'
368     jdk: '{jdk}'
369
370     properties:
371       - opendaylight-infra-properties:
372           build-days-to-keep: 14
373
374     parameters:
375       - opendaylight-infra-parameters:
376           project: '{project}'
377           branch: '{branch}'
378           refspec: 'refs/heads/{branch}'
379           artifacts: '{archive-artifacts}'
380
381     scm:
382       - gerrit-trigger-scm:
383           refspec: ''
384           choosing-strategy: 'default'
385
386     wrappers:
387       - opendaylight-infra-wrappers:
388           build-timeout: '{build-timeout}'
389
390     triggers:
391       - timed: 'H H * * 0'
392       - gerrit-trigger-patch-merged:
393           server-name: '{server-name}'
394           name: '{project}'
395           branch: '{branch}'
396
397     prebuilders:
398       - jacoco-nojava-workaround
399       - provide-maven-settings:
400           global-settings-file: 'odl-global-settings'
401           settings-file: '{mvn-settings}'
402
403     # TODO: Do we want to apply sophisticated checks as in *-distribution-check-*?
404     maven:
405       maven-name: 'mvn33'
406       goals: >
407           {mvn-goals}
408           -V -B
409           -Djenkins
410           -Dmerge
411           -Dstream={stream}
412           -Dmaven.repo.local=/tmp/r
413           -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
414       maven-opts: '{mvn-opts}'
415       settings: '{mvn-settings}'
416       settings-type: cfp
417       global-settings: 'odl-global-settings'
418       global-settings-type: cfp
419       post-step-run-condition: UNSTABLE
420
421     postbuilders:
422       - conditional-step:
423           condition-kind: file-exists
424           condition-filename: deploy-site.xml
425           condition-basedir: workspace
426
427           # The strategy here is intentional to run Maven site:deploy twice
428           # once using regular pom.xml to produce a staged-site which is
429           # then used by deploy-site.xml to push to Nexus. This is a
430           # workaround to Maven Site's default linking code which creates
431           # incorrect URLs for sites due to auto-detection assuming your
432           # project is configured in a certain way which ODL is not.
433           steps:
434             - maven-target:
435                 maven-version: 'mvn33'
436                 pom: pom.xml
437                 goals: 'site:deploy -V -B -Dstream={stream}'
438                 java-opts:
439                   - '-Xmx2g'
440                 settings: '{mvn-settings}'
441                 settings-type: cfp
442                 global-settings: 'odl-global-settings'
443                 global-settings-type: cfp
444             - maven-target:
445                 maven-version: 'mvn33'
446                 pom: deploy-site.xml
447                 goals: 'site:deploy -V -B -Dstream={stream}'
448                 java-opts:
449                   - '-Xmx2g'
450                 settings: '{mvn-settings}'
451                 settings-type: cfp
452                 global-settings: 'odl-global-settings'
453                 global-settings-type: cfp
454
455     reporters:
456       - findbugs
457
458     publishers:
459       - email-notification:
460           email-recipients: '{email-recipients}'
461           email-prefix: '[{project-name}]'
462       - maven-deploy:
463           id: ''
464           unique-version: true
465           deploy-unstable: false
466       - jacoco-report
467       - opendaylight-infra-shiplogs:
468           maven-version: 'mvn33'
469       - trigger:
470           project: 'distribution-merge-{stream}'
471           threshold: SUCCESS
472
473 - job-template:
474     name: '{project-name}-sonar'
475     disabled: false
476
477     project-type: freestyle
478     node: '{build-node}'
479     jdk: 'openjdk8'
480
481     properties:
482       - opendaylight-infra-properties:
483           build-days-to-keep: 7
484
485     parameters:
486       - opendaylight-infra-parameters:
487           project: '{project}'
488           branch: '{branch}'
489           refspec: 'refs/heads/{branch}'
490           artifacts: '{archive-artifacts}'
491
492     scm:
493       - git-scm:
494           refspec: ''
495           branch: 'master'
496
497     wrappers:
498       - opendaylight-infra-wrappers:
499           build-timeout: '{build-timeout}'
500
501     triggers:
502       - timed: 'H H * * 6'
503       - gerrit-trigger-patch-sonar:
504           server-name: '{server-name}'
505           name: '{project}'
506           # FIXME: Make sure this does not alter Gerrit votes, then update docs.
507
508     builders:
509       - jacoco-nojava-workaround
510       - provide-maven-settings:
511           global-settings-file: 'odl-global-settings'
512           settings-file: '{mvn-settings}'
513       - maven-target:
514           maven-version: 'mvn33'
515           goals: >
516               {mvn-goals}
517               -V -B
518               -Djenkins
519               -Dsonar
520               -Dmaven.repo.local=/tmp/r
521               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
522           maven-opts:
523             - '{mvn-opts}'
524           settings: '{mvn-settings}'
525           settings-type: cfp
526           global-settings: 'odl-global-settings'
527           global-settings-type: cfp
528       - maven-target:
529           maven-version: 'mvn33'
530           # We should switch to the recommended configuration of sonar once
531           # JJB adds support for configurating the Sonar wrapper:
532           #    http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins
533           goals: >
534               sonar:sonar
535               -V -B -Djenkins
536               -Dsonar
537               -Dsonar.host.url=https://sonar.opendaylight.org
538               -Dmaven.repo.local=/tmp/r
539               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
540           maven-opts:
541             - '{mvn-opts}'
542           settings: '{mvn-settings}'
543           settings-type: cfp
544           global-settings: 'odl-global-settings'
545           global-settings-type: cfp
546
547     publishers:
548       - email-notification:
549           email-recipients: '{email-recipients}'
550           email-prefix: '[{project-name}]'
551       - jacoco-report
552       - findbugs
553       - opendaylight-infra-shiplogs:
554           maven-version: 'mvn33'
555
556 - job-template:
557     name: '{project-name}-validate-autorelease-{stream}'
558     disabled: false
559
560     project-type: freestyle
561     node: '{build-node}'
562     concurrent: true
563     jdk: '{jdk}'
564
565     properties:
566       - opendaylight-infra-properties:
567           build-days-to-keep: 7
568
569     parameters:
570       - opendaylight-infra-parameters:
571           project: '{project}'
572           branch: '{branch}'
573           refspec: 'refs/heads/{branch}'
574           artifacts: '{archive-artifacts}'
575       - autorelease-release-tag:
576           release-tag: 'validate'
577       - autorelease-release-branch:
578           release-branch: '{branch}'
579       - string:
580           name: CLONE_URL
581           default: '{git-url}/releng/autorelease'
582           description: "Autorelease clone URL"
583
584     scm:
585       - git:
586           url: '$CLONE_URL'
587           credentials-id: 'opendaylight-jenkins-ssh'
588           refspec: ''
589           branches:
590             - 'origin/{branch}'
591           skip-tag: true
592           submodule:
593             recursive: true
594             timeout: 60
595
596     wrappers:
597       - opendaylight-infra-wrappers:
598           build-timeout: '{build-timeout}'
599
600     triggers:
601       - gerrit-trigger-patch-submitted:
602           server: '{server-name}'
603           project: '{project}'
604           branch: '{branch}'
605           files: '**/*.xml'
606
607     builders:
608       - jacoco-nojava-workaround
609       - autorelease-checkout-gerrit-patch
610       - autorelease-generate-release-patches
611       # In a perfect world projects should be releasing separately and we consume them
612       # via a project that pulls the release bits from each project from Nexus.
613       # Keep the patches compatible with that ideal, but apply an edit
614       # to enable building in a single maven reactor afterwards.
615       - autorelease-fix-relative-paths
616       - maven-target:
617           maven-version: 'mvn33'
618           pom: validate-pom.xml
619           goals: >
620               clean install dependency:tree
621               -V -B -T1.5C -Pq
622               -Djenkins
623               -Dmaven.repo.local=/tmp/r
624               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
625           java-opts:
626             - '-Xmx8g'
627           settings: 'autorelease-settings'
628           settings-type: cfp
629           global-settings: 'odl-global-settings'
630           global-settings-type: cfp
631       - maven-target:
632           maven-version: 'mvn33'
633           pom: 'pom.xml'
634           goals: >
635               clean validate
636               -V -B -Pq
637               -Djenkins
638               -Dmaven.repo.local=/tmp/r
639               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
640           java-opts:
641             - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
642           settings: 'autorelease-settings'
643           settings-type: cfp
644           global-settings: 'odl-global-settings'
645           global-settings-type: cfp
646       - autorelease-sys-stats
647
648     publishers:
649       - email-notification:
650           email-recipients: '{email-recipients}'
651           email-prefix: '[autorelease] [{project-name}]'
652       - opendaylight-infra-shiplogs:
653           maven-version: 'mvn33'
654
655 - job-template:
656     name: '{project-name}-verify-{stream}-{maven}-{jdks}'
657
658     # Job template for ODL verify jobs
659     #
660     # The purpose of this job template is to setup a ODL verify job
661     #
662     # Required Variables:
663     #     stream:    release stream (eg. boron or carbon)
664     #     branch:    git branch (eg. stable/boron or master)
665
666     project-type: freestyle
667     node: '{build-node}'
668     concurrent: true
669     jdk: '{jdks}'
670
671     properties:
672       - opendaylight-infra-properties:
673           build-days-to-keep: 7
674
675     parameters:
676       - opendaylight-infra-parameters:
677           project: '{project}'
678           branch: '{branch}'
679           refspec: 'refs/heads/{branch}'
680           artifacts: '{archive-artifacts}'
681
682     scm:
683       - gerrit-trigger-scm:
684           refspec: '$GERRIT_REFSPEC'
685           choosing-strategy: 'gerrit'
686
687     wrappers:
688       - opendaylight-infra-wrappers:
689           build-timeout: '{build-timeout}'
690
691     triggers:
692       - gerrit-trigger-patch-submitted:
693           server: '{server-name}'
694           project: '{project}'
695           branch: '{branch}'
696           files: '**'
697
698     builders:
699       - jacoco-nojava-workaround
700       - provide-maven-settings:
701           global-settings-file: 'odl-global-settings'
702           settings-file: '{mvn-settings}'
703       - maven-target:
704           maven-version: '{mvn-version}'
705           goals: >
706               {mvn-goals} -V -B
707               -Djenkins
708               -Dstream={stream}
709               -Dmaven.repo.local=/tmp/r
710               -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
711           java-opts:
712             - '{mvn-opts}'
713           settings: '{mvn-settings}'
714           settings-type: cfp
715           global-settings: 'odl-global-settings'
716           global-settings-type: cfp
717
718     publishers:
719       - findbugs
720       - email-notification:
721           email-recipients: '{email-recipients}'
722           email-prefix: '[{project-name}]'
723       - jacoco-report
724       - opendaylight-infra-shiplogs:
725           maven-version: '{mvn-version}'