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