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