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