Merge "Enable vfc gvnfm vnfrmgr scan job"
[ci-management.git] / jjb / global-macros.yaml
1 ---
2 # Global macros
3
4 # vim: sw=2 ts=2 sts=2 et :
5
6 # BUILDERS
7 - builder:
8     name: ci-management-check-unicode
9     builders:
10       - shell: |
11           $WORKSPACE/scripts/check-unicode.sh jjb/
12
13 - builder:
14     name: provide-maven-settings
15     builders:
16       - config-file-provider:
17           files:
18             - file-id: '{global-settings-file}'
19               variable: 'GLOBAL_SETTINGS_FILE'
20             - file-id: '{settings-file}'
21               variable: 'SETTINGS_FILE'
22
23 # call maven-target builder with a goal of --version to force Jenkins to
24 # install the needed maven version
25 - builder:
26     name: maven-install
27     builders:
28       - maven-target:
29           maven-version: '{maven-version}'
30           goals: '--version'
31
32 - builder:
33     name: maven-docker-push-release
34     builders:
35       - maven-target:
36           maven-version: '{maven-version}'
37           pom: '{pom}'
38           goals: 'clean deploy -B -P {mvn-profile}'
39           settings: '{mvn-settings}'
40           settings-type: cfp
41           global-settings: 'global-settings'
42           global-settings-type: cfp
43           properties:
44             - maven.test.skip=true
45             - docker.pull.registry=nexus3.onap.org:10001
46             - docker.push.registry=nexus3.onap.org:10002
47
48 - builder:
49     name: maven-docker-push-daily
50     builders:
51       - maven-target:
52           maven-version: '{maven-version}'
53           pom: '{pom}'
54           goals: 'clean deploy -B -P {mvn-profile}'
55           settings: '{mvn-settings}'
56           settings-type: cfp
57           global-settings: 'global-settings'
58           global-settings-type: cfp
59           properties:
60             - maven.test.skip=true
61             - docker.pull.registry=nexus3.onap.org:10001
62             - docker.push.registry=nexus3.onap.org:10003
63
64 - builder:
65     name: docker-login
66     builders:
67       - shell: !include-raw: include-docker-login.sh
68
69 # PARAMETERS
70 - parameter:
71     name: infra-parameters
72     parameters:
73       - string:
74           name: PROJECT
75           default: '{project}'
76           # yamllint disable rule:line-length
77           description: 'JJB configured PROJECT parameter to identify a Gerrit project'
78           # yamllint enable
79       - string:
80           name: ARCHIVE_ARTIFACTS
81           default: '{artifacts} **/target/surefire-reports/*-output.txt'
82           # yamllint disable rule:line-length
83           description: 'Space separated glob patterns for artifacts to archive to logs hosting'
84           # yamllint enable
85       - string:
86           name: GERRIT_BRANCH
87           default: '{branch}'
88           description: 'JJB configured GERRIT_BRANCH parameter'
89       - string:
90           name: GERRIT_PROJECT
91           default: '{project}'
92           description: 'GERRIT_PROJECT parameter if not given by trigger'
93       - string:
94           name: GERRIT_REFSPEC
95           default: '{refspec}'
96           description: 'GERRIT_REFSPEC parameter if not given by trigger'
97       - string:
98           name: STACK_NAME
99           default: '$JOB_NAME-$BUILD_NUMBER'
100           description: 'Used by Heat to generate a unique stack & vm name'
101
102 - parameter:
103     name: maven-exec
104     parameters:
105       - string:
106           name: MVN
107           # yamllint disable rule:line-length
108           default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{maven-version}/bin/mvn'
109           # yamllint enable
110           description: 'Maven selector to be used by shell scripts'
111
112 # PROPERTIES
113 - property:
114     name: infra-properties
115     properties:
116       - build-discarder:
117           days-to-keep: '{build-days-to-keep}'
118           num-to-keep: 40
119           artifact-days-to-keep: -1
120           artifact-num-to-keep: 5
121
122 # PUBLISHERS
123 - publisher:
124     name: archive-artifacts
125     publishers:
126       - archive:
127           artifacts: '{artifacts}'
128           allow-empty: true
129           fingerprint: true
130           latest-only: true
131
132 - publisher:
133     name: email-notification
134     publishers:
135       - email-ext:
136           recipients: 'nobody@open-o.org'
137           reply-to:
138           content-type: default
139           # yamllint disable rule:line-length
140           subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
141           # yamllint enable
142           body: |
143             $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
144
145             Check console output at $BUILD_URL to view the results.
146           unstable: true
147           fixed: true
148           send-to:
149             - developers
150             - recipients
151
152 - publisher:
153     name: jacoco-report
154     publishers:
155       - jacoco:
156           exec-pattern: '**/**.exec'
157           class-pattern: '**/classes'
158           source-pattern: '**/src/main/java'
159           # yamllint disable rule:line-length
160           exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
161           # yamllint enable
162           status-update: true
163           targets:
164             - branch:
165                 healthy: 10
166                 unhealthy: 20
167             - method:
168                 healthy: 50
169                 unhealthy: 40
170
171 - publisher:
172     name: checkstyle-result
173     publishers:
174       - checkstyle:
175           pattern: '**/checkstyle-result.xml'
176           healthy: 0
177           unhealthy: 100
178           health-threshold: 'high'
179           thresholds:
180             unstable:
181               total-all: 30
182               total-high: 15
183               total-normal: 20
184               total-low: 25
185               new-all: 5
186               new-high: 0
187               new-normal: 2
188               new-low: 5
189
190 - publisher:
191     name: checkstyle-result-daily
192     publishers:
193       - checkstyle:
194           pattern: '**/checkstyle-result.xml'
195           healthy: 0
196           unhealthy: 100
197           health-threshold: 'high'
198           thresholds:
199             unstable:
200               total-all: 30
201               total-high: 15
202               total-normal: 20
203               total-low: 25
204               new-all: 1
205               new-high: 0
206               new-normal: 1
207               new-low: 1
208
209 - publisher:
210     name: infra-shiplogs
211     # To archive things, the job will need to create an "archives" directory in
212     # the workspace and this macro will handle copying the contents of the
213     # archives directory.
214     #
215     # Uses the build parameter ARCHIVE_ARTIFACTS if not empty to find files to
216     # archive. You can pass globstar patterns for example "**/*.xml **/*.log" as
217     # the archive pattern. This is a space separated list of files to archive.
218     #
219     # Also ensure that the workspace is cleaned up at the end of the build.
220     publishers:
221       - postbuildscript:
222           builders:
223             - shell: !include-raw-escape: include-raw-deploy-archives.sh
224             - maven-target:
225                 maven-version: '{maven-version}'
226                 pom: '.archives/deploy-archives.xml'
227                 goals: 'clean deploy -V -B -q -Dmaven.repo.local=/tmp/r'
228                 settings: 'jenkins-log-archives-settings'
229                 settings-type: cfp
230                 global-settings: 'global-settings'
231                 global-settings-type: cfp
232             - description-setter:
233                 regexp: '^Build logs: .*'
234           script-only-if-succeeded: false
235           script-only-if-failed: false
236           mark-unstable-if-failed: true
237       - workspace-cleanup:
238           fail-build: false`
239
240 # SCMS
241 - scm:
242     name: git-scm
243     scm:
244       - git:
245           credentials-id: 'onap-jenkins-ssh'
246           url: '$GIT_BASE'
247           refspec: ''
248           branches:
249             - 'origin/{branch}'
250           skip-tag: true
251           wipe-workspace: true
252           timeout: 30
253
254 - scm:
255     name: gerrit-trigger-scm
256     scm:
257       - git:
258           credentials-id: 'onap-jenkins-ssh'
259           url: '$GIT_BASE'
260           refspec: '{refspec}'
261           branches:
262             - 'origin/$GERRIT_BRANCH'
263           skip-tag: true
264           timeout: 30
265           choosing-strategy: '{choosing-strategy}'
266           submodule:
267             recursive: '{submodule-recursive}'
268
269 - scm:
270     name: gerrit-trigger-scm-basedir
271     scm:
272       - git:
273           credentials-id: 'onap-jenkins-ssh'
274           url: '$GIT_BASE'
275           refspec: '{refspec}'
276           branches:
277             - 'origin/$GERRIT_BRANCH'
278           skip-tag: true
279           timeout: 30
280           choosing-strategy: '{choosing-strategy}'
281           basedir: '{basedir}'
282
283 - scm:
284     name: git-branch-scm
285     scm:
286       - git:
287           credentials-id: 'onap-jenkins-ssh'
288           url: '$GIT_BASE'
289           refspec: ''
290           branches:
291             - 'origin/{branch}'
292           skip-tag: true
293           timeout: 30
294           wipe-workspace: true
295
296 - scm:
297     name: git-extra-project
298     scm:
299       - git:
300           credentials-id: 'onap-jenkins-ssh'
301           url: '$GIT_NO_PROJECT/{project}'
302           refspec: '{refspec}'
303           branches:
304             - 'origin/{branch}'
305           skip-tag: true
306           timeoute: 30
307           wipe-workspace: false
308           basedir: '{checkout-dir}'
309
310 # TRIGGERS
311
312 # This is a single macro to use for all jobs who vote on every (relevant) patch
313 # set. Only 'recheck' trigger word is supported, it always triggers the full set
314 # of relevant jobs, in order to prevent Jenkins from starting only a subset and
315 # still voting Verified+1
316 # Arguments:
317 #     server: name of gerrit server to listen to
318 #     project: pattern to match triggering projects
319 #     branch: triggering branch name
320 #     files: pattern to match triggering filepaths
321 - trigger:
322     name: gerrit-trigger-patch-submitted
323     triggers:
324       - gerrit:
325           server-name: '{server}'
326           trigger-on:
327             - patchset-created-event:
328                 exclude-drafts: 'false'
329                 exclude-trivial-rebase: 'false'
330                 exclude-no-code-change: 'false'
331             - draft-published-event
332             - comment-added-contains-event:
333                 comment-contains-value: 'recheck'
334           projects:
335             - project-compare-type: 'ANT'
336               project-pattern: '{project}'
337               branches:
338                 - branch-compare-type: 'ANT'
339                   branch-pattern: '**/{branch}'
340               file-paths:
341                 - compare-type: 'ANT'
342                   pattern: '{files}'
343
344 - trigger:
345     name: gerrit-trigger-patch-merged
346     triggers:
347       - gerrit:
348           server-name: '{server}'
349           trigger-on:
350             - change-merged-event
351             - comment-added-contains-event:
352                 comment-contains-value: 'remerge'
353           projects:
354             - project-compare-type: 'ANT'
355               project-pattern: '{project}'
356               branches:
357                 - branch-compare-type: 'ANT'
358                   branch-pattern: '**/{branch}'
359               file-paths:
360                 - compare-type: 'ANT'
361                   pattern: '{files}'
362
363 - trigger:
364     name: gerrit-trigger-release-manually
365     triggers:
366       - gerrit:
367           server-name: '{server}'
368           trigger-on:
369             - comment-added-contains-event:
370                 comment-contains-value: 'please release'
371           projects:
372             - project-compare-type: 'ANT'
373               project-pattern: '{project}'
374               branches:
375                 - branch-compare-type: 'ANT'
376                   branch-pattern: '**/{branch}'
377               file-paths:
378                 - compare-type: 'ANT'
379                   pattern: '**'
380
381 - trigger:
382     name: trigger-on-build-success
383     triggers:
384       - reverse:
385           jobs: '{job-name}'
386           result: 'success'
387
388
389 # WRAPPERS
390 - wrapper:
391     name: build-timeout
392     wrappers:
393       - timeout:
394           type: absolute
395           timeout: 360
396           fail: true
397
398 - wrapper:
399     # This wrapper is required for all jobs as it configures the wrappers
400     # needed by the eCOMP infra.
401     name: infra-wrappers
402     wrappers:
403       - timestamps
404       - timeout:
405           type: absolute
406           timeout: '{build-timeout}'
407           timeout-var: 'BUILD_TIMEOUT'
408           fail: true
409       - ssh-agent-credentials:
410           users:
411             - 'onap-jenkins-ssh'
412       - openstack:
413           single-use: true