0ffe5ea8e5f2b3bb791743f8a7685997afcccb0e
[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     jobs:
7       - "integration-patch-test-{stream}"
8       - "inttest-multipatch"
9       - "integration-merge-dashboard"
10       - "{project-name}-rtd-jobs":
11           build-node: centos8-builder-2c-2g
12           project-pattern: integration/test
13           rtd-build-url: https://readthedocs.org/api/v2/webhook/odl-integrationtest/32934/
14           rtd-token: 70766f97941a74ef80b84749ac4799e5ddeee99a
15       - gerrit-tox-verify:
16           branch: master
17           stream: master
18           build-node: centos8-builder-2c-2g
19
20     mvn-version: "mvn38"
21     java-version: "openjdk17"
22
23     # CSIT Lists in defaults.yaml
24     stream:
25       - potassium:
26           branch: "master"
27           csit-list: !include: csit-jobs-potassium.lst
28           build-order: >
29             odlparent infrautils yangtools mdsal controller aaa netconf bgpcep
30             serviceutils daexim jsonrpc ovsdb openflowplugin lispflowmapping
31             integration/distribution
32       - argon:
33           branch: "stable/argon"
34           csit-list: !include: csit-jobs-argon.lst
35           build-order: >
36             odlparent infrautils yangtools mdsal controller aaa netconf bgpcep
37             serviceutils daexim jsonrpc ovsdb openflowplugin lispflowmapping
38             integration/distribution
39       - chlorine:
40           branch: "stable/chlorine"
41           csit-list: !include: csit-jobs-chlorine.lst
42           build-order: >
43             odlparent infrautils yangtools mdsal controller aaa netconf bgpcep
44             serviceutils daexim jsonrpc ovsdb openflowplugin lispflowmapping
45             integration/distribution
46
47 - project:
48     name: integration-distribution
49     project: integration/test
50     project-name: integration-test
51     jobs:
52       - "integration-distribution-test-{stream}"
53       - "integration-distribution-mri-test-{stream}"
54       - "integration-distribution-weekly-test-trigger-{stream}"
55       - "integration-update-csit-tests-{stream}"
56
57     # CSIT Lists in defaults.yaml
58     stream:
59       - argon:
60           branch: "master"
61           csit-blocklist: >
62             aaa controller genius lispflowmapping l2switch mdsal
63             netconf netvirt odlmicro sxp yangtools
64             gate longevity sanity tdd tempest wip
65             bgpcep-csit-3node-bgpclustering-all
66             bgpcep-csit-3node-bgpclustering-ha-only
67             openflowplugin-csit-1node-bundle-based-reconciliation
68             last-line-is-ignored-so-we-need-something-dummy-here-to-make-sure-the-real-last-line-is-used
69           csit-list: !include: csit-jobs-argon.lst
70           csit-mri-list: "{csit-mri-list-argon}"
71           csit-weekly-list: "{csit-weekly-list-argon}"
72       - chlorine:
73           branch: "stable/chlorine"
74           csit-blocklist: >
75             aaa controller genius lispflowmapping l2switch mdsal
76             netconf netvirt odlmicro sxp yangtools
77             gate longevity sanity tdd tempest wip
78             bgpcep-csit-3node-bgpclustering-all
79             bgpcep-csit-3node-bgpclustering-ha-only
80             openflowplugin-csit-1node-bundle-based-reconciliation
81             last-line-is-ignored-so-we-need-something-dummy-here-to-make-sure-the-real-last-line-is-used
82           csit-list: !include: csit-jobs-chlorine.lst
83           csit-mri-list: "{csit-mri-list-chlorine}"
84           csit-weekly-list: "{csit-weekly-list-chlorine}"
85
86 - project:
87     name: integration-sanity
88     project: integration/test
89     project-name: integration-test
90     jobs:
91       - "integration-sanity-test-{stream}"
92
93     stream:
94       - argon:
95           branch: "master"
96           karaf-version: odl
97           csit-sanity-list: "{csit-sanity-list-argon}"
98       - chlorine:
99           branch: "stable/chlorine"
100           karaf-version: odl
101           csit-sanity-list: "{csit-sanity-list-chlorine}"
102
103 - job-template:
104     name: "integration-merge-dashboard"
105     project-type: freestyle
106     node: centos7-builder-2c-1g
107
108     properties:
109       - opendaylight-infra-properties:
110           build-days-to-keep: "{build-days-to-keep}"
111
112     parameters:
113       - opendaylight-infra-parameters:
114           os-cloud: "{os-cloud}"
115           project: "{project}"
116           branch: "master"
117           refspec: "refs/heads/master"
118           artifacts: "{archive-artifacts}"
119
120     scm:
121       - integration-gerrit-scm:
122           basedir: "test"
123           refspec: "$GERRIT_REFSPEC"
124           branch: "master"
125
126     wrappers:
127       - opendaylight-infra-wrappers:
128           build-timeout: "{build-timeout}"
129
130     triggers:
131       - gerrit-trigger-patch-merged:
132           gerrit-server-name: "{gerrit-server-name}"
133           name: "{project}"
134           branch: "master"
135           files: "dashboard/**"
136           forbidden-files: ""
137
138     builders:
139       - lf-infra-pre-build
140       - config-file-provider:
141           files:
142             - file-id: odl-elastic-cloud
143               target: "$HOME/.netrc"
144       - integration-install-robotframework
145         # yamllint disable-line rule:line-length
146       - shell: python3 $WORKSPACE/test/csit/scripts/push_dashboard.py a4ff38b99ef2c7626450543021b4c134.us-east-1.aws.found.io:9243
147
148     publishers:
149       - lf-infra-publish
150       - email-notification:
151           email-recipients: "{email-recipients}"
152           email-prefix: "[{project-name}]"
153
154 - job-template:
155     name: "integration-distribution-test-{stream}"
156     # Goal: Verify a distribution through all system test available
157     # Operation: This template takes a distribution and passes all available system test
158
159     project-type: freestyle
160     node: queue-disttest-2c-1g
161
162     properties:
163       - opendaylight-infra-properties:
164           build-days-to-keep: "{build-days-to-keep}"
165
166     parameters:
167       - integration-bundle-url:
168           bundle-url: "{bundle-url}"
169       - distribution-karaf-version:
170           karaf-version: "{karaf-version}"
171
172     builders:
173       - lf-infra-pre-build
174       - trigger-builds:
175           - project: "{csit-list}"
176             block: true
177             predefined-parameters: |
178               BUNDLE_URL=$BUNDLE_URL
179               KARAF_VERSION=$KARAF_VERSION
180
181     wrappers:
182       - lf-infra-wrappers:
183           build-timeout: 1440
184           jenkins-ssh-credential: "{jenkins-ssh-credential}"
185
186     publishers:
187       - opendaylight-infra-generate-csit-status-report
188       - email-notification:
189           email-recipients: "{email-recipients}"
190           email-prefix: "[integration]"
191       - lf-infra-publish
192
193 - job-template:
194     name: "integration-sanity-test-{stream}"
195     # Goal: Verify a distribution through sanity test
196     # Operation: This template takes a distribution and passes sanity test
197     # This jobs works for both managed & unmanaged distro.
198
199     project-type: freestyle
200     node: queue-intque-2c-1g
201
202     properties:
203       - opendaylight-infra-properties:
204           build-days-to-keep: "{build-days-to-keep}"
205
206     parameters:
207       - integration-bundle-url:
208           bundle-url: "{bundle-url}"
209       - distribution-karaf-version:
210           karaf-version: "{karaf-version}"
211
212     triggers:
213       - timed: "{schedule-daily}"
214
215     builders:
216       - lf-infra-pre-build
217       - trigger-builds:
218           - project: "{csit-sanity-list}"
219             block: true
220             predefined-parameters: |
221               BUNDLE_URL=$BUNDLE_URL
222               KARAF_VERSION=$KARAF_VERSION
223
224     publishers:
225       - email-notification:
226           email-recipients: "{email-recipients}"
227           email-prefix: "[integration]"
228
229 - job-template:
230     name: "integration-patch-test-{stream}"
231     # Template: integration-patch-test-{stream}
232     # Goal: Build a patch and run all available system test on a distribution containing the change
233     # Operation: This job template builds a patch, creates a distribution containing the patch, and
234     # triggers the distribution test when test-integration is used in gerrit comments
235
236     project-type: freestyle
237     node: centos7-builder-2c-8g
238
239     properties:
240       - opendaylight-infra-properties:
241           build-days-to-keep: "{build-days-to-keep}"
242
243     parameters:
244       - opendaylight-infra-parameters:
245           os-cloud: "{os-cloud}"
246           project: "$GERRIT_PROJECT"
247           branch: "{branch}"
248           refspec: "$GERRIT_REFSPEC"
249           artifacts: "{archive-artifacts}"
250       - integration-distribution-branch:
251           branch: "{branch}"
252       - distribution-karaf-version:
253           karaf-version: "{karaf-version}"
254       - integration-distribution-git-url:
255           git-url: "{git-url}"
256       - maven-exec:
257           maven-version: "{mvn-version}"
258
259     scm:
260       - integration-gerrit-scm:
261           basedir: "$GERRIT_PROJECT"
262           refspec: "$GERRIT_REFSPEC"
263           branch: "{branch}"
264       - integration-distribution-scm:
265           branch: "{branch}"
266
267     wrappers:
268       - opendaylight-infra-wrappers:
269           build-timeout: "720"
270
271     triggers:
272       - gerrit:
273           server-name: "{gerrit-server-name}"
274           trigger-on:
275             - comment-added-contains-event:
276                 comment-contains-value: "test-integration"
277           projects:
278             - project-compare-type: "ANT"
279               project-pattern: "**"
280               branches:
281                 - branch-compare-type: "ANT"
282                   branch-pattern: "**/{branch}"
283           skip-vote:
284             successful: true
285             failed: true
286             unstable: true
287             notbuilt: true
288
289     builders:
290       - lf-infra-pre-build
291       - integration-rebase-gerrit-patch
292       - wipe-org-opendaylight-repo
293       - lf-provide-maven-settings:
294           global-settings-file: "global-settings"
295           settings-file: "integration-settings"
296       - lf-update-java-alternatives:
297           java-version: "{java-version}"
298       - maven-target:
299           maven-version: "{mvn-version}"
300           pom: "$GERRIT_PROJECT/pom.xml"
301           goals: |
302             clean install dependency:tree -DoutputFile=dependency_tree.txt
303             -Pq
304             -Dstream={stream}
305             {opendaylight-infra-mvn-opts}
306             # {opendaylight-infra-parallel-mvn-opts} is bad when there are multiple big features in SFT.
307           java-opts:
308             - "-Xmx4096m -Dmaven.compile.fork=true"
309           settings: integration-settings
310           settings-type: cfp
311           global-settings: global-settings
312           global-settings-type: cfp
313       - maven-target:
314           maven-version: "{mvn-version}"
315           pom: distribution/pom.xml
316           goals: |
317             clean install dependency:tree -DoutputFile=dependency_tree.txt
318             {opendaylight-infra-mvn-opts}
319             # {opendaylight-infra-parallel-mvn-opts} is bad when there are multiple big features in SFT.
320           java-opts:
321             - "-Xmx1024m -Dmaven.compile.fork=true"
322           settings: integration-settings
323           settings-type: cfp
324           global-settings: global-settings
325           global-settings-type: cfp
326       - integration-upload-distribution:
327           dist-pom: distribution/pom.xml
328           settings-project: integration
329       - trigger-builds:
330           - project: "{csit-list}"
331             block: true
332             predefined-parameters: |
333               BUNDLE_URL=$BUNDLE_URL
334               KARAF_VERSION=$KARAF_VERSION
335
336     publishers:
337       - lf-infra-publish
338       - email-notification:
339           email-recipients: "{email-recipients}"
340           email-prefix: "[$GERRIT_PROJECT]"
341
342 - job-template:
343     name: "{prefix}integration-multipatch-test-{stream}"
344     # Goal: Build one or more patches and run all available system test on a distribution containing the change.
345     # Operation: This job template checks out and builds in order each patch provided in job parameters, finally
346     # it creates a distribution containing all patches and triggers the distribution test job which includes most
347     # (if not all) available CSIT jobs.
348
349     id: inttest-multipatch
350     project-type: freestyle
351     node: centos7-builder-8c-8g
352     concurrent: true
353
354     properties:
355       - opendaylight-infra-properties:
356           build-days-to-keep: "{build-days-to-keep}"
357
358     parameters:
359       - string:
360           name: PATCHES_TO_BUILD
361           default: "$PATCHES_TO_BUILD"
362           description: |
363             Ordered list of patches to build in the format of project=changeset (checkout) or
364             project:changeset (cherry-pick) for example: genius=32/53632/9,netvirt:59/50259/47.
365       - string:
366           name: BUILD_ORDER
367           default: "{build-order}"
368           description: "Build order for multipatch test when topic is used"
369       - string:
370           name: BUILD_FAST
371           default: "true"
372           description: "Set true to build fast -Pq"
373       - string:
374           name: BUILD_NORMAL
375           default: ""
376           description: "List of projects to build normal (no -Pq) when BUILD_FAST=true"
377       - string:
378           name: RUN_TEST
379           default: "false"
380           description: "Set true to run test after build"
381       - integration-distribution-branch:
382           branch: "{branch}"
383       - integration-distribution-stream:
384           stream: "{stream}"
385       - distribution-karaf-version:
386           karaf-version: "{karaf-version}"
387       - opendaylight-infra-parameters:
388           os-cloud: "{os-cloud}"
389           project: "integration/distribution"
390           branch: "{branch}"
391           refspec: "refs/heads/{branch}"
392           artifacts: "{archive-artifacts}"
393       - lf-infra-maven-parameters:
394           mvn-opts: ""
395           mvn-params: ""
396           mvn-version: "{mvn-version}"
397           staging-profile-id: "" # Staging repos do not make sense for this job
398
399     wrappers:
400       - opendaylight-infra-wrappers:
401           build-timeout: "1200"
402
403     triggers:
404       - gerrit:
405           server-name: "{gerrit-server-name}"
406           trigger-on:
407             - comment-added-contains-event:
408                 comment-contains-value: "multipatch-build"
409           projects:
410             - project-compare-type: ANT
411               project-pattern: "**"
412               branches:
413                 - branch-compare-type: ANT
414                   branch-pattern: "**/{branch}"
415
416     builders:
417       - lf-infra-pre-build
418       - wipe-org-opendaylight-repo
419       - lf-maven-install:
420           mvn-version: "{mvn-version}"
421       - lf-provide-maven-settings:
422           global-settings-file: "global-settings"
423           settings-file: "integration-distribution-settings"
424       - lf-update-java-alternatives:
425           java-version: "{java-version}"
426       - integration-multipatch-builder
427       - integration-upload-distribution:
428           dist-pom: patch_tester/distribution/pom.xml
429           settings-project: integration
430       - conditional-step:
431           condition-kind: boolean-expression
432           condition-expression: $RUN_TEST
433           steps:
434             - trigger-builds:
435                 - project: >
436                     integration-distribution-test-{stream},
437                     integration-distribution-mri-test-{stream}
438                   predefined-parameters: |
439                     BUNDLE_URL=$BUNDLE_URL
440                     KARAF_VERSION=$KARAF_VERSION
441
442     publishers:
443       - lf-infra-publish
444       - email-notification:
445           email-recipients: "{email-recipients}"
446           email-prefix: "[int/dist]"
447
448 - job-template:
449     name: "integration-distribution-mri-test-{stream}"
450
451     project-type: freestyle
452     node: queue-intque-2c-1g
453
454     properties:
455       - opendaylight-infra-properties:
456           build-days-to-keep: "{build-days-to-keep}"
457
458     parameters:
459       - integration-bundle-url:
460           bundle-url: "{bundle-url}"
461       - distribution-karaf-version:
462           karaf-version: "{karaf-version}"
463
464     triggers:
465       - timed: "{schedule-weekly}"
466
467     builders:
468       - trigger-builds:
469           - project: "{csit-mri-list}"
470             block: true
471             predefined-parameters: |
472               BUNDLE_URL=$BUNDLE_URL
473               KARAF_VERSION=$KARAF_VERSION
474
475     publishers:
476       - email-notification:
477           email-recipients: "{email-recipients}"
478           email-prefix: "[integration]"
479
480 - job-template:
481     name: "{project}-distribution-mri-test-{stream}"
482     id: inttest-distribution-mri-test
483
484     project-type: freestyle
485     node: queue-intque-2c-1g
486
487     properties:
488       - opendaylight-infra-properties:
489           build-days-to-keep: "{build-days-to-keep}"
490
491     parameters:
492       - integration-bundle-url:
493           bundle-url: "{bundle-url}"
494       - distribution-karaf-version:
495           karaf-version: "{karaf-version}"
496
497     triggers:
498       - timed: "{schedule-weekly}"
499
500     builders:
501       - trigger-builds:
502           - project: "{csit-mri-list}"
503             block: true
504             predefined-parameters: |
505               BUNDLE_URL=$BUNDLE_URL
506               KARAF_VERSION=$KARAF_VERSION
507
508     publishers:
509       - email-notification:
510           email-recipients: "{email-recipients}"
511           email-prefix: "[integration]"
512
513 - job-template:
514     name: "integration-distribution-weekly-test-trigger-{stream}"
515
516     project-type: freestyle
517     node: queue-intque-2c-1g
518
519     properties:
520       - opendaylight-infra-properties:
521           build-days-to-keep: "{build-days-to-keep}"
522
523     parameters:
524       - integration-bundle-url:
525           bundle-url: "{bundle-url}"
526       - distribution-karaf-version:
527           karaf-version: "{karaf-version}"
528
529     triggers:
530       - timed: "{schedule-weekly}"
531
532     builders:
533       - trigger-builds:
534           - project: "{csit-weekly-list}"
535             block: true
536             predefined-parameters: |
537               BUNDLE_URL=$BUNDLE_URL
538               KARAF_VERSION=$KARAF_VERSION
539
540     publishers:
541       - email-notification:
542           email-recipients: "{email-recipients}"
543           email-prefix: "[integration]"
544
545 - job-template:
546     name: "integration-update-csit-tests-{stream}"
547
548     # This job's purpose is to update csit
549     # tests to run in integration-distribution-test-{stream}
550     # by updating integration files: csit-list-{stream}.inc
551     # These files can be used as !include in int-dist-test-{stream}
552
553     ######################
554     # Default parameters #
555     ######################
556
557     git-url: "$GIT_URL/$PROJECT"
558     submodule-disable: false
559     submodule-recursive: true
560     submodule-timeout: 10
561
562     #####################
563     # Job Configuration #
564     #####################
565
566     project-type: freestyle
567     node: centos7-builder-2c-2g
568
569     properties:
570       - lf-infra-properties:
571           build-days-to-keep: 7
572
573     parameters:
574       - lf-infra-parameters:
575           project: releng/builder # Hardcode as this job needs to pull releng/builder
576           stream: "{stream}"
577           branch: master # Hardcode as releng/builder only has master
578           lftools-version: "{lftools-version}"
579       - string:
580           name: CSIT_BLOCKLIST
581           default: "{csit-blocklist}"
582           description: Space separated list of jobs strings to blocklist.
583
584     scm:
585       - lf-infra-gerrit-scm:
586           jenkins-ssh-credential: "{jenkins-ssh-credential}"
587           git-url: "{git-url}"
588           refspec: "$GERRIT_REFSPEC"
589           branch: "$GERRIT_BRANCH"
590           submodule-disable: "{submodule-disable}"
591           submodule-recursive: "{submodule-recursive}"
592           submodule-timeout: "{submodule-timeout}"
593           choosing-strategy: default
594
595     wrappers:
596       - lf-infra-wrappers:
597           build-timeout: 10
598           jenkins-ssh-credential: "{jenkins-ssh-credential}"
599
600     triggers:
601       - reverse:
602           jobs: builder-jjb-merge
603
604     builders:
605       - lf-infra-pre-build
606       - shell: !include-raw-escape: update-csit-tests.sh
607       - shell: |
608           git status
609           git add jjb/integration/*.lst
610       - lf-infra-push-gerrit-patch:
611           project: "releng/builder"
612           gerrit-user: "jenkins-$SILO"
613           gerrit-host: "git.opendaylight.org"
614           gerrit-topic: "auto-update-csit-jobs-{stream}"
615           gerrit-commit-message: "Auto Update CSIT Jobs to run for {stream}"
616           reviewers-email: "jenkins-releng@opendaylight.org"
617
618     publishers:
619       - lf-infra-publish
620
621 - project:
622     name: integration-info
623     jobs:
624       - gerrit-info-yaml-verify
625     project: integration
626     project-name: integration
627     branch: master
628     build-node: centos7-builder-2c-1g
629
630 - project:
631     name: integration-view
632     views:
633       - project-view
634     project-name: integration