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