Merge "Fix genius CSIT jobs"
[releng/builder.git] / jjb / integration / distribution / distribution-jobs.yaml
1 ---
2 - project:
3     name: distribution-jobs
4
5 - job-template:
6     name: 'distribution-verify-{stream}'
7
8     project-type: freestyle
9     node: centos7-builder-8c-8g
10     concurrent: true
11     jdk: '{jre}'
12
13     properties:
14       - opendaylight-infra-properties:
15           build-days-to-keep: '{build-days-to-keep}'
16
17     parameters:
18       - opendaylight-infra-parameters:
19           os-cloud: '{os-cloud}'
20           project: '{project}'
21           branch: '{branch}'
22           refspec: 'refs/heads/{branch}'
23           artifacts: '{archive-artifacts}'
24       - integration-patch-refspec:
25           branch: '$GERRIT_REFSPEC'
26
27     scm:
28       - gerrit-trigger-scm:
29           refspec: '$PATCHREFSPEC'
30           choosing-strategy: 'gerrit'
31
32     wrappers:
33       - opendaylight-infra-wrappers:
34           build-timeout: '{build-timeout}'
35
36     triggers:
37       - gerrit-trigger-patch-submitted:
38           gerrit-server-name: '{gerrit-server-name}'
39           project: '{project}'
40           branch: '{branch}'
41           files: '**'
42
43     builders:
44       - wipe-org-opendaylight-repo
45       - provide-maven-settings:
46           global-settings-file: 'global-settings'
47           settings-file: 'integration-settings'
48       - maven-target:
49           maven-version: mvn33
50           pom: pom.xml
51           goals: |
52               clean install dependency:tree -DoutputFile=dependency_tree.txt
53               -Dstream={stream}
54               -Dsft.heap.max=4g
55               {opendaylight-infra-mvn-opts}
56           # {opendaylight-infra-parallel-mvn-opts} is bad when there are multiple big features in SFT.
57           java-opts:
58             - '-Xmx1024m -XX:MaxPermSize=256m'
59           settings: integration-settings
60           settings-type: cfp
61           global-settings: global-settings
62           global-settings-type: cfp
63
64     publishers:
65       - findbugs
66       - lf-jacoco-report
67       - lf-infra-publish
68       - email-notification:
69           email-recipients: '{email-recipients}'
70           email-prefix: '[int/dist]'
71
72 - job-template:
73     name: 'distribution-merge-{stream}'
74
75     # Need to keep jobs that deploy to Nexus at end of build as Maven
76     # projects. Maybe reconsider this once upstream moves deploy to a
77     # separate lifecycle:
78     #     https://issues.apache.org/jira/browse/MNG-5666
79
80     project-type: maven
81     node: 'centos7-builder-8c-8g'
82     jdk: '{jre}'
83
84     properties:
85       - opendaylight-infra-properties:
86           build-days-to-keep: '{build-days-to-keep}'
87
88     parameters:
89       - opendaylight-infra-parameters:
90           os-cloud: '{os-cloud}'
91           project: '{project}'
92           branch: '{branch}'
93           refspec: 'refs/heads/{branch}'
94           artifacts: '{archive-artifacts}'
95       - distribution-karaf-version:
96           karaf-version: '{karaf-version}'
97
98     scm:
99       - gerrit-trigger-scm:
100           refspec: ''
101           choosing-strategy: 'default'
102
103     wrappers:
104       - opendaylight-infra-wrappers:
105           build-timeout: '{build-timeout}'
106
107     triggers:
108       - gerrit-trigger-patch-merged:
109           gerrit-server-name: '{gerrit-server-name}'
110           name: 'integration/distribution'
111           branch: '{branch}'
112
113     prebuilders:
114       - wipe-org-opendaylight-repo
115       - jacoco-nojava-workaround
116       - provide-maven-settings:
117           global-settings-file: 'global-settings'
118           settings-file: 'integration-settings'
119       - integration-set-variables
120       - distribute-build-url:
121           path: '$KARAF_ARTIFACT/src/main/assembly'
122
123     maven:
124       maven-name: 'mvn33'
125       root-pom: 'pom.xml'
126       goals: >
127           clean install dependency:tree -DoutputFile=dependency_tree.txt -V -B
128           -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
129           -Dsft.heap.max=4g
130           -Djenkins -Dmerge -Dstream={stream}
131       maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
132       settings: 'integration-settings'
133       settings-type: cfp
134       global-settings: 'global-settings'
135       global-settings-type: cfp
136
137     postbuilders:
138       - conditional-step:
139           condition-kind: file-exists
140           condition-filename: deploy-site.xml
141           condition-basedir: workspace
142
143           # The strategy here is intentional to run Maven site:deploy twice
144           # once using regular pom.xml to produce a staged-site which is
145           # then used by deploy-site.xml to push to Nexus. This is a
146           # workaround to Maven Site's default linking code which creates
147           # incorrect URLs for sites due to auto-detection assuming your
148           # project is configured in a certain way which ODL is not.
149           steps:
150             - maven-target:
151                 maven-version: 'mvn33'
152                 pom: pom.xml
153                 goals: 'site:deploy -V -B -Dstream={stream}'
154                 java-opts:
155                   - '-Xmx2g'
156                 settings: 'integration-settings'
157                 settings-type: cfp
158                 global-settings: 'global-settings'
159                 global-settings-type: cfp
160             - maven-target:
161                 maven-version: 'mvn33'
162                 pom: deploy-site.xml
163                 goals: 'site:deploy -V -B -Dstream={stream}'
164                 java-opts:
165                   - '-Xmx2g'
166                 settings: 'integration-settings'
167                 settings-type: cfp
168                 global-settings: 'global-settings'
169                 global-settings-type: cfp
170       - integration-compare-distributions
171     # TODO: the output of the above command is not *friendly* for the reader because the most important info
172     # is listed last. This is fine/best for command line output, but for keeping in a file it would be better
173     # to put the summary at the beginning of the file. Some bash magic can be done here to make that happen.
174
175     reporters:
176       - findbugs
177
178     publishers:
179       - maven-deploy:
180           id: ''
181           unique-version: true
182           deploy-unstable: false
183       - lf-jacoco-report
184       - lf-infra-publish
185       - email-notification:
186           email-recipients: '{email-recipients}'
187           email-prefix: '[int/dist]'
188
189 - job-template:
190     name: 'distribution-check-{stream}'
191
192     ######################
193     # Default parameters #
194     ######################
195
196     mvn-version: mvn33
197
198     #####################
199     # Job Configuration #
200     #####################
201
202     # Like a {project}-distribution-check, but few steps less as there is no upstream project involved.
203     disabled: false
204
205     project-type: freestyle
206     node: 'centos7-builder-8c-8g'
207     concurrent: true
208     jdk: '{java-version}'
209
210     properties:
211       - opendaylight-infra-properties:
212           build-days-to-keep: '{build-days-to-keep}'
213
214     parameters:
215       - opendaylight-infra-parameters:
216           os-cloud: '{os-cloud}'
217           project: '{project}'
218           branch: '{branch}'
219           refspec: 'refs/heads/{branch}'
220           artifacts: '{archive-artifacts}'
221       - distribution-karaf-version:
222           karaf-version: '{karaf-version}'
223       - maven-exec:
224           maven-version: mvn33
225
226     scm:
227       - integration-gerrit-scm:
228           basedir: 'distribution'
229           refspec: '$GERRIT_REFSPEC'
230           branch: '{branch}'
231
232     wrappers:
233       - opendaylight-infra-wrappers:
234           # Distro-check jobs typically run within 10 - 30 minutes
235           # with 45 minutes being the occassional edge case.
236           # enforce a 60 minute limit to ensure stuck jobs get
237           # cleared up sooner.
238           # Double that as Karaf 3+4 may take longer.
239           build-timeout: '120'
240
241     triggers:
242       - gerrit-trigger-patch-submitted:
243           gerrit-server-name: '{gerrit-server-name}'
244           project: '{project}'
245           branch: '{branch}'
246           files: '**'
247
248     builders:
249       - distribution-check-wipe
250       - distribution-check-build-project:
251           pom: 'distribution/pom.xml'
252           mvn-opts: '{opendaylight-infra-mvn-opts}'
253           mvn-version: '{mvn-version}'
254           # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
255       - distribution-check-verify-groupid:
256           gerrit-project: 'integration'
257       - distribution-check-delete-snapshots
258       - distribution-check-configure-remotes
259       - distribution-check-repeat-project-build:
260           pom: 'distribution/pom.xml'
261           mvn-opts: '{opendaylight-infra-mvn-opts}'
262           mvn-version: '{mvn-version}'
263           # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
264       - integration-set-variables
265       - distribution-check-warn-9191
266       - distribution-check-warn-9192
267       - integration-upload-distribution:
268           dist-pom: distribution/pom.xml
269       - distribution-check-bootup
270
271     publishers:
272       - email-notification:
273           email-recipients: '{email-recipients}'
274           email-prefix: '[{project-name}]'
275       - integration-csit-archive-build
276       - lf-infra-publish
277
278 - job-template:
279     name: 'distribution-deploy-{stream}'
280     # Goal: Verify distribution starts with no issues when all features are loaded.
281     # Operation: This job deploys the controller installing odl-integration-all.
282     # FIXME: List required variables.
283
284     project-type: freestyle
285     node: centos7-builder-4c-4g
286     concurrent: false
287
288     properties:
289       - opendaylight-infra-properties:
290           build-days-to-keep: '{build-days-to-keep}'
291
292     parameters:
293       - opendaylight-infra-parameters:
294           os-cloud: '{os-cloud}'
295           project: '{project}'
296           branch: '{branch}'
297           refspec: 'refs/heads/{branch}'
298           artifacts: '{archive-artifacts}'
299       - integration-distribution-branch:
300           branch: '{branch}'
301       - integration-bundle-url:
302           bundle-url: '{bundle-url}'
303       - integration-jdk-version:
304           jdkversion: '{jre}'
305       - distribution-karaf-version:
306           karaf-version: '{karaf-version}'
307
308     wrappers:
309       - opendaylight-infra-wrappers:
310           build-timeout: '{build-timeout}'
311
312     # TODO: Trigger from sanity (instead of weekly) when this job is stable for {stream}.
313
314     builders:
315       - distribution-deploy-verify
316
317     publishers:
318       - email-notification:
319           email-recipients: '{email-recipients}'
320           email-prefix: '[int/dist]'
321       - integration-csit-archive-build
322       - lf-infra-publish
323
324 - job-template:
325     name: 'distribution-offline-{stream}'
326     # Goal: Verify distribution can start with no internet connection.
327     # Operation: This job deploys the controller removing any external repository definition.
328     # FIXME: List required variables.
329
330     project-type: freestyle
331     node: centos7-builder-4c-4g
332     concurrent: false
333
334     properties:
335       - opendaylight-infra-properties:
336           build-days-to-keep: '{build-days-to-keep}'
337
338     parameters:
339       - opendaylight-infra-parameters:
340           os-cloud: '{os-cloud}'
341           project: '{project}'
342           branch: '{branch}'
343           refspec: 'refs/heads/{branch}'
344           artifacts: '{archive-artifacts}'
345       - integration-distribution-branch:
346           branch: '{branch}'
347       - integration-bundle-url:
348           bundle-url: '{bundle-url}'
349       - integration-jdk-version:
350           jdkversion: '{jre}'
351       - distribution-karaf-version:
352           karaf-version: '{karaf-version}'
353
354     wrappers:
355       - opendaylight-infra-wrappers:
356           build-timeout: '{build-timeout}'
357
358     # TODO: Trigger from sanity (instead of weekly) when this job is stable for {stream}.
359
360     builders:
361       - distribution-deploy-offline
362
363     publishers:
364       - email-notification:
365           email-recipients: '{email-recipients}'
366           email-prefix: '[int/dist]'
367       - integration-csit-archive-build
368       - lf-infra-publish