blob: b7a56afb15b372aa50f186fbb60f6c29fe0ed1d2 [file] [log] [blame]
Andrew Grimbergebc710a2017-01-30 12:59:38 -08001---
2# Global macros
3
Andrew Grimberg1ac7c2d2017-02-08 12:40:56 -08004# vim: sw=2 ts=2 sts=2 et :
5
Andrew Grimbergebc710a2017-01-30 12:59:38 -08006# BUILDERS
7- builder:
Andrew Grimbergebc710a2017-01-30 12:59:38 -08008 name: provide-maven-settings
9 builders:
10 - config-file-provider:
11 files:
12 - file-id: '{global-settings-file}'
13 variable: 'GLOBAL_SETTINGS_FILE'
14 - file-id: '{settings-file}'
15 variable: 'SETTINGS_FILE'
16
Andrew Grimberg3aaa7d42017-02-24 12:51:11 -080017# call maven-target builder with a goal of --version to force Jenkins to
18# install the needed maven version
19- builder:
20 name: maven-install
21 builders:
22 - maven-target:
23 maven-version: '{maven-version}'
24 goals: '--version'
25
Anaël Clossonabbafb52017-02-09 17:55:10 +010026- builder:
Gary Wu350fbcb2018-08-07 11:13:59 -070027 name: maven-set-release-version
28 builders:
29 - maven-target:
30 maven-version: '{maven-version}'
31 pom: '{pom}'
32 goals: 'versions:set versions:update-child-modules versions:commit -B'
33 properties:
34 - 'newVersion=${{release_version}}'
35 settings: '{mvn-settings}'
36 settings-type: cfp
37 global-settings: 'global-settings'
38 global-settings-type: cfp
39
40- builder:
Anaël Clossonabbafb52017-02-09 17:55:10 +010041 name: maven-docker-push-release
42 builders:
43 - maven-target:
Andrew Grimberge2465882017-02-24 12:38:05 -080044 maven-version: '{maven-version}'
Anaël Clossonabbafb52017-02-09 17:55:10 +010045 pom: '{pom}'
Anaël Closson09b59032017-02-16 15:44:51 +010046 goals: 'clean deploy -B -P {mvn-profile}'
Anaël Clossonabbafb52017-02-09 17:55:10 +010047 settings: '{mvn-settings}'
48 settings-type: cfp
49 global-settings: 'global-settings'
50 global-settings-type: cfp
51 properties:
52 - maven.test.skip=true
Jeremy Phelps48028ab2017-03-28 15:38:24 -050053 - docker.pull.registry=nexus3.onap.org:10001
54 - docker.push.registry=nexus3.onap.org:10002
Anaël Clossonabbafb52017-02-09 17:55:10 +010055
56- builder:
57 name: maven-docker-push-daily
58 builders:
59 - maven-target:
Andrew Grimberge2465882017-02-24 12:38:05 -080060 maven-version: '{maven-version}'
Anaël Clossonabbafb52017-02-09 17:55:10 +010061 pom: '{pom}'
Jessica Wagantallf8f030a2018-05-07 11:13:19 -070062 goals: 'clean deploy -B -P {mvn-profile} {mvn-params}'
Anaël Clossonabbafb52017-02-09 17:55:10 +010063 settings: '{mvn-settings}'
64 settings-type: cfp
65 global-settings: 'global-settings'
66 global-settings-type: cfp
67 properties:
Jeremy Phelps48028ab2017-03-28 15:38:24 -050068 - docker.pull.registry=nexus3.onap.org:10001
69 - docker.push.registry=nexus3.onap.org:10003
Anaël Clossonabbafb52017-02-09 17:55:10 +010070
Anaël Closson63e090e2017-02-15 14:50:45 +010071- builder:
72 name: docker-login
73 builders:
74 - shell: !include-raw: include-docker-login.sh
75
Vanessa Rene Valderrama295975d2018-02-27 15:10:17 -080076- builder:
77 name: publish-pypi
78 builders:
79 - inject:
80 properties-content: PYPI_SERVER={pypi-server}
81 - shell:
82 !include-raw-escape: ../shell/pypi-publish.sh
83
Andrew Grimbergebc710a2017-01-30 12:59:38 -080084# PARAMETERS
85- parameter:
Andrew Grimberg4307a1c2017-03-16 13:00:00 -070086 name: infra-parameters
Andrew Grimbergebc710a2017-01-30 12:59:38 -080087 parameters:
88 - string:
89 name: PROJECT
90 default: '{project}'
91 # yamllint disable rule:line-length
92 description: 'JJB configured PROJECT parameter to identify a Gerrit project'
93 # yamllint enable
94 - string:
95 name: ARCHIVE_ARTIFACTS
96 default: '{artifacts} **/target/surefire-reports/*-output.txt'
97 # yamllint disable rule:line-length
98 description: 'Space separated glob patterns for artifacts to archive to logs hosting'
99 # yamllint enable
100 - string:
101 name: GERRIT_BRANCH
102 default: '{branch}'
103 description: 'JJB configured GERRIT_BRANCH parameter'
104 - string:
105 name: GERRIT_PROJECT
106 default: '{project}'
107 description: 'GERRIT_PROJECT parameter if not given by trigger'
108 - string:
109 name: GERRIT_REFSPEC
110 default: '{refspec}'
111 description: 'GERRIT_REFSPEC parameter if not given by trigger'
112 - string:
113 name: STACK_NAME
114 default: '$JOB_NAME-$BUILD_NUMBER'
115 description: 'Used by Heat to generate a unique stack & vm name'
116
117- parameter:
Jessica Wagantalld25908c2018-03-28 12:06:39 -0700118 name: maven-params
119 parameters:
120 - string:
121 name: MAVEN_PARAMS
122 default: '{mvn-params}'
123 description: Maven parameters to pass to the mvn command.
124
125- parameter:
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800126 name: maven-exec
127 parameters:
128 - string:
129 name: MVN
130 # yamllint disable rule:line-length
131 default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{maven-version}/bin/mvn'
132 # yamllint enable
133 description: 'Maven selector to be used by shell scripts'
134
Gary Wudc3f2952017-08-23 16:48:59 -0700135- parameter:
136 name: docker-image-name
137 parameters:
138 - string:
139 name: DOCKER_IMAGE_NAME
140 # yamllint disable rule:line-length
141 default: '{docker-image-name}'
142 # yamllint enable
143 description: 'Docker image name, e.g. onap/appc'
144
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800145# PROPERTIES
146- property:
Andrew Grimberg4307a1c2017-03-16 13:00:00 -0700147 name: infra-properties
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800148 properties:
149 - build-discarder:
150 days-to-keep: '{build-days-to-keep}'
151 num-to-keep: 40
152 artifact-days-to-keep: -1
153 artifact-num-to-keep: 5
154
155# PUBLISHERS
156- publisher:
157 name: archive-artifacts
158 publishers:
159 - archive:
160 artifacts: '{artifacts}'
161 allow-empty: true
162 fingerprint: true
163 latest-only: true
164
165- publisher:
166 name: email-notification
167 publishers:
168 - email-ext:
169 recipients: 'nobody@open-o.org'
170 reply-to:
171 content-type: default
172 # yamllint disable rule:line-length
173 subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
174 # yamllint enable
175 body: |
176 $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
177
178 Check console output at $BUILD_URL to view the results.
179 unstable: true
180 fixed: true
181 send-to:
182 - developers
183 - recipients
184
185- publisher:
186 name: jacoco-report
187 publishers:
188 - jacoco:
189 exec-pattern: '**/**.exec'
190 class-pattern: '**/classes'
191 source-pattern: '**/src/main/java'
192 # yamllint disable rule:line-length
193 exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
194 # yamllint enable
195 status-update: true
196 targets:
197 - branch:
198 healthy: 10
199 unhealthy: 20
200 - method:
201 healthy: 50
202 unhealthy: 40
203
204- publisher:
JulienBe77903ed2017-07-17 15:30:26 +0200205 name: checkstyle-result
206 publishers:
207 - checkstyle:
208 pattern: '**/checkstyle-result.xml'
209 healthy: 0
210 unhealthy: 100
211 health-threshold: 'high'
212 thresholds:
213 unstable:
214 total-all: 30
215 total-high: 15
216 total-normal: 20
217 total-low: 25
218 new-all: 5
219 new-high: 0
220 new-normal: 2
221 new-low: 5
222
223- publisher:
224 name: checkstyle-result-daily
225 publishers:
226 - checkstyle:
227 pattern: '**/checkstyle-result.xml'
228 healthy: 0
229 unhealthy: 100
230 health-threshold: 'high'
231 thresholds:
232 unstable:
233 total-all: 30
234 total-high: 15
235 total-normal: 20
236 total-low: 25
237 new-all: 1
238 new-high: 0
239 new-normal: 1
240 new-low: 1
241
242- publisher:
Andrew Grimberg4307a1c2017-03-16 13:00:00 -0700243 name: infra-shiplogs
Jeremy Phelpscf6116d2018-04-03 11:15:00 -0500244 # lf-infra macro to finish up a build.
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800245 #
Jeremy Phelpscf6116d2018-04-03 11:15:00 -0500246 # Handles the following:
247 # - Shipping logs to Nexus logs site repository
248 # - Cleanup workspace
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800249 publishers:
250 - postbuildscript:
251 builders:
Jeremy Phelpscf6116d2018-04-03 11:15:00 -0500252 - role: BOTH
253 build-on:
254 - ABORTED
255 - FAILURE
256 - NOT_BUILT
257 - SUCCESS
258 - UNSTABLE
259 build-steps:
260 - lf-infra-sysstat
261 - lf-infra-ship-logs
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800262 mark-unstable-if-failed: true
263 - workspace-cleanup:
Jeremy Phelpscf6116d2018-04-03 11:15:00 -0500264 exclude:
265 # Do not clean up *.jenkins-trigger files for jobs that use a
266 # properties file as input for triggering another build.
267 - '**/*.jenkins-trigger'
268 fail-build: false
269
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800270
271# SCMS
272- scm:
273 name: git-scm
274 scm:
275 - git:
Andrew Grimberg7d5be572017-03-16 12:33:21 -0700276 credentials-id: 'onap-jenkins-ssh'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800277 url: '$GIT_BASE'
278 refspec: ''
279 branches:
Andrew Grimberg1ac7c2d2017-02-08 12:40:56 -0800280 - 'origin/{branch}'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800281 skip-tag: true
282 wipe-workspace: true
283 timeout: 30
284
285- scm:
286 name: gerrit-trigger-scm
287 scm:
288 - git:
Andrew Grimberg7d5be572017-03-16 12:33:21 -0700289 credentials-id: 'onap-jenkins-ssh'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800290 url: '$GIT_BASE'
291 refspec: '{refspec}'
292 branches:
293 - 'origin/$GERRIT_BRANCH'
294 skip-tag: true
295 timeout: 30
296 choosing-strategy: '{choosing-strategy}'
Jeremy Phelps2c76e492017-07-12 13:45:40 -0500297 submodule:
298 recursive: '{submodule-recursive}'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800299
300- scm:
301 name: gerrit-trigger-scm-basedir
302 scm:
303 - git:
Andrew Grimberg7d5be572017-03-16 12:33:21 -0700304 credentials-id: 'onap-jenkins-ssh'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800305 url: '$GIT_BASE'
306 refspec: '{refspec}'
307 branches:
308 - 'origin/$GERRIT_BRANCH'
309 skip-tag: true
310 timeout: 30
311 choosing-strategy: '{choosing-strategy}'
312 basedir: '{basedir}'
313
314- scm:
315 name: git-branch-scm
316 scm:
317 - git:
Andrew Grimberg7d5be572017-03-16 12:33:21 -0700318 credentials-id: 'onap-jenkins-ssh'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800319 url: '$GIT_BASE'
320 refspec: ''
321 branches:
322 - 'origin/{branch}'
323 skip-tag: true
324 timeout: 30
325 wipe-workspace: true
326
Andrew Grimberg1ac7c2d2017-02-08 12:40:56 -0800327- scm:
328 name: git-extra-project
329 scm:
330 - git:
Andrew Grimberg7d5be572017-03-16 12:33:21 -0700331 credentials-id: 'onap-jenkins-ssh'
Andrew Grimberg1ac7c2d2017-02-08 12:40:56 -0800332 url: '$GIT_NO_PROJECT/{project}'
333 refspec: '{refspec}'
334 branches:
335 - 'origin/{branch}'
336 skip-tag: true
337 timeoute: 30
338 wipe-workspace: false
339 basedir: '{checkout-dir}'
340
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800341# TRIGGERS
342
343# This is a single macro to use for all jobs who vote on every (relevant) patch
344# set. Only 'recheck' trigger word is supported, it always triggers the full set
345# of relevant jobs, in order to prevent Jenkins from starting only a subset and
346# still voting Verified+1
347# Arguments:
348# server: name of gerrit server to listen to
349# project: pattern to match triggering projects
350# branch: triggering branch name
351# files: pattern to match triggering filepaths
352- trigger:
353 name: gerrit-trigger-patch-submitted
354 triggers:
355 - gerrit:
356 server-name: '{server}'
357 trigger-on:
358 - patchset-created-event:
359 exclude-drafts: 'false'
360 exclude-trivial-rebase: 'false'
361 exclude-no-code-change: 'false'
362 - draft-published-event
363 - comment-added-contains-event:
364 comment-contains-value: 'recheck'
365 projects:
366 - project-compare-type: 'ANT'
367 project-pattern: '{project}'
368 branches:
369 - branch-compare-type: 'ANT'
370 branch-pattern: '**/{branch}'
371 file-paths:
372 - compare-type: 'ANT'
373 pattern: '{files}'
374
375- trigger:
376 name: gerrit-trigger-patch-merged
377 triggers:
378 - gerrit:
379 server-name: '{server}'
380 trigger-on:
381 - change-merged-event
382 - comment-added-contains-event:
383 comment-contains-value: 'remerge'
384 projects:
385 - project-compare-type: 'ANT'
386 project-pattern: '{project}'
387 branches:
388 - branch-compare-type: 'ANT'
389 branch-pattern: '**/{branch}'
390 file-paths:
391 - compare-type: 'ANT'
392 pattern: '{files}'
393
JulienBe0d8c2c32017-02-16 11:50:48 -0800394- trigger:
Jeremy Phelpsd73b2142018-08-27 15:26:11 -0500395 name: gerrit-trigger-helm-patch-submitted
396 triggers:
397 - gerrit:
398 server-name: '{server}'
399 trigger-on:
400 - patchset-created-event:
401 exclude-drafts: 'false'
402 exclude-trivial-rebase: 'false'
403 exclude-no-code-change: 'false'
404 - draft-published-event
405 - comment-added-contains-event:
406 comment-contains-value: '^verify-helm$'
407 projects:
408 - project-compare-type: 'ANT'
409 project-pattern: '{project}'
410 branches:
411 - branch-compare-type: 'ANT'
412 branch-pattern: '**/{branch}'
413 file-paths:
414 - compare-type: 'ANT'
415 pattern: '{files}'
416
417- trigger:
418 name: gerrit-trigger-helm-patch-merged
419 triggers:
420 - gerrit:
421 server-name: '{server}'
422 trigger-on:
423 - change-merged-event
424 - comment-added-contains-event:
425 comment-contains-value: '^remerge-helm$'
426 projects:
427 - project-compare-type: 'ANT'
428 project-pattern: '{project}'
429 branches:
430 - branch-compare-type: 'ANT'
431 branch-pattern: '**/{branch}'
432 file-paths:
433 - compare-type: 'ANT'
434 pattern: '{files}'
435
436- trigger:
JulienBe0d8c2c32017-02-16 11:50:48 -0800437 name: gerrit-trigger-release-manually
438 triggers:
439 - gerrit:
440 server-name: '{server}'
441 trigger-on:
442 - comment-added-contains-event:
443 comment-contains-value: 'please release'
444 projects:
445 - project-compare-type: 'ANT'
446 project-pattern: '{project}'
447 branches:
448 - branch-compare-type: 'ANT'
449 branch-pattern: '**/{branch}'
450 file-paths:
451 - compare-type: 'ANT'
452 pattern: '**'
453
Anaël Clossonadcb39d2017-03-10 15:39:09 +0100454- trigger:
455 name: trigger-on-build-success
456 triggers:
Anaël Closson41ddffd2017-03-13 13:39:57 +0100457 - reverse:
458 jobs: '{job-name}'
459 result: 'success'
460
Anaël Clossonadcb39d2017-03-10 15:39:09 +0100461
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800462# WRAPPERS
463- wrapper:
464 name: build-timeout
465 wrappers:
466 - timeout:
467 type: absolute
468 timeout: 360
469 fail: true
470
471- wrapper:
Kiran Kamineni9655e0f2018-10-23 16:53:34 -0700472 name: golang110
Kiran Kamineni85b44e82018-03-21 11:14:29 -0700473 wrappers:
474 - raw:
475 xml: |
476 <org.jenkinsci.plugins.golang.GolangBuildWrapper plugin="golang@1.2">
477 <goVersion>Golang 1.10</goVersion>
478 </org.jenkinsci.plugins.golang.GolangBuildWrapper>
479
480- wrapper:
Kiran Kamineni9655e0f2018-10-23 16:53:34 -0700481 name: golang111
482 wrappers:
483 - raw:
484 xml: |
485 <org.jenkinsci.plugins.golang.GolangBuildWrapper plugin="golang@1.2">
486 <goVersion>Golang 1.11</goVersion>
487 </org.jenkinsci.plugins.golang.GolangBuildWrapper>
488
489- wrapper:
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800490 # This wrapper is required for all jobs as it configures the wrappers
491 # needed by the eCOMP infra.
Andrew Grimberg4307a1c2017-03-16 13:00:00 -0700492 name: infra-wrappers
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800493 wrappers:
Jessica Wagantall4fecf312017-04-25 11:40:31 -0700494 - timestamps
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800495 - timeout:
496 type: absolute
497 timeout: '{build-timeout}'
498 timeout-var: 'BUILD_TIMEOUT'
499 fail: true
500 - ssh-agent-credentials:
501 users:
Andrew Grimberg7d5be572017-03-16 12:33:21 -0700502 - 'onap-jenkins-ssh'
Andrew Grimbergebc710a2017-01-30 12:59:38 -0800503 - openstack:
504 single-use: true
gwuadeda5a2018-07-17 14:12:09 -0700505
506- wrapper:
507 # This wrapper is used for docker build jobs to use the dedicated docker
508 # build VM and turn off OpenStack single-use
509 name: infra-wrappers-docker-build
510 wrappers:
511 - timestamps
512 - timeout:
513 type: absolute
514 timeout: '{build-timeout}'
515 timeout-var: 'BUILD_TIMEOUT'
516 fail: true
517 - ssh-agent-credentials:
518 users:
519 - 'onap-jenkins-ssh'
520 - openstack:
521 single-use: false