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