Promote debian-10 verify/merge jobs to production
[ci-management.git] / jjb / vpp / vpp.yaml
1 ---
2 # PROJECT DEFINITIONS
3 #
4 # Please keep projects grouped in this order:
5 #     vpp-x86_64, vpp-aarch64, vpp-csit
6 #
7 # NOTES:
8 #   - The 'branch-head-refspec' attribute is used for sandbox testing.
9 #         Use the get_gerrit_refspec() bash function in
10 #         .../ci-management/docker/scripts/lib_common.sh
11 #         to query gerrit for the refspec of HEAD in a branch.
12 #         TODO: see if there is a refspec that works without requiring
13 #               use of get_gerrit_refspec and hand entering the result
14 #               in the WebUI 'Build With Parameters' gerrit refspec field.
15 #   - Use the following to import get_gerrit_refspec into a bash shell 
16 #         from the ci-management directory:
17 #         $ eval "$(grep -A12 get_gerrit ./docker/scripts/lib_common.sh)"
18 # [end] NOTES
19
20 # VPP-CHECKSTYLE-X86_64 PROJECT
21 - project:
22     name: vpp-checkstyle-x86_64
23     jobs:
24       - 'vpp-checkstyle-verify-{stream}-{os}-{executor-arch}'
25     project: 'vpp'
26     stream:
27       - master:
28           branch: 'master'
29           repo-stream-part: 'master'
30           branch-head-refspec: ''
31       - '1908':
32           branch: 'stable/1908'
33           repo-stream-part: 'stable.1908'
34           branch-head-refspec: ''
35       - '2005':
36           branch: 'stable/2005'
37           repo-stream-part: 'stable.2005'
38           branch-head-refspec: ''
39       - '2009':
40           branch: 'stable/2009'
41           repo-stream-part: 'stable.2009'
42           branch-head-refspec: ''
43     os: 'ubuntu1804'
44     executor-arch: 'x86_64'
45 # [end] VPP-CHECKSTYLE-X86_64 PROJECT
46
47 # VPP-X86_64 PROJECT
48 - project:
49     name: vpp-x86_64
50     jobs:
51       - 'vpp-verify-{stream}-{os}-{executor-arch}'
52       - 'vpp-merge-{stream}-{os}-{executor-arch}'
53     project: 'vpp'
54     make-parallel-jobs: '4'
55     stream:
56       - master:
57           branch: 'master'
58           repo-stream-part: 'master'
59           branch-head-refspec: ''
60       - '1908':
61           branch: 'stable/1908'
62           repo-stream-part: 'stable.1908'
63           branch-head-refspec: ''
64       - '2005':
65           branch: 'stable/2005'
66           repo-stream-part: 'stable.2005'
67           branch-head-refspec: ''
68       - '2009':
69           branch: 'stable/2009'
70           repo-stream-part: 'stable.2009'
71           branch-head-refspec: ''
72     os:
73       - ubuntu1804:
74           repo-os-part: 'ubuntu.bionic.main'
75       - centos7:
76           repo-os-part: 'centos7'
77     executor-arch: 'x86_64'
78 # [end] VPP-X86_64 PROJECT
79
80 # VPP-OS-IN-2009-X86_64 PROJECT
81 #
82 # This project is used to separate streams which are only
83 # supported on the OS in the release in which it was added
84 # or later releases.
85 #
86 # For each 'os-in-XXXX', the stream for the release is
87 # added here in addition to the 'vpp-x86_64' project.
88 # Each subsequent release is also added to both.
89 #
90 # When all of the streams older than the 'os-in-XXXX" have
91 # been removed from the 'vpp-x86_64' project, then the OSes
92 # in this project get moved to the 'vpp-x86_64' project and
93 # this project gets deleted or commented out if it is only
94 # 'os-in-XXXX' project.
95 #
96 - project:
97     name: vpp-os-in-2009-x86_64
98     jobs:
99       - 'vpp-verify-{stream}-{os}-{executor-arch}'
100       - 'vpp-merge-{stream}-{os}-{executor-arch}'
101     project: 'vpp'
102     make-parallel-jobs: '4'
103     stream:
104       - master:
105           branch: 'master'
106           repo-stream-part: 'master'
107           branch-head-refspec: ''
108       - '2009':
109           branch: 'stable/2009'
110           repo-stream-part: 'stable.2009'
111           branch-head-refspec: ''
112     os:
113       - centos8:
114           repo-os-part: 'centos8'
115       - debian9:
116           repo-os-part: 'stretch'
117       - debian10:
118           repo-os-part: 'buster'
119       - ubuntu2004:
120           repo-os-part: 'ubuntu.focal.main'
121     executor-arch: 'x86_64'
122 # [end] VPP-OS-IN-2009-X86_64 PROJECT
123
124 # VPP-DEBUG-X86_64 PROJECT
125 #
126 # Currently a Non-Voting job due to intermittent failures.
127 # Limiting branches to master and 2009, since other branches
128 # may not get fixes for the intermittent failures.
129 #
130 - project:
131     name: vpp-debug-x86_64
132     jobs:
133       - 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
134     project: 'vpp'
135     make-parallel-jobs: '4'
136     stream:
137       - master:
138           branch: 'master'
139           repo-stream-part: 'master'
140           branch-head-refspec: ''
141       - '2009':
142           branch: 'stable/2009'
143           repo-stream-part: 'stable.2009'
144           branch-head-refspec: ''
145     os:
146       - ubuntu1804:
147           repo-os-part: 'ubuntu.bionic.main'
148     executor-arch: 'x86_64'
149 # [end] VPP-DEBUG-X86_64 PROJECT
150
151 # VPP-BETA-X86_64 PROJECT
152 #
153 # Beta jobs are experimental jobs for testing new OS versions on master.
154 #
155 # They are only manually triggered.  Either using the Jenkins WebUI
156 # 'Build with Parameters' to run a single job or adding 'vpp-beta-verify'
157 # or 'vpp-beta-merge' as a comment to run all beta verify or merge jobs.
158 #
159 # Once testing  is complete, the os is moved to the current
160 # 'vpp-os-in-XXXX-x86_64' project. If no OSes are being
161 # tested then this project should be commented out.
162 #
163 #- project:
164 #    name: vpp-beta-x86_64
165 #    jobs:
166 #      - 'vpp-beta-verify-{stream}-{os}-{executor-arch}':
167 #          comment-trigger-value: 'vpp-beta-verify'
168 #      - 'vpp-beta-merge-{stream}-{os}-{executor-arch}':
169 #          comment-trigger-value: 'vpp-beta-merge'
170 #    project: 'vpp'
171 #    make-parallel-jobs: '4'
172 #    stream:
173 #      - master:
174 #          branch: 'master'
175 #          repo-stream-part: 'master'
176 #          branch-head-refspec: ''
177 #    os:
178 #      - debian10:
179 #          repo-os-part: 'buster'
180 #    executor-arch: x86_64
181 # [end] VPP-BETA-X86_64 PROJECT
182
183 # VPP-GCC-X86_64 PROJECT
184 - project:
185     name: vpp-gcc-x86_64
186     jobs:
187       - 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
188     project: 'vpp'
189     executor-arch: 'x86_64'
190     os:
191       - ubuntu2004:
192           repo-os-part: 'ubuntu.focal.main'
193     stream:
194       - master:
195           branch: 'master'
196           repo-stream-part: 'master'
197           branch-head-refspec: ''
198       - '2009':
199           branch: 'stable/2009'
200           repo-stream-part: 'stable.2009'
201           branch-head-refspec: ''
202 # [end] VPP-GCC-X86_64 PROJECT
203
204 # VPP-AARCH64 PROJECT
205 - project:
206     name: vpp-aarch64
207     jobs:
208       - 'vpp-verify-{stream}-{os}-{executor-arch}'
209       - 'vpp-merge-{stream}-{os}-{executor-arch}'
210     project: 'vpp'
211     make-parallel-jobs: '16'
212     stream:
213       - master:
214           branch: 'master'
215           repo-stream-part: 'master'
216           branch-head-refspec: ''
217       - '1908':
218           branch: 'stable/1908'
219           repo-stream-part: 'stable.1908'
220           branch-head-refspec: ''
221       - '2005':
222           branch: 'stable/2005'
223           repo-stream-part: 'stable.2005'
224           branch-head-refspec: ''
225       - '2009':
226           branch: 'stable/2009'
227           repo-stream-part: 'stable.2009'
228           branch-head-refspec: ''
229     os:
230       - ubuntu1804:
231           repo-os-part: 'ubuntu-arm.bionic.main'
232     executor-arch: 'aarch64'
233 # [end] VPP-AARCH64 PROJECT
234
235 # VPP-OS-IN-2009-AARCH64 PROJECT
236 #
237 # This project is used to separate streams which are only
238 # supported on the OS in the release in which it was added
239 # or later releases.
240 #
241 # For each 'os-in-XXXX', the stream for the release is
242 # added here in addition to the 'vpp-aarch64' project.
243 # Each subsequent release is also added to both.
244 #
245 # When all of the streams older than the 'os-in-XXXX" have
246 # been removed from the 'vpp-aarch64' project, then the OSes
247 # in this project get moved to the 'vpp-aarch64' project and
248 # this project gets deleted or commented out if it is only
249 # 'os-in-XXXX' project.
250 #
251 #- project:
252 #    name: vpp-os-in-2009-aarch64
253 #    jobs:
254 #      - 'vpp-verify-{stream}-{os}-{executor-arch}'
255 #      - 'vpp-merge-{stream}-{os}-{executor-arch}'
256 #
257 #    project: 'vpp'
258 #    make-parallel-jobs: '16'
259 #    stream:
260 #      - master:
261 #          branch: 'master'
262 #          repo-stream-part: 'master'
263 #          branch-head-refspec: ''
264 #      - '2009':
265 #          branch: 'stable/2009'
266 #          repo-stream-part: 'stable.2009'
267 #          branch-head-refspec: ''
268 #    os:
269 #      - ubuntu2004:
270 #          repo-os-part: 'ubuntu.focal.main'
271 #    executor-arch: 'aarch64'
272 # [end] VPP-OS-IN-2009-AARCH64 PROJECT
273
274 # VPP-BETA-AARCH64 PROJECT
275 #
276 # Beta jobs are experimental jobs for testing new OS versions on master.
277 #
278 # They are only manually triggered.  Either using the Jenkins WebUI
279 # 'Build with Parameters' to run a single job or adding 'vpp-beta-verify'
280 # or 'vpp-beta-merge' as a comment to run all beta verify or merge jobs.
281 #
282 # Once testing  is complete, the os is moved to the current
283 # 'vpp-os-in-XXXX-aarch64' project. If no OSes are being
284 # tested then this project should be commented out.
285 #
286 - project:
287     name: vpp-beta-aarch64
288     jobs:
289       - 'vpp-beta-verify-{stream}-{os}-{executor-arch}':
290           comment-trigger-value: 'beta-verify'
291       - 'vpp-beta-merge-{stream}-{os}-{executor-arch}':
292           comment-trigger-value: 'beta-merge'
293     project: 'vpp'
294     make-parallel-jobs: '16'
295     stream:
296       - master:
297           branch: 'master'
298           repo-stream-part: 'master'
299           branch-head-refspec: ''
300     os:
301       - centos8:
302           repo-os-part: 'centos8'
303       - ubuntu2004:
304           repo-os-part: 'ubuntu.focal.main'
305     executor-arch: aarch64
306 # [end] VPP-BETA-AARCH64 PROJECT
307
308 # VPP-CSIT-PERPATCH PROJECT
309 - project:
310     name: vpp-csit-perpatch
311     jobs:
312       - 'vpp-csit-verify-device-{stream}-{device-node-arch}':
313           make-parallel-jobs: '32'
314       - 'vpp-csit-verify-perf-{stream}-{node-arch}'
315     project: 'vpp'
316     os: ubuntu1804
317     device-executor: 'vpp-csit-device'
318     executor: '{os}-us'
319     skip-vote: 'false'
320     trigger: 'gerrit-trigger-vpp-csit-devicetest-full'
321     stream:
322       - master:
323           branch: 'master'
324           repo-stream-part: 'master'
325       - '1908':
326           branch: 'stable/1908'
327           repo-stream-part: 'stable.1908'
328       - '2005':
329           branch: 'stable/2005'
330           repo-stream-part: 'stable.2005'
331       - '2009':
332           branch: 'stable/2009'
333           repo-stream-part: 'stable.2009'
334     device-node-arch:
335       - 1n-skx
336       - 1n-tx2:
337           device-executor: 'vpp-csit-arm-ubuntu18'
338           trigger: 'gerrit-trigger-vpp-csit-devicetest-manual'
339     node-arch:
340       - 2n-clx
341       - 2n-skx
342       - 2n-zn2
343       - 3n-skx
344       - 3n-hsw
345       - 2n-dnv
346       - 3n-dnv
347       - 3n-tsh:
348           executor: 'ubuntu1804arm-s'
349           make-parallel-jobs: '16'
350 # [end] VPP-CSIT-PERPATCH PROJECT
351
352 # VPP-CSIT-API-CRC PROJECT
353 #
354 # Only master and LTS branches are supported.
355 #
356 - project:
357     name: vpp-csit-api-crc
358     jobs:
359       - 'vpp-csit-verify-api-crc-{stream}'
360     project: 'vpp'
361     executor: 'vpp-csit-device'
362     skip-vote: 'false'
363     stream:
364       - '1908':
365           branch: 'stable/1908'
366           repo-stream-part: 'stable.1908'
367       - '2009':
368           branch: 'stable/2009'
369           repo-stream-part: 'stable.2009'
370       - master:
371           branch: 'master'
372     os: ubuntu1804
373 # [end] VPP-CSIT-API-CRC PROJECT
374
375 # LF RELENG VPP PROJECTS
376 - project:
377     name: vpp-info
378     project-name: vpp
379     jobs:
380       - gerrit-info-yaml-verify
381     build-node: centos7-builder-2c-2g
382     project: vpp
383     branch: master
384
385 - project:
386     name: vpp-view
387     views:
388       - project-view
389     project-name: vpp
390 # [end] LF RELENG VPP PROJECTS
391 # [end] PROJECT DEFINITIONS
392
393 # JOB TEMPLATE DEFINITIONS
394 #
395 # Please keep job templates in the same order as they are referenced
396 # in the project definitions above.
397
398 # VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
399 - job-template:
400     name: 'vpp-checkstyle-verify-{stream}-{os}-{executor-arch}'
401
402     project-type: freestyle
403     node: 'builder-{os}-prod-{executor-arch}'
404     concurrent: true
405     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
406
407     build-discarder:
408       daysToKeep: '{build-days-to-keep}'
409       numToKeep: '{build-num-to-keep}'
410       artifactDaysToKeep: '{build-artifact-days-to-keep}'
411       artifactNumToKeep: '{build-artifact-num-to-keep}'
412
413     parameters:
414       - project-parameter:
415           project: '{project}'
416       - gerrit-parameter:
417           branch: '{branch}'
418       - os-parameter:
419           os: '{os}'
420       - repo-name-parameter:
421           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
422       - gerrit-refspec-parameter:
423           refspec: '{branch-head-refspec}'
424
425     scm:
426       - gerrit-trigger-scm:
427           credentials-id: 'jenkins-gerrit-credentials'
428           refspec: '$GERRIT_REFSPEC'
429           choosing-strategy: 'gerrit'
430
431     wrappers:
432       - fdio-infra-wrappers:
433           build-timeout: '{build-timeout}'
434       - credentials-binding:
435           - text:
436               credential-id: VppApiCompatNotify
437               variable: SECRET_WEBEX_TEAMS_ACCESS_TOKEN
438
439     triggers:
440       - gerrit:
441           server-name: 'Primary'
442           trigger-on:
443             - patchset-created-event:
444                 exclude-drafts: 'true'
445                 exclude-trivial-rebase: 'false'
446                 exclude-no-code-change: 'false'
447             - draft-published-event
448             - comment-added-contains-event:
449                 comment-contains-value: 'checkstylecheck'
450             - comment-added-contains-event:
451                 comment-contains-value: 'docsonly'
452             - comment-added-contains-event:
453                 comment-contains-value: 'recheck'
454             - comment-added-contains-event:
455                 comment-contains-value: 'reverify'
456             # Following two are to cover missing functions of drafts
457             # going to review status
458             - comment-added-contains-event:
459                 comment-contains-value: 'runtest'
460             - comment-added-contains-event:
461                 comment-contains-value: 'This change is ready for review'
462           projects:
463             - project-compare-type: 'ANT'
464               project-pattern: '{project}'
465               branches:
466                 - branch-compare-type: 'ANT'
467                   branch-pattern: '**/{branch}'
468               file-paths:
469                 - compare-type: REG_EXP
470                   pattern: ^((?!\/COMMIT_MSG|docs|_abc|_def[\/\.]).)*$
471               forbidden-file-paths:
472                 - compare-type: REG_EXP
473                   pattern: .*docs\/.*
474                 - compare-type: REG_EXP
475                   pattern: .*extras\/emacs\/.*
476               disable-strict-forbidden-file-verification: 'true'
477           override-votes: true
478           gerrit-build-notbuilt-verified-value: 0
479           gerrit-build-successful-verified-value: 1
480           # yamllint disable-line rule:line-length
481           notbuilt-message: 'Automatic retry of failed jobs may be in process. A proper vote should be set when retry completes.'
482           # yamllint disable-line rule:line-length
483           failed-message: 'Checkstyle failed. No further verify jobs will be started.'
484           successful-message: 'checkstyle_success'
485           skip-vote:
486             successful: true
487             failed: false
488             unstable: false
489             notbuilt: false
490
491     builders:
492       - shell:
493           !include-raw-escape:
494           - ../scripts/setup_executor_env.sh
495       - shell:
496           !include-raw-escape:
497           - ../scripts/vpp/checkstyle.sh
498       - shell:
499           !include-raw-escape:
500           - ../scripts/vpp/test-checkstyle.sh
501       - shell:
502           !include-raw-escape:
503           - ../scripts/vpp/api-checkstyle.sh
504       - shell:
505           !include-raw-escape:
506           - ../scripts/vpp/commitmsg.sh
507
508     publishers:
509       - fdio-infra-shiplogs:
510           maven-version: 'mvn36'
511 # [end] VPP-CHECKSTYLE-VERIFY JOB TEMPLATE
512
513 # VPP-VERIFY JOB TEMPLATE
514 - job-template:
515     name: 'vpp-verify-{stream}-{os}-{executor-arch}'
516
517     project-type: freestyle
518     node: 'builder-{os}-prod-{executor-arch}'
519     concurrent: true
520     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
521
522     build-discarder:
523       daysToKeep: '{build-days-to-keep}'
524       numToKeep: 100
525       artifactDaysToKeep: '{build-artifact-days-to-keep}'
526       artifactNumToKeep: '{build-artifact-num-to-keep}'
527
528     parameters:
529       - project-parameter:
530           project: '{project}'
531       - gerrit-parameter:
532           branch: '{branch}'
533       - os-parameter:
534           os: '{os}'
535       - repo-name-parameter:
536           repo-name: '{repo-stream-part}.{repo-os-part}'
537       - stream-parameter:
538           stream: '{stream}'
539       - string:
540           name: ARCHIVE_ARTIFACTS
541           default: '{archive-artifacts}'
542           description: Artifacts to archive to the logs server.
543       - make-parallel-jobs-parameter:
544           make-parallel-jobs: '{make-parallel-jobs}'
545       - gerrit-refspec-parameter:
546           refspec: '{branch-head-refspec}'
547
548     scm:
549       - gerrit-trigger-scm:
550           credentials-id: 'jenkins-gerrit-credentials'
551           refspec: '$GERRIT_REFSPEC'
552           choosing-strategy: 'gerrit'
553
554     wrappers:
555       - fdio-infra-wrappers:
556           build-timeout: 120
557
558     triggers:
559       - gerrit-trigger-checkstyle:
560           name: '{project}'
561           branch: '{branch}'
562
563     builders:
564       - shell:
565           !include-raw-escape:
566           - ../scripts/setup_executor_env.sh
567       - shell:
568           !include-raw-escape:
569           - ../scripts/setup_vpp_ubuntu_docker_test.sh
570       - shell:
571           !include-raw-escape:
572           - ../scripts/setup_vpp_dpdk_dev_env.sh
573       - shell:
574           !include-raw-escape:
575           - ../scripts/vpp/build.sh
576
577     publishers:
578       - fdio-infra-shiplogs:
579           maven-version: 'mvn36'
580 # [end] VPP-VERIFY JOB TEMPLATE
581
582 # VPP-DEBUG-VERIFY JOB TEMPLATE
583 - job-template:
584     name: 'vpp-debug-verify-{stream}-{os}-{executor-arch}'
585
586     project-type: freestyle
587     node: 'builder-{os}-prod-{executor-arch}'
588     concurrent: true
589     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
590
591     build-discarder:
592       daysToKeep: '{build-days-to-keep}'
593       numToKeep: '{build-num-to-keep}'
594       artifactDaysToKeep: '{build-artifact-days-to-keep}'
595       artifactNumToKeep: '{build-artifact-num-to-keep}'
596
597     parameters:
598       - project-parameter:
599           project: '{project}'
600       - gerrit-parameter:
601           branch: '{branch}'
602       - os-parameter:
603           os: 'ubuntu1804'
604       - repo-name-parameter:
605           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
606       - stream-parameter:
607           stream: '{stream}'
608       - make-parallel-jobs-parameter:
609           make-parallel-jobs: '{make-parallel-jobs}'
610       - gerrit-refspec-parameter:
611           refspec: '{branch-head-refspec}'
612
613     scm:
614       - gerrit-trigger-scm:
615           credentials-id: 'jenkins-gerrit-credentials'
616           refspec: '$GERRIT_REFSPEC'
617           choosing-strategy: 'gerrit'
618
619     wrappers:
620       - fdio-infra-wrappers:
621           build-timeout: '{build-timeout}'
622
623     triggers:
624       # TODO: Ensure all supported jobs pass reliably before
625       #       enabling voting.
626       - gerrit-trigger-checkstyle-nonvoting:
627           name: '{project}'
628           branch: '{branch}'
629
630     builders:
631       - shell:
632           !include-raw-escape:
633           - ../scripts/setup_executor_env.sh
634       - shell:
635           !include-raw-escape:
636           - ../scripts/setup_vpp_ubuntu_docker_test.sh
637       - shell:
638           !include-raw-escape:
639           - ../scripts/setup_vpp_dpdk_dev_env.sh
640       - shell:
641           !include-raw-escape:
642           - ../scripts/vpp/debug-build.sh
643
644     publishers:
645       - fdio-infra-shiplogs:
646           maven-version: 'mvn36'
647 # [end] VPP-DEBUG-VERIFY JOB TEMPLATE
648
649 # VPP-MERGE JOB TEMPLATE
650 - job-template:
651     name: 'vpp-merge-{stream}-{os}-{executor-arch}'
652
653     project-type: freestyle
654     node: 'builder-{os}-prod-{executor-arch}'
655
656     build-discarder:
657       daysToKeep: '{build-days-to-keep}'
658       numToKeep: 100
659       artifactDaysToKeep: '{build-artifact-days-to-keep}'
660       artifactNumToKeep: '{build-artifact-num-to-keep}'
661
662     parameters:
663       - project-parameter:
664           project: '{project}'
665       - gerrit-parameter:
666           branch: '{branch}'
667       - os-parameter:
668           os: '{os}'
669       - maven-project-parameter:
670           maven: 'mvn33-new'
671       - maven-exec:
672           maven-version: 'mvn33-new'
673       - stream-parameter:
674           stream: '{stream}'
675       - repo-name-parameter:
676           repo-name: '{repo-stream-part}.{repo-os-part}'
677       - string:
678           name: ARCHIVE_ARTIFACTS
679           default: '{archive-artifacts}'
680           description: Artifacts to archive to the logs server.
681       - make-parallel-jobs-parameter:
682           make-parallel-jobs: '{make-parallel-jobs}'
683
684     scm:
685       - gerrit-trigger-scm:
686           credentials-id: 'jenkins-gerrit-credentials'
687           refspec: ''
688           choosing-strategy: 'default'
689
690     wrappers:
691       - fdio-infra-wrappers:
692           build-timeout: 120
693
694     triggers:
695       - gerrit-trigger-patch-merged:
696           name: '{project}'
697           branch: '{branch}'
698
699     builders:
700       - config-file-provider:
701           files:
702             - file-id: '.packagecloud'
703               target: '/root'
704       - config-file-provider:
705           files:
706             - file-id: 'packagecloud_api'
707               target: '/root'
708       - shell:
709           !include-raw-escape:
710           - ../scripts/setup_executor_env.sh
711       - shell:
712           !include-raw-escape:
713           - ../scripts/setup_vpp_ubuntu_docker_test.sh
714       - shell:
715           !include-raw-escape:
716           - ../scripts/setup_vpp_dpdk_dev_env.sh
717       - shell:
718           !include-raw-escape:
719           - ../scripts/vpp/build.sh
720
721       - provide-maven-settings:
722           settings-file: 'vpp-settings'
723           global-settings-file: 'global-settings'
724       - shell:
725           !include-raw-escape:
726           - ../scripts/packagecloud_push.sh
727
728     publishers:
729       - fdio-infra-shiplogs:
730           maven-version: 'mvn36'
731 # [end] VPP-MERGE JOB TEMPLATE
732
733 # VPP-BETA-VERIFY JOB TEMPLATE
734 - job-template:
735     name: 'vpp-beta-verify-{stream}-{os}-{executor-arch}'
736
737     project-type: freestyle
738     node: 'builder-{os}-prod-{executor-arch}'
739     concurrent: true
740     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
741
742     build-discarder:
743       daysToKeep: '{build-days-to-keep}'
744       numToKeep: 100
745       artifactDaysToKeep: '{build-artifact-days-to-keep}'
746       artifactNumToKeep: '{build-artifact-num-to-keep}'
747
748     parameters:
749       - project-parameter:
750           project: '{project}'
751       - gerrit-parameter:
752           branch: '{branch}'
753       - os-parameter:
754           os: '{os}'
755       - repo-name-parameter:
756           repo-name: '{repo-stream-part}.{repo-os-part}'
757       - stream-parameter:
758           stream: '{stream}'
759       - string:
760           name: ARCHIVE_ARTIFACTS
761           default: '{archive-artifacts}'
762           description: Artifacts to archive to the logs server.
763       - make-parallel-jobs-parameter:
764           make-parallel-jobs: '{make-parallel-jobs}'
765       - gerrit-refspec-parameter:
766           refspec: '{branch-head-refspec}'
767
768     scm:
769       - gerrit-trigger-scm:
770           credentials-id: 'jenkins-gerrit-credentials'
771           refspec: '$GERRIT_REFSPEC'
772           choosing-strategy: 'gerrit'
773
774     wrappers:
775       - fdio-infra-wrappers:
776           build-timeout: 120
777
778     triggers:
779       - gerrit-trigger-manually-triggered:
780           comment-trigger-value: '{comment-trigger-value}'
781           name: '{project}'
782           branch: '{branch}'
783
784     builders:
785       - shell:
786           !include-raw-escape:
787           - ../scripts/setup_executor_env.sh
788       - shell:
789           !include-raw-escape:
790           - ../scripts/setup_vpp_ubuntu_docker_test.sh
791       - shell:
792           !include-raw-escape:
793           - ../scripts/setup_vpp_dpdk_dev_env.sh
794       - shell:
795           !include-raw-escape:
796           - ../scripts/vpp/build.sh
797
798     publishers:
799       - fdio-infra-shiplogs:
800           maven-version: 'mvn36'
801 # [end] VPP-BETA-VERIFY JOB TEMPLATE
802
803 # VPP-BETA-MERGE JOB TEMPLATE
804 - job-template:
805     name: 'vpp-beta-merge-{stream}-{os}-{executor-arch}'
806
807     project-type: freestyle
808     node: 'builder-{os}-prod-{executor-arch}'
809
810     build-discarder:
811       daysToKeep: '{build-days-to-keep}'
812       numToKeep: 100
813       artifactDaysToKeep: '{build-artifact-days-to-keep}'
814       artifactNumToKeep: '{build-artifact-num-to-keep}'
815
816     parameters:
817       - project-parameter:
818           project: '{project}'
819       - gerrit-parameter:
820           branch: '{branch}'
821       - os-parameter:
822           os: '{os}'
823       - maven-project-parameter:
824           maven: 'mvn33-new'
825       - maven-exec:
826           maven-version: 'mvn33-new'
827       - stream-parameter:
828           stream: '{stream}'
829       - repo-name-parameter:
830           repo-name: '{repo-stream-part}.{repo-os-part}'
831       - string:
832           name: ARCHIVE_ARTIFACTS
833           default: '{archive-artifacts}'
834           description: Artifacts to archive to the logs server.
835       - make-parallel-jobs-parameter:
836           make-parallel-jobs: '{make-parallel-jobs}'
837
838     scm:
839       - gerrit-trigger-scm:
840           credentials-id: 'jenkins-gerrit-credentials'
841           refspec: ''
842           choosing-strategy: 'default'
843
844     wrappers:
845       - fdio-infra-wrappers:
846           build-timeout: '{build-timeout}'
847
848     triggers:
849       - gerrit-trigger-manually-triggered:
850           comment-trigger-value: '{comment-trigger-value}'
851           name: '{project}'
852           branch: '{branch}'
853
854     builders:
855       - config-file-provider:
856           files:
857             - file-id: '.packagecloud'
858               target: '/root'
859       - config-file-provider:
860           files:
861             - file-id: 'packagecloud_api'
862               target: '/root'
863       - shell:
864           !include-raw-escape:
865           - ../scripts/setup_executor_env.sh
866       - shell:
867           !include-raw-escape:
868           - ../scripts/vpp/checkstyle.sh
869       - shell:
870           !include-raw-escape:
871           - ../scripts/setup_vpp_ubuntu_docker_test.sh
872       - shell:
873           !include-raw-escape:
874           - ../scripts/setup_vpp_dpdk_dev_env.sh
875       - shell:
876           !include-raw-escape:
877           - ../scripts/vpp/build.sh
878       - provide-maven-settings:
879           settings-file: 'vpp-settings'
880           global-settings-file: 'global-settings'
881       - shell:
882           !include-raw-escape:
883           - ../scripts/packagecloud_push.sh
884
885     publishers:
886       - fdio-infra-shiplogs:
887           maven-version: 'mvn36'
888 # [end] VPP-BETA-MERGE JOB TEMPLATE
889
890 # VPP-GCC-VERIFY JOB TEMPLATE
891 - job-template:
892     name: 'vpp-gcc-verify-{stream}-{os}-{executor-arch}'
893
894     project-type: freestyle
895     node: 'builder-{os}-prod-{executor-arch}'
896     concurrent: true
897     archive-artifacts: '/tmp/vpp-failed-unittests/*/* **/core'
898
899     build-discarder:
900       daysToKeep: '{build-days-to-keep}'
901       numToKeep: 100
902       artifactDaysToKeep: '{build-artifact-days-to-keep}'
903       artifactNumToKeep: '{build-artifact-num-to-keep}'
904
905     parameters:
906       - project-parameter:
907           project: '{project}'
908       - gerrit-parameter:
909           branch: '{branch}'
910       - os-parameter:
911           os: '{os}'
912       - repo-name-parameter:
913           repo-name: '{repo-stream-part}.{repo-os-part}'
914       - stream-parameter:
915           stream: '{stream}'
916       - string:
917           name: ARCHIVE_ARTIFACTS
918           default: '{archive-artifacts}'
919           description: Artifacts to archive to the logs server.
920       - make-parallel-jobs-parameter:
921           make-parallel-jobs: '{make-parallel-jobs}'
922       - gerrit-refspec-parameter:
923           refspec: '{branch-head-refspec}'
924
925     scm:
926       - gerrit-trigger-scm:
927           credentials-id: 'jenkins-gerrit-credentials'
928           refspec: '$GERRIT_REFSPEC'
929           choosing-strategy: 'gerrit'
930
931     wrappers:
932       - fdio-infra-wrappers:
933           build-timeout: 120
934
935     triggers:
936       - gerrit-trigger-checkstyle:
937           name: '{project}'
938           branch: '{branch}'
939
940     builders:
941       - shell:
942           !include-raw-escape:
943           - ../scripts/setup_executor_env.sh
944       - shell:
945           !include-raw-escape:
946           - ../scripts/setup_vpp_ubuntu_docker_test.sh
947       - shell:
948           !include-raw-escape:
949           - ../scripts/setup_vpp_dpdk_dev_env.sh
950       - shell:
951           !include-raw-escape:
952           - ../scripts/vpp/gcc-build.sh
953
954     publishers:
955       - fdio-infra-shiplogs:
956           maven-version: 'mvn36'
957 # [end] VPP-GCC-VERIFY JOB TEMPLATE
958
959 # VPP-CSIT-VERIFY-DEVICE JOB TEMPLATE
960 - job-template:
961     name: 'vpp-csit-verify-device-{stream}-{device-node-arch}'
962     description: |
963       <ul>
964           <li>executor
965               <ul>
966                   <li>{device-executor}
967               </ul>
968       </ul>
969
970     project-type: freestyle
971     node: '{device-executor}'
972     concurrent: true
973     archive-artifacts: '**/csit_current/**/*.*'
974     latest-only: false
975
976     build-discarder:
977       daysToKeep: '{build-days-to-keep}'
978       numToKeep: 100
979       artifactDaysToKeep: '{build-artifact-days-to-keep}'
980       artifactNumToKeep: '{build-artifact-num-to-keep}'
981
982     parameters:
983       - project-parameter:
984           project: '{project}'
985       - gerrit-parameter:
986           branch: '{branch}'
987       - os-parameter:
988           os: '{os}'
989       - repo-name-parameter:
990           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
991       - gerrit-refspec-parameter
992       - gerrit-event-type-parameter
993       - gerrit-event-comment-text-parameter
994       - gerrit-csit-refspec-parameter
995       - stream-parameter:
996           stream: '{stream}'
997       - string:
998           name: ARCHIVE_ARTIFACTS
999           default: '{archive-artifacts}'
1000           description: Artifacts to archive to the logs server.
1001       - make-parallel-jobs-parameter:
1002           make-parallel-jobs: '{make-parallel-jobs}'
1003
1004     scm:
1005       - gerrit-trigger-scm:
1006           credentials-id: 'jenkins-gerrit-credentials'
1007           refspec: '$GERRIT_REFSPEC'
1008           choosing-strategy: 'gerrit'
1009
1010     wrappers:
1011       - fdio-infra-wrappers:
1012           build-timeout: '90'
1013
1014     triggers:
1015       - '{trigger}':
1016           name: '{project}'
1017           branch: '{branch}'
1018           skip-vote: '{skip-vote}'
1019
1020     builders:
1021       - shell:
1022           !include-raw-escape:
1023           - ../scripts/setup_executor_env.sh
1024       - shell:
1025           !include-raw-escape:
1026           - ../scripts/setup_vpp_ubuntu_docker_test.sh
1027       - shell:
1028           !include-raw-escape:
1029           - ../scripts/setup_vpp_dpdk_dev_env.sh
1030       - shell:
1031           !include-raw-escape:
1032           - ../scripts/vpp/csit-device.sh
1033
1034     publishers:
1035       - robot-report:
1036           output-path: 'csit_current/'
1037
1038       - fdio-infra-shiplogs:
1039           maven-version: 'mvn36'
1040 # [end] VPP-CSIT-VERIFY-DEVICE JOB TEMPLATE
1041
1042 # VPP-CSIT-VERIFY-PERF JOB TEMPLATE
1043 - job-template:
1044     name: 'vpp-csit-verify-perf-{stream}-{node-arch}'
1045     description: |
1046       <ul>
1047           <li>executor
1048               <ul>
1049                   <li>{executor}
1050               </ul>
1051           <li>Objective
1052           Contrary to csit-vpp job, this also measures the parent performance,
1053           and fails if performance regression is detected.
1054           See https://github.com/FDio/csit/blob/master/docs/cpta/methodology/perpatch_performance_tests.rst
1055       </ul>
1056
1057     project-type: freestyle
1058     node: '{executor}'
1059     concurrent: true
1060     archive-artifacts: >
1061       **/csit_current/**/*.*
1062       **/csit_parent/**/*.*
1063     latest-only: false
1064
1065     build-discarder:
1066       daysToKeep: '{build-days-to-keep}'
1067       numToKeep: 100
1068       artifactDaysToKeep: '{build-artifact-days-to-keep}'
1069       artifactNumToKeep: '{build-artifact-num-to-keep}'
1070
1071     parameters:
1072       - project-parameter:
1073           project: '{project}'
1074       - gerrit-parameter:
1075           branch: '{branch}'
1076       - os-parameter:
1077           os: '{os}'
1078       - repo-name-parameter:
1079           repo-name: '{repo-stream-part}.ubuntu.bionic.main'
1080       - gerrit-refspec-parameter
1081       - gerrit-event-type-parameter
1082       - gerrit-event-comment-text-parameter
1083       - gerrit-csit-refspec-parameter
1084       - csit-perf-trial-duration-parameter:
1085           csit-perf-trial-duration: "10.0"
1086       - csit-perf-trial-multiplicity-parameter:
1087           csit-perf-trial-multiplicity: "5"
1088       - stream-parameter:
1089           stream: '{stream}'
1090       - string:
1091           name: ARCHIVE_ARTIFACTS
1092           default: '{archive-artifacts}'
1093           description: Artifacts to archive to the logs server.
1094       - make-parallel-jobs-parameter:
1095           make-parallel-jobs: '{make-parallel-jobs}'
1096
1097     scm:
1098       - gerrit-trigger-scm:
1099           credentials-id: 'jenkins-gerrit-credentials'
1100           refspec: '$GERRIT_REFSPEC'
1101           choosing-strategy: 'gerrit'
1102
1103     wrappers:
1104       - fdio-infra-wrappers-non-activity-timeout:
1105           build-timeout: 300
1106
1107     triggers:
1108       - gerrit-trigger-csit-perftest:
1109           project: '{project}'
1110           branch: '{branch}'
1111           trigger-word: 'perftest-{node-arch}'
1112           skip-vote: true
1113
1114     builders:
1115       - shell:
1116           !include-raw-escape:
1117           - ../scripts/setup_executor_env.sh
1118       - shell:
1119           !include-raw-escape:
1120           - ../scripts/setup_vpp_ubuntu_docker_test.sh
1121       - shell:
1122           !include-raw-escape:
1123           - ../scripts/setup_vpp_dpdk_dev_env.sh
1124       - shell:
1125           !include-raw-escape:
1126           - ../scripts/vpp/csit-perf.sh
1127
1128     publishers:
1129       - robot-report:
1130           output-path: 'csit_current/0/'
1131
1132       - lf-infra-publish
1133 # [end] VPP-CSIT-VERIFY-PERF JOB TEMPLATE
1134
1135 # VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
1136 - job-template:
1137     name: 'vpp-csit-verify-api-crc-{stream}'
1138
1139     project-type: freestyle
1140     node: '{os}-us'
1141     concurrent: true
1142     archive-artifacts: ''
1143     latest-only: false
1144
1145     build-discarder:
1146       daysToKeep: '{build-days-to-keep}'
1147       numToKeep: 100
1148       artifactDaysToKeep: '{build-artifact-days-to-keep}'
1149       artifactNumToKeep: '{build-artifact-num-to-keep}'
1150
1151     parameters:
1152       - project-parameter:
1153           project: '{project}'
1154       - gerrit-parameter:
1155           branch: '{branch}'
1156       - gerrit-refspec-parameter
1157       - gerrit-csit-refspec-parameter
1158       - stream-parameter:
1159           stream: '{stream}'
1160       - string:
1161           name: ARCHIVE_ARTIFACTS
1162           default: '{archive-artifacts}'
1163           description: Artifacts to archive to the logs server.
1164       # Not sure whether not failing has any useful usage,
1165       # but it does not hurt to have some flexibility for future.
1166       - csit-fail-on-crc-mismatch-parameter:
1167           fail-on-crc-mismatch: 'True'
1168
1169     scm:
1170       - gerrit-trigger-scm:
1171           credentials-id: 'jenkins-gerrit-credentials'
1172           refspec: '$GERRIT_REFSPEC'
1173           choosing-strategy: 'gerrit'
1174
1175     wrappers:
1176       - fdio-infra-wrappers-non-activity-timeout:
1177           build-timeout: 300
1178
1179     triggers:
1180       # TODO: Make other verify jobs trigger on success of this one,
1181       # without breaking verification for VPP branches before stable/1908.
1182       - gerrit-trigger-checkstyle:
1183           name: '{project}'
1184           branch: '{branch}'
1185
1186     builders:
1187       - shell:
1188           !include-raw-escape:
1189           - ../scripts/setup_executor_env.sh
1190       - shell:
1191           !include-raw-escape:
1192           - ../scripts/setup_vpp_ubuntu_docker_test.sh
1193       - shell:
1194           !include-raw-escape:
1195           - ../scripts/vpp/check_crc.sh
1196       # TODO: Add sending e-mail notifications to vpp-api-dev@lists.fd.io
1197
1198     publishers:
1199       - fdio-infra-shiplogs:
1200           maven-version: 'mvn36'
1201 # [end] VPP-CSIT-VERIFY-API-CRC JOB TEMPLATE
1202 # [end] JOB TEMPLATE DEFINITIONS