Merge "move nexus repository to parameter with default value"
[releng/builder.git] / jjb / releng-templates.yaml
1 - job-template:
2     name: '{project-name}-release-java'
3
4     # Job template for producing a release candidate by creating a staging repo
5     # in Nexus.
6
7     project-type: maven
8     node: '{build-node}'
9     jdk: '{jdk}'
10
11     logrotate:
12         daysToKeep: '30'
13
14     parameters:
15         - opendaylight-infra-parameters:
16             project: '{project}'
17             branch: '{branch}'
18             refspec: 'refs/heads/{branch}'
19             artifacts: '{archive-artifacts}'
20         - build-tag
21         - stage-id-parameter:
22             stage-id: '{stage-id}'
23
24     scm:
25         - git:
26             credentials-id: 'opendaylight-jenkins-ssh'
27             url: '$GIT_BASE'
28             branches:
29                 - '$BUILD_TAG'
30             skip-tag: true
31             shallow-clone: true
32             wipe-workspace: true
33
34     wrappers:
35         - opendaylight-infra-wrappers:
36             build-timeout: '{build-timeout}'
37
38     prebuilders:
39         - wipe-org-opendaylight-repo
40         - jacoco-nojava-workaround
41         - provide-maven-settings:
42             global-settings-file: 'odl-global-settings'
43             settings-file: 'autorelease-settings'
44
45     maven:
46         maven-name: '{mvn33}'
47         root-pom: 'pom.xml'
48         goals: 'clean deploy -V -B -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r -Djenkins -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage'
49         maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
50         settings: 'autorelease-settings'
51         global-settings: 'odl-global-settings'
52         post-step-run-condition: UNSTABLE
53
54     postbuilders:
55         - releng-stage-release
56
57     publishers:
58         - email-notification:
59             email-prefix: '[releng]'
60         - archive-build:
61             maven-version: '{mvn33}'
62
63
64 - job-template:
65     name: '{project-name}-publish-p2repo'
66
67     # Job template for publishing a p2 repo given a URL to a zipped p2repo.
68
69     project-type: maven
70     node: '{build-node}'
71     jdk: '{jdk}'
72
73     parameters:
74         - opendaylight-infra-parameters:
75             project: '{project}'
76             branch: '{branch}'
77             refspec: 'refs/heads/{branch}'
78             artifacts: '{archive-artifacts}'
79         - p2zip-parameter
80
81     wrappers:
82         - opendaylight-infra-wrappers:
83             build-timeout: '{build-timeout}'
84
85     prebuilders:
86         - wipe-org-opendaylight-repo
87         - jacoco-nojava-workaround
88         - releng-fetch-p2zip-if-necessary:
89             maven-version: '{mvn33}'
90             settings: '{project-settings}'
91             global-settings: 'odl-global-settings'
92         - releng-generate-p2pom
93
94     maven:
95         maven-name: '{mvn33}'
96         root-pom: 'pom.xml'
97         goals: 'clean deploy -V -B -Dmaven.repo.local=/tmp/r'
98         settings: '{project-settings}'
99         global-settings: 'odl-global-settings'
100         post-step-run-condition: UNSTABLE
101
102     postbuilders:
103         - releng-update-p2composite-metadata:
104             maven-version: '{mvn33}'
105             settings: '{project-settings}'
106             global-settings: 'odl-global-settings'
107
108     publishers:
109         - email-notification:
110             email-prefix: '[releng]'
111         - archive-build:
112             maven-version: '{mvn33}'
113
114 # Python Related
115
116 - job-template:
117     name: '{project-name}-verify-python-{stream}'
118
119     # Job template for python verify jobs
120     #
121     # The purpose of this job template is to run tox for projects using this
122     # template.
123     #
124     # Required Variables:
125     #     stream:    release stream (eg. stable-lithium or beryllium)
126     #     branch:    git branch (eg. stable/lithium or master)
127     #     toxdir:    directory containing the project's tox.ini relative to
128     #                the workspace. Empty works if tox.ini is at project root.
129
130     project-type: freestyle
131     node: '{build-node}'
132     concurrent: true
133
134     logrotate:
135         daysToKeep: '7'
136         numToKeep: '-1'
137         artifactDaysToKeep: '-1'
138         artifactNumToKeep: '-1'
139
140     parameters:
141         - opendaylight-infra-parameters:
142             project: '{project}'
143             branch: '{branch}'
144             refspec: 'refs/heads/{branch}'
145             artifacts: '{archive-artifacts}'
146
147     scm:
148         - git:
149             credentials-id: 'opendaylight-jenkins-ssh'
150             url: '$GIT_BASE'
151             basedir: 'repo'
152             refspec: '$GERRIT_REFSPEC'
153             branches:
154                 - 'origin/$GERRIT_BRANCH'
155             skip-tag: true
156             choosing-strategy: 'gerrit'
157
158     wrappers:
159         - opendaylight-infra-wrappers:
160             build-timeout: '{build-timeout}'
161
162     triggers:
163         - gerrit:
164             server-name: 'OpenDaylight'
165             trigger-on:
166                 - patchset-created-event:
167                     exclude-drafts: 'true'
168                     exclude-trivial-rebase: 'false'
169                     exclude-no-code-change: 'true'
170                 - draft-published-event
171                 - comment-added-contains-event:
172                     comment-contains-value: 'recheck'
173                 - comment-added-contains-event:
174                     comment-contains-value: 'reverify'
175             projects:
176               - project-compare-type: 'ANT'
177                 project-pattern: '{project}'
178                 branches:
179                   - branch-compare-type: 'ANT'
180                     branch-pattern: '**/{branch}'
181                 file-paths:
182                     - compare-type: ANT
183                       pattern: '{toxdir}/**'
184
185     builders:
186         - shell: |
187             virtualenv $WORKSPACE/venv-tox
188             source $WORKSPACE/venv-tox/bin/activate
189             pip install --upgrade pip
190             pip install --upgrade tox argparse
191             pip freeze
192             cd $WORKSPACE/repo/{toxdir}
193             tox
194
195     publishers:
196         - email-notification:
197             email-prefix: '[{project}]'
198         - archive-build:
199             maven-version: '{mvn33}'
200
201 - job-template:
202     name: '{project-name}-merge-rtd-{stream}'
203     # Template for ReadTheDocs triggering
204
205     project-type: freestyle
206     node: '{build-node}'
207     concurrent: false
208
209     parameters:
210         - opendaylight-infra-parameters:
211             project: '{project}'
212             branch: '{branch}'
213             refspec: 'refs/heads/{branch}'
214             artifacts: '{archive-artifacts}'
215
216     wrappers:
217         - opendaylight-infra-wrappers:
218             build-timeout: '{build-timeout}'
219
220     triggers:
221         - gerrit-trigger-patch-merged:
222             name: '{project}'
223             branch: '{branch}'
224
225     builders:
226         - shell: |
227             curl -X POST https://readthedocs.org/build/{rtdproject}
228
229     publishers:
230         - email-notification:
231             email-prefix: '[{project}]'
232         - archive-build:
233             maven-version: '{mvn33}'
234
235 # Node related
236
237 - job-template:
238     name: '{project-name}-verify-node-{stream}'
239
240     # Job template for python verify jobs
241     #
242     # The purpose of this job template is to run node tests for projects using
243     # this template. It uses python virtualenv to install nodeenv and create a
244     # virtualenv for nodejs.
245     #
246     # Required Variables:
247     #     stream:    release stream (eg. stable-lithium or beryllium)
248     #     branch:    git branch (eg. stable/lithium or master)
249     #     nodedir:   directory of nodejs project to run node test against
250     #     nodever:   version of node to install in virtualenv
251
252     project-type: freestyle
253     node: '{build-node}'
254     concurrent: true
255
256     logrotate:
257         daysToKeep: '7'
258         numToKeep: '-1'
259         artifactDaysToKeep: '-1'
260         artifactNumToKeep: '-1'
261
262     parameters:
263         - opendaylight-infra-parameters:
264             project: '{project}'
265             branch: '{branch}'
266             refspec: 'refs/heads/{branch}'
267             artifacts: '{archive-artifacts}'
268
269     scm:
270         - git:
271             credentials-id: 'opendaylight-jenkins-ssh'
272             url: '$GIT_BASE'
273             basedir: 'repo'
274             refspec: '$GERRIT_REFSPEC'
275             branches:
276                 - 'origin/$GERRIT_BRANCH'
277             skip-tag: true
278             choosing-strategy: 'gerrit'
279
280     wrappers:
281         - opendaylight-infra-wrappers:
282             build-timeout: '{build-timeout}'
283
284     triggers:
285         - gerrit:
286             server-name: 'OpenDaylight'
287             trigger-on:
288                 - patchset-created-event:
289                     exclude-drafts: 'true'
290                     exclude-trivial-rebase: 'false'
291                     exclude-no-code-change: 'true'
292                 - draft-published-event
293                 - comment-added-contains-event:
294                     comment-contains-value: 'recheck'
295                 - comment-added-contains-event:
296                     comment-contains-value: 'reverify'
297             projects:
298               - project-compare-type: 'ANT'
299                 project-pattern: '{project}'
300                 branches:
301                   - branch-compare-type: 'ANT'
302                     branch-pattern: '**/{branch}'
303                 file-paths:
304                     - compare-type: ANT
305                       pattern: '{nodedir}/**'
306
307     builders:
308         - shell: |
309             #!/bin/bash
310             # Prepare Python
311             virtualenv $WORKSPACE/venv-python
312             source $WORKSPACE/venv-python/bin/activate
313             pip install --upgrade pip
314             pip install --upgrade tox argparse nodeenv
315             pip freeze
316
317             # Prepare node
318             nodeenv --node={nodever} --prebuilt $WORKSPACE/venv-node
319             source $WORKSPACE/venv-node/bin/activate
320             cd $WORKSPACE/repo/{nodedir}
321             npm install
322             npm test
323
324     publishers:
325         - email-notification:
326             email-prefix: '[{project}]'
327         - archive-build:
328             maven-version: '{mvn33}'