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