Merge "Clean up hwvtep csit combinations and triggers"
[releng/builder.git] / jjb / integration / integration-test-jobs.yaml
1 ---
2 - project:
3     name: integration-test
4     project: integration/test
5     project-name: integration-test
6     test-branch: master
7     jobs:
8       - '{project-name}-verify-tox-master'
9       - 'integration-csit-verify-1node-library'
10       - 'integration-distribution-test-{stream}'
11       - 'integration-sanity-test-{stream}'
12       - 'integration-patch-test-{stream}'
13       - 'integration-multipatch-test-{stream}'
14       - 'integration-distribution-weekly-test-trigger-{stream}'
15       - 'integration-distribution-high-frequency-test-trigger-{stream}'
16
17     # CSIT Lists in releng-defaults.yaml
18     stream:
19       - nitrogen:
20           branch: 'master'
21           jre: 'openjdk8'
22           csit-list: '{csit-list-nitrogen}'
23           csit-sanity-list: '{csit-sanity-list-nitrogen}'
24           csit-weekly-list: '{csit-weekly-list-nitrogen}'
25           schedule-weekly: 'H 12 * * 0'
26           csit-high-frequency-list: ''
27           schedule-high-frequency: ''
28
29       - carbon:
30           branch: 'stable/carbon'
31           jdk: 'openjdk8'
32           jre: 'openjdk8'
33           csit-list: '{csit-list-carbon}'
34           csit-sanity-list: '{csit-sanity-list-carbon}'
35           csit-weekly-list: '{csit-weekly-list-carbon}'
36           schedule-weekly: 'H 12 * * 0'
37           csit-high-frequency-list: '{csit-high-frequency-list-carbon}'
38           schedule-high-frequency: 'H H/4 * * *'
39
40       - boron:
41           branch: 'stable/boron'
42           jdk: 'openjdk8'
43           jre: 'openjdk8'
44           csit-list: '{csit-list-boron}'
45           csit-sanity-list: '{csit-sanity-list-boron}'
46           csit-weekly-list: '{csit-weekly-list-boron}'
47           schedule-weekly: 'H 12 * * 0'
48           csit-high-frequency-list: ''
49           schedule-high-frequency: ''
50
51       - beryllium:
52           branch: 'stable/beryllium'
53           jdk: 'openjdk7'
54           jre: 'openjdk7'
55           csit-list: '{csit-list-beryllium}'
56           csit-sanity-list: ''
57           csit-weekly-list: ''
58           schedule-weekly: 'H 12 * * 0'
59           csit-high-frequency-list: ''
60           schedule-high-frequency: ''
61
62     # tools system image
63     tools_system_image: Ubuntu 14.04 - mininet-ovs-25 - 20170210-0300
64
65 # Template: integration-csit-verify-1node-library
66 # Goal: Verify changes in csit folder not covered by projects suite verify jobs (e.g. libraries or variables)
67 # Operation: This job template performs a base openflow test when there is a change in the libraries folder
68
69 - job-template:
70     name: 'integration-csit-verify-1node-library'
71
72     project-type: freestyle
73     node: centos7-robot-2c-2g
74
75     # {stream} is already defined as a composite object, it cannot be overriden.
76     dist-stream: boron
77     # This is not a template, so define branch, scope and jre for distribution to test with.
78     branch: stable/boron
79     scope: only
80     jre: openjdk8
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: '{test-branch}'
91           refspec: 'refs/heads/{test-branch}'
92           artifacts: '{archive-artifacts}'
93       - integration-distribution-branch:
94           branch: '{branch}'
95       - integration-distribution-stream:
96           stream: '{dist-stream}'
97       - integration-bundleurl:
98           bundleurl: '{bundleurl}'
99       - integration-controller-scope:
100           controller-scope: '{scope}'
101       - integration-controller-features:
102           controller-features: >
103               odl-clustering-test-app,
104               odl-openflowplugin-flow-services-ui,
105               odl-openflowplugin-app-table-miss-enforcer,
106               odl-bgpcep-pcep,
107               odl-bgpcep-bgp,
108               odl-netconf-connector-all
109       # when upgrading to carbon you should replace odl-netconf-connector-all with odl-netconf-topology
110       # and change USE_NETCONF_CONNECTOR to False in test-options
111       - integration-test-options:
112           test-options: '-v TIMEOUT_BUG_4220:10s -v USE_NETCONF_CONNECTOR:True'
113       - integration-stream-test-plan:
114           stream-test-plan: 'test-libraries-{dist-stream}.txt'
115       - integration-test-plan:
116           test-plan: 'test-libraries.txt'
117       - integration-patch-refspec:
118           branch: '$GERRIT_REFSPEC'
119       - integration-jdk-version:
120           jdkversion: '{jre}'
121
122     scm:
123       - integration-gerrit-scm:
124           basedir: 'test'
125           refspec: '$PATCHREFSPEC'
126           branch: '{test-branch}'
127
128     wrappers:
129       - opendaylight-infra-wrappers:
130           build-timeout: '{build-timeout}'
131
132     triggers:
133       - integration-trigger-patch-submitted:
134           server: '{server-name}'
135           project: '{project}'
136           branch: '{test-branch}'
137           files: 'csit/libraries/*'
138
139     builders:
140       - integration-infra-stack:
141           stack-template: '{stack-template}'
142           vm_0_count: '1'
143           vm_0_flavor: '{odl_system_flavor}'
144           vm_0_image: '{odl_system_image}'
145           vm_1_count: '{tools_system_count}'
146           vm_1_flavor: '{tools_system_flavor}'
147           vm_1_image: '{tools_system_image}'
148       - integration-install-robotframework
149       - inject:
150           properties-file: 'env.properties'
151       - integration-get-slave-addresses
152       - inject:
153           properties-file: 'slave_addresses.txt'
154       - integration-get-bundle-vars
155       - inject:
156           properties-file: 'bundle_vars.txt'
157       - integration-deploy-controller-run-test
158       - integration-cleanup-tmp
159
160     publishers:
161       - integration-robot:
162           unstable-if: 0.0
163           pass-if: 100.0
164       - email-notification:
165           email-recipients: '{email-recipients}'
166           email-prefix: '[integration]'
167       - integration-csit-archive-build
168       - opendaylight-infra-shiplogs:
169           maven-version: 'mvn33'
170
171 # Template: integration-distribution-test-{stream}
172 # Goal: Verify a distribution through all system test available
173 # Operation: This template takes a distribution and passes all available system test
174
175 - job-template:
176     name: 'integration-distribution-test-{stream}'
177
178     project-type: freestyle
179     node: centos7-robot-2c-2g
180
181     properties:
182       - opendaylight-infra-properties:
183           build-days-to-keep: '{build-days-to-keep}'
184
185     parameters:
186       - integration-bundleurl:
187           bundleurl: '{bundleurl}'
188       - integration-jdk-version:
189           jdkversion: '{jre}'
190
191     builders:
192       - trigger-builds:
193           - project: '{csit-list}'
194             block: true
195             predefined-parameters:
196               BUNDLEURL=$BUNDLEURL
197
198     publishers:
199       - email-notification:
200           email-recipients: '{email-recipients}'
201           email-prefix: '[integration]'
202
203 # Template: integration-sanity-test-{stream}
204 # Goal: Verify a distribution through sanity test
205 # Operation: This template takes a distribution and passes sanity test
206
207 - job-template:
208     name: 'integration-sanity-test-{stream}'
209
210     project-type: freestyle
211     node: centos7-robot-2c-2g
212
213     properties:
214       - opendaylight-infra-properties:
215           build-days-to-keep: '{build-days-to-keep}'
216
217     parameters:
218       - integration-bundleurl:
219           bundleurl: '{bundleurl}'
220       - integration-jdk-version:
221           jdkversion: '{jre}'
222
223     builders:
224       - trigger-builds:
225           - project: '{csit-sanity-list}'
226             block: true
227             predefined-parameters:
228               BUNDLEURL=$BUNDLEURL
229
230     publishers:
231       - email-notification:
232           email-recipients: '{email-recipients}'
233           email-prefix: '[integration]'
234
235 # Template: integration-patch-test-{stream}
236 # Goal: Build a patch and run all available system test on a distribution containing the change
237 # Operation: This job template builds a patch, creates a distribution containing the patch, and
238 # triggers the distribution test when test-integration is used in gerrit comments
239
240 - job-template:
241     name: 'integration-patch-test-{stream}'
242
243     project-type: freestyle
244     node: centos7-java-builder-2c-8g
245     jdk: '{jdk}'
246
247     properties:
248       - opendaylight-infra-properties:
249           build-days-to-keep: '{build-days-to-keep}'
250
251     parameters:
252       - opendaylight-infra-parameters:
253           os-cloud: '{os-cloud}'
254           project: '$GERRIT_PROJECT'
255           branch: '{branch}'
256           refspec: '$GERRIT_REFSPEC'
257           artifacts: '{archive-artifacts} **/dependency_tree.txt'
258       - integration-distribution-branch:
259           branch: '{branch}'
260       - integration-distribution-git-url:
261           git-url: '{git-url}'
262       - maven-exec:
263           maven-version: mvn33
264
265     scm:
266       - integration-gerrit-scm:
267           basedir: '$GERRIT_PROJECT'
268           refspec: '$GERRIT_REFSPEC'
269           branch: '{branch}'
270       - integration-distribution-scm:
271           branch: '{branch}'
272
273     wrappers:
274       - opendaylight-infra-wrappers:
275           build-timeout: '720'
276
277     triggers:
278       - gerrit:
279           server-name: '{server-name}'
280           trigger-on:
281             - comment-added-contains-event:
282                 comment-contains-value: 'test-integration'
283           projects:
284             - project-compare-type: 'ANT'
285               project-pattern: '**'
286               branches:
287                 - branch-compare-type: 'ANT'
288                   branch-pattern: '**/{branch}'
289           skip-vote:
290             successful: true
291             failed: true
292             unstable: true
293             notbuilt: true
294
295     builders:
296       - integration-rebase-gerrit-patch
297       - wipe-org-opendaylight-repo
298       - provide-maven-settings:
299           global-settings-file: 'odl-global-settings'
300           settings-file: 'integration-settings'
301       - maven-target:
302           maven-version: 'mvn33'
303           pom: '$GERRIT_PROJECT/pom.xml'
304           goals: |
305               clean install dependency:tree -DoutputFile=dependency_tree.txt
306               -Pq
307               -Dstream={stream}
308               {opendaylight-infra-mvn-opts}
309           java-opts:
310             - '-Xmx4096m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
311           settings: integration-settings
312           settings-type: cfp
313           global-settings: odl-global-settings
314           global-settings-type: cfp
315       - maven-target:
316           maven-version: mvn33
317           pom: distribution/pom.xml
318           goals: |
319               clean install dependency:tree -DoutputFile=dependency_tree.txt
320               {opendaylight-infra-mvn-opts}
321           java-opts:
322             - '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
323           settings: integration-settings
324           settings-type: cfp
325           global-settings: odl-global-settings
326           global-settings-type: cfp
327       - distribution-check-deploy-distribution:
328           dist-pom: distribution/pom.xml
329       - trigger-builds:
330           - project: '{csit-list}'
331             block: true
332             predefined-parameters:
333               BUNDLEURL=$BUNDLE_URL
334
335     publishers:
336       - opendaylight-infra-shiplogs:
337           maven-version: 'mvn33'
338       - email-notification:
339           email-recipients: '{email-recipients}'
340           email-prefix: '[$GERRIT_PROJECT]'
341
342
343 - job-template:
344     name: 'integration-multipatch-test-{stream}'
345     # Goal: Build one or more patches and run all available system test on a distribution containing the change.
346     # Operation: This job template checks out and builds each patch provided in job parameters, creates a distribution
347     # containing these patches, and triggers the distribution test job which includes most (if not all) available
348     # CSIT jobs
349     # TODO: Move the following to appropriate readthedocs document.
350     # Recommended Sandbox usage:
351     # 0. Create this job and a CSIT job you want to run on the new .zip in Sandbox (disable timed triggers).
352     # 1. Copy the csit job name to clipboard.
353     # 2. Navigate to Sandbox page of this job.
354     # 3. Click "Configure".
355     # 4. Locate "Trigger/call builds on other projects" (under "Post Steps" tab).
356     # 5. Delete the long value of "Projects to build" field and paste the job name from clipboard (ctrl+a, ctrl+v).
357     # 6. Click "Save" button.
358     # 7. Click "Build with Parameters".
359     # yamllint disable-line rule:line-length
360     # 8. Start the job with your parameters, see https://wiki.opendaylight.org/view/Integration/Test/Running_System_Tests#Running_System_Tests_Using_Custom_Distribution_Built_From_Multiple_Patches
361     # 9. The multipatch job waits for the csit job to finish, so abort csit if you see something went wrong.
362     # 10. Navigate to Sandbox page of the csit job, click the run triggered from multipatch.
363     # 11. Click Parameters and copy the long value of BUNDLEURL field to clipboard.
364     # 12. Run the same csit job woth different patchset or test options, or other csit jobs, with this BUNDLEURL value
365     #     so you do not have to wait for multipatch build. Repeat step 12.
366     # 13. Currently, the .zip lasts 24 hours (?) so you may need to jump to step 2 (or 0) after some time.
367
368     project-type: freestyle
369     node: centos7-java-builder-8c-8g
370     jdk: '{jdk}'
371
372     properties:
373       - opendaylight-infra-properties:
374           build-days-to-keep: '{build-days-to-keep}'
375
376     parameters:
377       - patches-to-build-parameter:
378           patches_to_build: '$PATCHES_TO_BUILD'
379       - run-test-parameter:
380           run-test: 'false'
381       - integration-distribution-branch:
382           branch: '{branch}'
383       - opendaylight-infra-parameters:
384           os-cloud: '{os-cloud}'
385           project: 'integration/distribution'
386           branch: '{branch}'
387           refspec: 'refs/heads/{branch}'
388           artifacts: '{archive-artifacts} **/dependency_tree.txt'
389       - maven-exec:
390           maven-version: mvn33
391
392     wrappers:
393       - opendaylight-infra-wrappers:
394           build-timeout: '1200'
395
396     builders:
397       - wipe-org-opendaylight-repo
398       - integration-multipatch-builder
399       - provide-maven-settings:
400           global-settings-file: 'odl-global-settings'
401           settings-file: 'yangtools-settings'
402       - maven-target:
403           maven-version: mvn33
404           pom: patch_tester/pom.xml
405           # TODO: Make Maven options configurable. Currently tests are not skipped, everything else is.
406           goals: |
407               clean install dependency:tree -DoutputFile=dependency_tree.txt
408               -Pq
409               -Dstream={stream}
410               {opendaylight-infra-mvn-opts}
411           java-opts:
412             - '-Xmx7168m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
413           settings: integration-settings
414           settings-type: cfp
415           global-settings: odl-global-settings
416           global-settings-type: cfp
417       - distribution-check-deploy-distribution:
418           dist-pom: patch_tester/distribution/pom.xml
419       - conditional-step:
420           condition-kind: boolean-expression
421           condition-expression: $RUNTEST
422           steps:
423             - trigger-builds:
424                 - project: '{csit-list}'
425                   block: true
426                   predefined-parameters:
427                     BUNDLEURL=$BUNDLE_URL
428
429     publishers:
430       - opendaylight-infra-shiplogs:
431           maven-version: 'mvn33'
432       - email-notification:
433           email-recipients: '{email-recipients}'
434           email-prefix: '[int/dist]'
435
436 - job-template:
437     name: 'integration-distribution-weekly-test-trigger-{stream}'
438
439     project-type: freestyle
440     node: centos7-robot-2c-2g
441
442     properties:
443       - opendaylight-infra-properties:
444           build-days-to-keep: '{build-days-to-keep}'
445
446     parameters:
447       - integration-bundleurl:
448           bundleurl: '{bundleurl}'
449       - integration-jdk-version:
450           jdkversion: '{jre}'
451
452     triggers:
453       - timed: '{schedule-weekly}'
454
455     builders:
456       - trigger-builds:
457           - project: '{csit-weekly-list}'
458             block: true
459             predefined-parameters:
460               BUNDLEURL=$BUNDLEURL
461
462     publishers:
463       - email-notification:
464           email-recipients: '{email-recipients}'
465           email-prefix: '[integration]'
466
467 - job-template:
468     name: 'integration-distribution-high-frequency-test-trigger-{stream}'
469
470     project-type: freestyle
471     node: centos7-robot-2c-2g
472
473     properties:
474       - opendaylight-infra-properties:
475           build-days-to-keep: '{build-days-to-keep}'
476
477     parameters:
478       - integration-bundleurl:
479           bundleurl: '{bundleurl}'
480       - integration-jdk-version:
481           jdkversion: '{jre}'
482
483     triggers:
484       - timed: '{schedule-high-frequency}'
485
486     builders:
487       - trigger-builds:
488           - project: '{csit-high-frequency-list}'
489             block: true
490             predefined-parameters:
491               BUNDLEURL=$BUNDLEURL
492
493     publishers:
494       - email-notification:
495           email-recipients: '{email-recipients}'
496           email-prefix: '[integration]'