Update Functest Gates according to XtestingCI
[releng.git] / jjb / functest / xtesting.yaml
1 ---
2 - xtesting-containers: &xtesting-containers
3     name: 'xtesting-containers'
4     repo: '{repo}'
5     port: '{port}'
6     container: '{container}'
7     tag: '{tag}'
8
9 - xtesting-params: &xtesting-params
10     name: 'xtesting-params'
11     repo: 'opnfv'
12     port:
13     tag:
14       - latest:
15           from:
16           buildargs:
17           branch: master
18           slave: lf-virtual1
19           dependency: 3.13
20       - wallaby:
21           from:
22           buildargs:
23           branch: stable/wallaby
24           slave: lf-virtual1
25           dependency: 3.13
26       - leguer:
27           from:
28           buildargs:
29           branch: stable/leguer
30           slave: lf-virtual1
31           dependency: 3.12
32       - kali:
33           from:
34           buildargs:
35           branch: stable/kali
36           slave: lf-virtual1
37           dependency: 3.11
38       - jerma:
39           from:
40           buildargs:
41           branch: stable/jerma
42           slave: lf-virtual1
43           dependency: 3.10
44
45 - xtesting-jobs: &xtesting-jobs
46     name: 'xtesting-jobs'
47     current-parameters: true
48
49 - parameter:
50     name: xtesting-slave
51     parameters:
52       - label:
53           name: slave
54           default: '{slave}'
55
56 - parameter:
57     name: xtesting-build_tag
58     parameters:
59       - random-string:
60           name: build_tag
61
62 - xtesting-run-containers: &xtesting-run-containers
63     name: 'xtesting-run-containers'
64     <<: *xtesting-containers
65     test: '{test}'
66     privileged: '{privileged}'
67     network: '{network}'
68
69 - builder:
70     name: xtesting-pull-containers
71     builders:
72       - shell: |
73           set +x
74           if [ "{repo}" = "_" ]; then
75             image={container}:{tag}
76           elif [ "{port}" = "None" ]; then
77             image={repo}/{container}:{tag}
78           else
79             image={repo}:{port}/{container}:{tag}
80           fi
81           sudo docker pull $image
82
83 - builder:
84     name: xtesting-run-containers
85     builders:
86       - shell: |
87           set +x
88           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true
89           if [ "{repo}" = "_" ]; then
90             image={container}:{tag}
91           elif [ "{port}" = "None" ]; then
92             image={repo}/{container}:{tag}
93           else
94             image={repo}:{port}/{container}:{tag}
95           fi
96           sudo docker run --rm \
97             --privileged={privileged} \
98             --network={network} \
99             -e S3_ENDPOINT_URL=https://storage.googleapis.com \
100             -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
101             -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
102             -v /home/opnfv/xtesting/.boto:/root/.boto \
103             -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \
104             -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \
105             -e NODE_NAME=$slave \
106             -e BUILD_TAG=$BUILD_TAG \
107             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
108             $image run_tests -t {test} -p -r
109
110 - builder:
111     name: xtesting-remove-images
112     builders:
113       - shell: |
114           set +x
115           if [ "{repo}" = "_" ]; then
116             image={container}:{tag}
117           elif [ "{port}" = "None" ]; then
118             image={repo}/{container}:{tag}
119           else
120             image={repo}:{port}/{container}:{tag}
121           fi
122           sudo docker rmi $image || true
123
124 - job-template:
125     name: 'xtesting-{repo}-{container}-{tag}-pull'
126     parameters:
127       - xtesting-slave:
128           slave: '{slave}'
129     builders:
130       - xtesting-pull-containers:
131           <<: *xtesting-containers
132
133 - project:
134     name: 'xtesting-opnfv-xtesting-pull'
135     <<: *xtesting-params
136     container: 'xtesting'
137     jobs:
138       - 'xtesting-{repo}-{container}-{tag}-pull'
139
140 - project:
141     name: 'xtesting-opnfv-xtesting-mts-pull'
142     <<: *xtesting-params
143     container: 'xtesting-mts'
144     jobs:
145       - 'xtesting-{repo}-{container}-{tag}-pull'
146
147 - job-template:
148     name: 'xtesting-{repo}-{container}-{tag}-rmi'
149     parameters:
150       - xtesting-slave:
151           slave: '{slave}'
152     builders:
153       - xtesting-remove-images:
154           <<: *xtesting-containers
155
156 - project:
157     name: 'xtesting-opnfv-xtesting-rmi'
158     <<: *xtesting-params
159     container: 'xtesting'
160     jobs:
161       - 'xtesting-{repo}-{container}-{tag}-rmi'
162
163 - project:
164     name: 'xtesting-opnfv-xtesting-mts-rmi'
165     <<: *xtesting-params
166     container: 'xtesting-mts'
167     jobs:
168       - 'xtesting-{repo}-{container}-{tag}-rmi'
169
170 - job-template:
171     name: 'xtesting-{repo}-{container}-{tag}-{test}-run'
172     parameters:
173       - xtesting-slave:
174           slave: '{slave}'
175       - xtesting-build_tag:
176           build_tag: ''
177     builders:
178       - xtesting-run-containers:
179           <<: *xtesting-run-containers
180
181 - project:
182     name: 'xtesting-opnfv-xtesting'
183     <<: *xtesting-params
184     container: 'xtesting'
185     test:
186       - first
187       - second
188       - third
189       - fourth
190       - fifth
191       - sixth
192       - eighth
193     privileged: 'false'
194     network: bridge
195     exclude:
196       - tag: leguer
197         test: eighth
198       - tag: kali
199         test: eighth
200       - tag: jerma
201         test: eighth
202     jobs:
203       - 'xtesting-{repo}-{container}-{tag}-{test}-run'
204
205 - project:
206     name: 'xtesting-opnfv-xtesting-mts'
207     <<: *xtesting-params
208     container: 'xtesting-mts'
209     test:
210       - seventh
211     privileged: 'false'
212     network: bridge
213     jobs:
214       - 'xtesting-{repo}-{container}-{tag}-{test}-run'
215
216
217 - builder:
218     name: xtesting-zip
219     builders:
220       - shell: |
221           set +x
222           [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true
223           if [ "{repo}" = "_" ]; then
224             image={container}:{tag}
225           elif [ "{port}" = "None" ]; then
226             image={repo}/{container}:{tag}
227           else
228             image={repo}:{port}/{container}:{tag}
229           fi
230           sudo docker run --rm \
231             -e S3_ENDPOINT_URL=https://storage.googleapis.com \
232             -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting \
233             -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting \
234             -v /home/opnfv/xtesting/.boto:/root/.boto \
235             -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \
236             -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \
237             -e BUILD_TAG=$BUILD_TAG \
238             -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
239             $image zip_campaign
240
241 - job-template:
242     name: 'xtesting-{tag}-zip'
243     parameters:
244       - xtesting-slave:
245           slave: '{slave}'
246       - xtesting-build_tag:
247           build_tag: ''
248     builders:
249       - xtesting-zip:
250           <<: *xtesting-containers
251
252 - project:
253     name: 'xtesting-{tag}-zip'
254     <<: *xtesting-params
255     container: 'xtesting'
256     jobs:
257       - 'xtesting-{tag}-zip'
258
259 - job-template:
260     name: 'xtesting-{tag}-daily'
261     project-type: multijob
262     triggers:
263       - timed: '@daily'
264     parameters:
265       - xtesting-slave:
266           slave: '{slave}'
267       - xtesting-build_tag:
268           build_tag: ''
269     # PyYAML and yamllint differ here
270     # see https://github.com/yaml/pyyaml/issues/234
271     # yamllint disable rule:indentation
272     properties:
273       - build-blocker:
274           blocking-jobs:
275           - ^xtesting-(pi-)*{tag}-(daily|docker|review)$
276     # yamllint enable rule:indentation
277     builders:
278       - multijob:
279           name: remove former images
280           projects:
281             - name: 'xtesting-opnfv-xtesting-{tag}-rmi'
282               <<: *xtesting-jobs
283             - name: 'xtesting-opnfv-xtesting-mts-{tag}-rmi'
284               <<: *xtesting-jobs
285       - multijob:
286           name: pull containers
287           projects:
288             - name: 'xtesting-opnfv-xtesting-{tag}-pull'
289               <<: *xtesting-jobs
290             - name: 'xtesting-opnfv-xtesting-mts-{tag}-pull'
291               <<: *xtesting-jobs
292       - multijob:
293           name: opnfv/xtesting:{tag}
294           projects:
295             - name: 'xtesting-opnfv-xtesting-{tag}-first-run'
296               <<: *xtesting-jobs
297             - name: 'xtesting-opnfv-xtesting-{tag}-second-run'
298               <<: *xtesting-jobs
299             - name: 'xtesting-opnfv-xtesting-{tag}-third-run'
300               <<: *xtesting-jobs
301             - name: 'xtesting-opnfv-xtesting-{tag}-fourth-run'
302               <<: *xtesting-jobs
303             - name: 'xtesting-opnfv-xtesting-{tag}-fifth-run'
304               <<: *xtesting-jobs
305             - name: 'xtesting-opnfv-xtesting-{tag}-sixth-run'
306               <<: *xtesting-jobs
307             - name: 'xtesting-opnfv-xtesting-{tag}-eighth-run'
308               <<: *xtesting-jobs
309       - multijob:
310           name: opnfv/xtesting-mts:{tag}
311           projects:
312             - name: 'xtesting-opnfv-xtesting-mts-{tag}-seventh-run'
313               <<: *xtesting-jobs
314       - multijob:
315           name: dump all campaign data
316           projects:
317             - name: 'xtesting-{tag}-zip'
318               <<: *xtesting-jobs
319
320 - project:
321     name: 'xtesting-daily'
322     <<: *xtesting-params
323     jobs:
324       - 'xtesting-{tag}-daily'
325
326 - view:
327     name: xtesting
328     view-type: list
329     columns:
330       - status
331       - weather
332       - job
333       - last-success
334       - last-failure
335       - last-duration
336     regex: ^xtesting-[a-z0-9.]+-daily$
337
338 - xtesting-build-containers: &xtesting-build-containers
339     name: 'xtesting-build-containers'
340     <<: *xtesting-containers
341     ref_arg: '{ref_arg}'
342     path: '{path}'
343     buildargs: '{buildargs}'
344     from: '{from}'
345
346 - builder:
347     name: xtesting-build-containers
348     builders:
349       - shell: |
350           set +x
351           if [ "{repo}" = "_" ]; then
352             image={container}:{tag}
353           elif [ "{port}" = "None" ]; then
354             image={repo}/{container}:{tag}
355           else
356             image={repo}:{port}/{container}:{tag}
357           fi
358           build_args=""
359           if [ "{buildargs}" != "None" ]; then
360             build_args="{buildargs}"
361           fi
362           if [ "{ref_arg}" != "None" ]; then
363             build_args="$build_args --build-arg {ref_arg}={ref}"
364           fi
365           cd {path}
366           if [ "{from}" != "None" ]; then
367               sed -i {from} Dockerfile
368           fi
369           sudo docker build $build_args \
370             --pull=false --no-cache --force-rm=true \
371             -t $image .
372
373 - scm:
374     name: xtesting-scm
375     scm:
376       - git:
377           url: 'https://gerrit.opnfv.org/gerrit/functest-xtesting'
378           refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
379           branches:
380             - '{ref}'
381
382 - xtesting-dep: &xtesting-dep
383     name: 'xtesting-containers'
384     repo: '{repo}'
385     port: '{port}'
386     tag: '{tag}'
387     dependency: '{dependency}'
388
389 - builder:
390     name: xtesting-pull-dep-images
391     builders:
392       - shell: |
393           set +x
394           if [ "_" = "_" ]; then
395             image=alpine:{dependency}
396           elif [ "" = "None" ]; then
397             image=_/alpine:{dependency}
398           else
399             image=_:/alpine:{dependency}
400           fi
401           sudo docker pull $image || true
402
403 - builder:
404     name: xtesting-remove-dep-images
405     builders:
406       - shell: |
407           set +x
408           if [ "_" = "_" ]; then
409             image=alpine:{dependency}
410           elif [ "" = "None" ]; then
411             image=_/alpine:{dependency}
412           else
413             image=_:/alpine:{dependency}
414           fi
415           sudo docker rmi $image || true
416
417 - job-template:
418     name: 'xtesting-{repo}-{tag}-dep-pull'
419     parameters:
420       - xtesting-slave:
421           slave: '{slave}'
422     builders:
423       - xtesting-pull-dep-images:
424           <<: *xtesting-dep
425
426 - project:
427     name: 'xtesting-{repo}-{tag}-dep-pull'
428     <<: *xtesting-params
429     jobs:
430       - 'xtesting-{repo}-{tag}-dep-pull'
431
432 - job-template:
433     name: 'xtesting-{repo}-{tag}-dep-rmi'
434     parameters:
435       - xtesting-slave:
436           slave: '{slave}'
437     builders:
438       - xtesting-remove-dep-images:
439           <<: *xtesting-dep
440
441 - project:
442     name: 'xtesting-{repo}-{tag}-dep-rmi'
443     <<: *xtesting-params
444     jobs:
445       - 'xtesting-{repo}-{tag}-dep-rmi'
446
447 - builder:
448     name: xtesting-tox
449     builders:
450       - shell: |
451           set +x
452           sudo apt-get update && sudo apt-get install \
453             software-properties-common gpg -y
454           sudo add-apt-repository -y ppa:deadsnakes/ppa
455           sudo apt-get update && sudo apt-get install python3.8 \
456             python3.8-dev python3.8-distutils \
457             python3.7 python3.7-dev python3.6 python3.6-dev \
458             python python-dev python3-pip enchant -y
459           sudo pip3 install tox tox-pip-version
460
461           tox
462
463 - job-template:
464     name: 'xtesting-{tag}-tox'
465     scm:
466       - xtesting-scm:
467           ref: $GERRIT_REFSPEC
468     triggers:
469       - xtesting-patchset-created:
470           branch: '{branch}'
471     parameters:
472       - xtesting-slave:
473           slave: '{slave}'
474     builders:
475       - xtesting-tox:
476
477 - project:
478     name: xtesting-tox
479     <<: *xtesting-params
480     jobs:
481       - 'xtesting-{tag}-tox'
482
483 - job-template:
484     name: 'xtesting-{repo}-{container}-{tag}-gate'
485     parameters:
486       - xtesting-slave:
487           slave: '{slave}'
488     scm:
489       - xtesting-scm:
490           ref: $GERRIT_REFSPEC
491     builders:
492       - xtesting-build-containers:
493           <<: *xtesting-build-containers
494           ref: $GERRIT_REFSPEC
495           buildargs: '{buildargs}'
496
497 - project:
498     name: xtesting-opnfv-xtesting-{tag}-gate
499     <<: *xtesting-params
500     container: xtesting
501     ref_arg: BRANCH
502     path: docker/core
503     jobs:
504       - 'xtesting-{repo}-{container}-{tag}-gate'
505
506 - project:
507     name: xtesting-opnfv-xtesting-mts-{tag}-gate
508     <<: *xtesting-params
509     container: xtesting-mts
510     ref_arg: BRANCH
511     path: docker/mts
512     jobs:
513       - 'xtesting-{repo}-{container}-{tag}-gate'
514
515 - trigger:
516     name: xtesting-patchset-created
517     triggers:
518       - gerrit:
519           trigger-on:
520             - patchset-created-event
521             - comment-added-contains-event:
522                 comment-contains-value: 'recheck'
523             - comment-added-contains-event:
524                 comment-contains-value: 'reverify'
525           projects:
526             - project-compare-type: 'ANT'
527               project-pattern: 'functest-xtesting'
528               branches:
529                 - branch-compare-type: 'ANT'
530                   branch-pattern: '**/{branch}'
531
532 - job-template:
533     name: 'xtesting-{tag}-review'
534     project-type: multijob
535     triggers:
536       - xtesting-patchset-created:
537           branch: '{branch}'
538     parameters:
539       - xtesting-slave:
540           slave: '{slave}'
541       - xtesting-build_tag:
542           build_tag: ''
543     # PyYAML and yamllint differ here
544     # see https://github.com/yaml/pyyaml/issues/234
545     # yamllint disable rule:indentation
546     properties:
547       - build-blocker:
548           blocking-jobs:
549           - ^xtesting-(pi-)*{tag}-(daily|docker|review)$
550     # yamllint enable rule:indentation
551     builders:
552       - multijob:
553           name: remove former images
554           projects:
555             - name: 'xtesting-opnfv-xtesting-{tag}-rmi'
556               <<: *xtesting-jobs
557             - name: 'xtesting-opnfv-xtesting-mts-{tag}-rmi'
558               <<: *xtesting-jobs
559       - multijob:
560           name: remove dependency
561           projects:
562             - name: 'xtesting-{repo}-{tag}-dep-rmi'
563               <<: *xtesting-jobs
564       - multijob:
565           name: pull dependency
566           projects:
567             - name: 'xtesting-{repo}-{tag}-dep-pull'
568               <<: *xtesting-jobs
569       - multijob:
570           name: opnfv/xtesting
571           projects:
572             - name: 'xtesting-opnfv-xtesting-{tag}-gate'
573               <<: *xtesting-jobs
574       - multijob:
575           name: opnfv/xtesting-mts
576           projects:
577             - name: 'xtesting-opnfv-xtesting-mts-{tag}-gate'
578               <<: *xtesting-jobs
579       - multijob:
580           name: opnfv/xtesting:{tag}
581           projects:
582             - name: 'xtesting-opnfv-xtesting-{tag}-first-run'
583               <<: *xtesting-jobs
584             - name: 'xtesting-opnfv-xtesting-{tag}-second-run'
585               <<: *xtesting-jobs
586             - name: 'xtesting-opnfv-xtesting-{tag}-third-run'
587               <<: *xtesting-jobs
588             - name: 'xtesting-opnfv-xtesting-{tag}-fourth-run'
589               <<: *xtesting-jobs
590             - name: 'xtesting-opnfv-xtesting-{tag}-fifth-run'
591               <<: *xtesting-jobs
592             - name: 'xtesting-opnfv-xtesting-{tag}-sixth-run'
593               <<: *xtesting-jobs
594             - name: 'xtesting-opnfv-xtesting-{tag}-eighth-run'
595               <<: *xtesting-jobs
596       - multijob:
597           name: opnfv/xtesting-mts:{tag}
598           projects:
599             - name: 'xtesting-opnfv-xtesting-mts-{tag}-seventh-run'
600               <<: *xtesting-jobs
601
602 - project:
603     name: 'xtesting-review'
604     <<: *xtesting-params
605     jobs:
606       - 'xtesting-{tag}-review'
607
608 - view:
609     name: xtesting-review
610     view-type: list
611     columns:
612       - status
613       - weather
614       - job
615       - last-success
616       - last-failure
617       - last-duration
618     regex: ^xtesting-[a-z0-9.]+-review$
619
620 - view:
621     name: xtesting-tox
622     view-type: list
623     columns:
624       - status
625       - weather
626       - job
627       - last-success
628       - last-failure
629       - last-duration
630     regex: ^xtesting-[a-z0-9.]+-tox$
631
632 - builder:
633     name: xtesting-push-containers
634     builders:
635       - shell: |
636           set +x
637           if [ "{repo}" = "_" ]; then
638             image={container}:{tag}
639           elif [ "{port}" = "None" ]; then
640             image={repo}/{container}:{tag}
641           else
642             image={repo}:{port}/{container}:{tag}
643           fi
644           sudo docker push $image
645
646 - trigger:
647     name: xtesting-commit
648     triggers:
649       - pollscm:
650           cron: "*/30 * * * *"
651
652 - job-template:
653     name: 'xtesting-{repo}-{container}-{tag}-build'
654     parameters:
655       - xtesting-slave:
656           slave: '{slave}'
657     scm:
658       - xtesting-scm:
659           ref: '{branch}'
660     builders:
661       - xtesting-build-containers:
662           <<: *xtesting-build-containers
663           ref: '{branch}'
664           buildargs: '{buildargs}'
665       - xtesting-push-containers:
666           <<: *xtesting-build-containers
667           ref: '{branch}'
668
669 - project:
670     name: xtesting-opnfv-xtesting-{tag}-build
671     <<: *xtesting-params
672     container: xtesting
673     ref_arg: BRANCH
674     path: docker/core
675     jobs:
676       - 'xtesting-{repo}-{container}-{tag}-build'
677
678 - project:
679     name: xtesting-opnfv-xtesting-mts-{tag}-build
680     <<: *xtesting-params
681     container: xtesting-mts
682     ref_arg: BRANCH
683     path: docker/mts
684     jobs:
685       - 'xtesting-{repo}-{container}-{tag}-build'
686
687 - job-template:
688     name: 'xtesting-{tag}-docker'
689     project-type: multijob
690     triggers:
691       - xtesting-commit
692     scm:
693       - xtesting-scm:
694           ref: '{branch}'
695     parameters:
696       - xtesting-slave:
697           slave: '{slave}'
698     # PyYAML and yamllint differ here
699     # see https://github.com/yaml/pyyaml/issues/234
700     # yamllint disable rule:indentation
701     properties:
702       - build-blocker:
703           blocking-jobs:
704           - ^xtesting-(pi-)*{tag}-(daily|docker|review)$
705     # yamllint enable rule:indentation
706     builders:
707       - multijob:
708           name: remove dependency
709           projects:
710             - name: 'xtesting-{repo}-{tag}-dep-rmi'
711               <<: *xtesting-jobs
712       - multijob:
713           name: pull dependency
714           projects:
715             - name: 'xtesting-{repo}-{tag}-dep-pull'
716               <<: *xtesting-jobs
717       - multijob:
718           name: opnfv/xtesting
719           projects:
720             - name: 'xtesting-opnfv-xtesting-{tag}-build'
721               <<: *xtesting-jobs
722       - multijob:
723           name: opnfv/xtesting-mts
724           projects:
725             - name: 'xtesting-opnfv-xtesting-mts-{tag}-build'
726               <<: *xtesting-jobs
727
728 - builder:
729     name: xtesting-trivy
730     builders:
731       - shell: |
732           sudo apt-get update && sudo apt-get install curl -y
733
734           curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b .
735           if [ "{repo}" = "_" ]; then
736             image={container}:{tag}
737           elif [ "{port}" = "None" ]; then
738             image={repo}/{container}:{tag}
739           else
740             image={repo}:{port}/{container}:{tag}
741           fi
742           ./trivy --exit-code 1 $image
743
744 - job-template:
745     name: 'xtesting-{repo}-{container}-{tag}-trivy'
746     triggers:
747       - timed: '@daily'
748     parameters:
749       - xtesting-slave:
750           slave: '{slave}'
751     builders:
752       - xtesting-trivy:
753           <<: *xtesting-containers
754
755 - project:
756     name: 'xtesting-opnfv-xtesting-trivy'
757     <<: *xtesting-params
758     container: 'xtesting'
759     jobs:
760       - 'xtesting-{repo}-{container}-{tag}-trivy'
761
762 - project:
763     name: 'xtesting-opnfv-xtesting-mts-trivy'
764     <<: *xtesting-params
765     container: 'xtesting-mts'
766     jobs:
767       - 'xtesting-{repo}-{container}-{tag}-trivy'
768
769 - project:
770     name: 'xtesting'
771     <<: *xtesting-params
772     jobs:
773       - 'xtesting-{tag}-docker'
774
775 - view:
776     name: xtesting-docker
777     view-type: list
778     columns:
779       - status
780       - weather
781       - job
782       - last-success
783       - last-failure
784       - last-duration
785     regex: ^xtesting-[a-z0-9.]+-docker$
786
787 - view:
788     name: xtesting-trivy
789     view-type: list
790     columns:
791       - status
792       - weather
793       - job
794       - last-success
795       - last-failure
796       - last-duration
797     regex: (?!xtesting-pi)^xtesting-[a-z-0-9.]+-trivy$