2 - functest-jobs: &functest-jobs
4 current-parameters: true
6 - functest-params: &functest-params
7 name: 'functest-params'
19 default: functest-virtual
28 - functest-containers: &functest-containers
29 name: 'functest-containers'
32 container: '{container}'
35 - functest-run-containers: &functest-run-containers
36 name: 'functest-build-containers'
37 <<: *functest-containers
40 - functest-build-containers: &functest-build-containers
41 name: 'functest-build-containers'
42 <<: *functest-containers
47 name: functest-pull-containers
51 if [ "{repo}" = "_" ]; then
52 image={container}:{tag}
53 elif [ "{port}" = "None" ]; then
54 image={repo}/{container}:{tag}
56 image={repo}:{port}/{container}:{tag}
58 sudo docker pull $image
61 name: functest-build-containers
65 if [ "{repo}" = "_" ]; then
66 image={container}:{tag}
67 elif [ "{port}" = "None" ]; then
68 image={repo}/{container}:{tag}
70 image={repo}:{port}/{container}:{tag}
72 if [ "{ref_arg}" = "None" ]; then
75 build_arg="--build-arg {ref_arg}={ref}"
78 sudo docker build $build_arg \
79 --pull=false --no-cache --force-rm=true \
83 name: functest-run-containers
87 [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true
88 if [ "{repo}" = "_" ]; then
89 image={container}:{tag}
90 elif [ "{port}" = "None" ]; then
91 image={repo}/{container}:{tag}
93 image={repo}:{port}/{container}:{tag}
95 sudo docker run --rm \
96 -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
97 -e EXTERNAL_NETWORK=public \
98 -v /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file \
99 -v /home/opnfv/functest/images:/home/opnfv/functest/images \
100 $image run_tests -t {test}
102 gsutil -m cp -r $WORKSPACE/ \
103 gs://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID > /dev/null 2>&1
104 find $WORKSPACE -type f \
106 "http://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID/%P\n"
110 name: functest-remove-images
114 if [ "{repo}" = "_" ]; then
115 image={container}:{tag}
116 elif [ "{port}" = "None" ]; then
117 image={repo}/{container}:{tag}
119 image={repo}:{port}/{container}:{tag}
121 sudo docker rmi $image || true
127 url: https://gerrit.opnfv.org/gerrit/functest
128 refspec: '+refs/changes/*:refs/changes/*'
133 name: 'functest-{repo}-{container}-{tag}-pull'
137 - functest-pull-containers:
138 <<: *functest-containers
141 name: 'functest-opnfv-functest-healthcheck-pull'
143 container: 'functest-healthcheck'
145 - 'functest-{repo}-{container}-{tag}-pull'
148 name: 'functest-opnfv-functest-smoke-pull'
150 container: 'functest-smoke'
152 - 'functest-{repo}-{container}-{tag}-pull'
155 name: 'functest-opnfv-functest-benchmarking-pull'
157 container: 'functest-benchmarking'
159 - 'functest-{repo}-{container}-{tag}-pull'
162 name: 'functest-opnfv-functest-components-pull'
164 container: 'functest-components'
166 - 'functest-{repo}-{container}-{tag}-pull'
169 name: 'functest-opnfv-functest-vnf-pull'
171 container: 'functest-vnf'
173 - 'functest-{repo}-{container}-{tag}-pull'
176 name: 'functest-opnfv-functest-features-pull'
178 container: 'functest-features'
180 - 'functest-{repo}-{container}-{tag}-pull'
183 name: 'functest-{repo}-{container}-{tag}-rmi'
187 - functest-remove-images:
188 <<: *functest-containers
191 name: 'functest-opnfv-functest-healthcheck-rmi'
193 container: 'functest-healthcheck'
195 - 'functest-{repo}-{container}-{tag}-rmi'
198 name: 'functest-opnfv-functest-smoke-rmi'
200 container: 'functest-smoke'
202 - 'functest-{repo}-{container}-{tag}-rmi'
205 name: 'functest-opnfv-functest-benchmarking-rmi'
207 container: 'functest-benchmarking'
209 - 'functest-{repo}-{container}-{tag}-rmi'
212 name: 'functest-opnfv-functest-components-rmi'
214 container: 'functest-components'
216 - 'functest-{repo}-{container}-{tag}-rmi'
219 name: 'functest-opnfv-functest-vnf-rmi'
221 container: 'functest-vnf'
223 - 'functest-{repo}-{container}-{tag}-rmi'
226 name: 'functest-opnfv-functest-features-rmi'
228 container: 'functest-features'
230 - 'functest-{repo}-{container}-{tag}-rmi'
233 name: 'functest-{repo}-{container}-{tag}-{test}-run'
237 - functest-run-containers:
238 <<: *functest-run-containers
241 name: 'functest-opnfv-functest-healthcheck'
243 container: 'functest-healthcheck'
259 - 'functest-{repo}-{container}-{tag}-{test}-run'
262 name: 'functest-opnfv-functest-smoke'
264 container: 'functest-smoke'
267 - neutron-tempest-plugin-api
278 - 'functest-{repo}-{container}-{tag}-{test}-run'
281 name: 'functest-opnfv-functest-benchmarking'
283 container: 'functest-benchmarking'
288 - 'functest-{repo}-{container}-{tag}-{test}-run'
291 name: 'functest-opnfv-functest-components'
293 container: 'functest-components'
299 - 'functest-{repo}-{container}-{tag}-{test}-run'
302 name: 'functest-opnfv-functest-vnf'
304 container: 'functest-vnf'
312 - 'functest-{repo}-{container}-{tag}-{test}-run'
315 name: 'functest-opnfv-functest-features'
317 container: 'functest-features'
319 - doctor-notification
326 - 'functest-{repo}-{container}-{tag}-{test}-run'
329 name: 'functest-{tag}-daily'
330 project-type: multijob
337 use-build-blocker: true
338 blocking-level: 'NODE'
340 - '^functest-[a-z]+-(daily|check|gate)$'
343 name: remove former images
345 - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
347 - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
349 - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
351 - name: 'functest-opnfv-functest-components-{tag}-rmi'
353 - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
355 - name: 'functest-opnfv-functest-features-{tag}-rmi'
358 name: pull containers
360 - name: 'functest-opnfv-functest-healthcheck-{tag}-pull'
362 - name: 'functest-opnfv-functest-smoke-{tag}-pull'
364 - name: 'functest-opnfv-functest-benchmarking-{tag}-pull'
366 - name: 'functest-opnfv-functest-components-{tag}-pull'
368 - name: 'functest-opnfv-functest-vnf-{tag}-pull'
370 - name: 'functest-opnfv-functest-features-{tag}-pull'
373 name: opnfv/functest-healthcheck:{tag}
375 - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
377 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
379 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
381 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
383 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
385 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
387 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
389 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
391 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
393 - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
395 - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
397 - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
399 - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
402 name: opnfv/functest-smoke:{tag}
404 - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
406 - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
408 - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
410 - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
412 - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
414 - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
416 - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
418 - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
420 - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
422 - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
424 - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
427 name: opnfv/functest-benchmarking:{tag}
429 - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
431 - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
434 name: opnfv/functest-components:{tag}
436 - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
438 - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
440 - name: 'functest-opnfv-functest-components-{tag}-rally_full-run'
443 name: opnfv/functest-vnf:{tag}
445 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
447 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
449 - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
451 - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
453 - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
456 name: opnfv/functest-features:{tag}
458 - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
460 - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
462 - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
464 - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
466 - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
468 - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
472 name: 'functest-{repo}-{container}-{tag}-gate'
479 - functest-build-containers:
480 <<: *functest-build-containers
484 name: 'functest-{repo}-{container}-{tag}-check'
493 - functest-build-containers:
494 <<: *functest-build-containers
498 name: 'functest-_-alpine-3.8-rmi'
504 - 'functest-{repo}-{container}-{tag}-rmi'
507 name: 'functest-_-alpine-3.8-pull'
513 - 'functest-{repo}-{container}-{tag}-pull'
516 name: functest-opnfv-functest-core-{tag}-build
518 container: functest-core
522 - 'functest-{repo}-{container}-{tag}-gate'
523 - 'functest-{repo}-{container}-{tag}-check'
526 name: functest-opnfv-functest-tempest-{tag}-build
528 container: functest-tempest
532 - 'functest-{repo}-{container}-{tag}-gate'
533 - 'functest-{repo}-{container}-{tag}-check'
536 name: functest-opnfv-functest-healthcheck-{tag}-build
538 container: functest-healthcheck
540 path: docker/healthcheck
542 - 'functest-{repo}-{container}-{tag}-gate'
543 - 'functest-{repo}-{container}-{tag}-check'
546 name: functest-opnfv-functest-smoke-{tag}-build
548 container: functest-smoke
552 - 'functest-{repo}-{container}-{tag}-gate'
553 - 'functest-{repo}-{container}-{tag}-check'
556 name: functest-opnfv-functest-benchmarking-{tag}-build
558 container: functest-benchmarking
560 path: docker/benchmarking
562 - 'functest-{repo}-{container}-{tag}-gate'
563 - 'functest-{repo}-{container}-{tag}-check'
566 name: functest-opnfv-functest-components-{tag}-build
568 container: functest-components
570 path: docker/components
572 - 'functest-{repo}-{container}-{tag}-gate'
573 - 'functest-{repo}-{container}-{tag}-check'
576 name: functest-opnfv-functest-vnf-{tag}-build
578 container: functest-vnf
582 - 'functest-{repo}-{container}-{tag}-gate'
583 - 'functest-{repo}-{container}-{tag}-check'
586 name: functest-opnfv-functest-features-{tag}-build
588 container: functest-features
590 path: docker/features
592 - 'functest-{repo}-{container}-{tag}-gate'
593 - 'functest-{repo}-{container}-{tag}-check'
596 name: 'functest-{tag}-check'
597 project-type: multijob
604 use-build-blocker: true
605 blocking-level: 'NODE'
607 - '^functest-[a-z]+-(daily|check|gate)$'
610 name: remove former images
612 - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
614 - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
616 - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
618 - name: 'functest-opnfv-functest-components-{tag}-rmi'
620 - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
622 - name: 'functest-opnfv-functest-features-{tag}-rmi'
625 name: remove dependencies
627 - name: 'functest-_-alpine-3.8-rmi'
630 name: pull dependencies
632 - name: 'functest-_-alpine-3.8-pull'
635 name: build opnfv/functest-core
637 - name: 'functest-opnfv-functest-core-{tag}-check'
640 name: build opnfv/functest-tempest
642 - name: 'functest-opnfv-functest-tempest-{tag}-check'
645 name: build containers
647 - name: 'functest-opnfv-functest-healthcheck-{tag}-check'
649 - name: 'functest-opnfv-functest-smoke-{tag}-check'
651 - name: 'functest-opnfv-functest-benchmarking-{tag}-check'
653 - name: 'functest-opnfv-functest-components-{tag}-check'
655 - name: 'functest-opnfv-functest-vnf-{tag}-check'
657 - name: 'functest-opnfv-functest-features-{tag}-check'
660 name: opnfv/functest-healthcheck:{tag}
662 - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
664 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
666 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
668 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
670 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
672 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
674 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
676 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
678 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
680 - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
682 - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
684 - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
686 - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
689 name: opnfv/functest-smoke:{tag}
691 - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
693 - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
695 - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
697 - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
699 - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
701 - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
703 - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
705 - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
707 - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
709 - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
711 - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
714 name: opnfv/functest-benchmarking:{tag}
716 - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
718 - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
721 name: opnfv/functest-components:{tag}
723 - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
725 - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
727 - name: 'functest-opnfv-functest-components-{tag}-rally_full-run'
730 name: opnfv/functest-vnf:{tag}
732 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
734 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
736 - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
738 - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
740 - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
743 name: opnfv/functest-features:{tag}
745 - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
747 - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
749 - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
751 - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
753 - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
755 - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
759 name: functest-patchset-created
762 server-name: 'gerrit.opnfv.org'
764 - patchset-created-event
765 - comment-added-contains-event:
766 comment-contains-value: 'recheck'
767 - comment-added-contains-event:
768 comment-contains-value: 'reverify'
770 - project-compare-type: 'ANT'
771 project-pattern: 'functest'
773 - branch-compare-type: 'ANT'
774 branch-pattern: '**/{branch}'
782 name: 'functest-{tag}-gate'
783 project-type: multijob
785 - functest-patchset-created:
791 use-build-blocker: true
792 blocking-level: 'NODE'
794 - '^functest-[a-z]+-(daily|check|gate)$'
797 name: remove former images
799 - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
801 - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
803 - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
805 - name: 'functest-opnfv-functest-components-{tag}-rmi'
807 - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
809 - name: 'functest-opnfv-functest-features-{tag}-rmi'
812 name: remove dependencies
814 - name: 'functest-_-alpine-3.8-rmi'
817 name: pull dependencies
819 - name: 'functest-_-alpine-3.8-pull'
822 name: build opnfv/functest-core
824 - name: 'functest-opnfv-functest-core-{tag}-gate'
827 name: build opnfv/functest-tempest
829 - name: 'functest-opnfv-functest-tempest-{tag}-gate'
832 name: build containers
834 - name: 'functest-opnfv-functest-healthcheck-{tag}-gate'
836 - name: 'functest-opnfv-functest-smoke-{tag}-gate'
838 - name: 'functest-opnfv-functest-benchmarking-{tag}-gate'
840 - name: 'functest-opnfv-functest-components-{tag}-gate'
842 - name: 'functest-opnfv-functest-vnf-{tag}-gate'
844 - name: 'functest-opnfv-functest-features-{tag}-gate'
847 name: opnfv/functest-healthcheck:{tag}
849 - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
851 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
853 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
855 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
857 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
859 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
861 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
863 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
865 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
867 - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
869 - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
871 - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
873 - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
876 name: opnfv/functest-smoke:{tag}
878 - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
880 - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
882 - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
884 - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
886 - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
888 - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
890 - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
892 - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
894 - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
896 - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
898 - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
901 name: opnfv/functest-benchmarking:{tag}
903 - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
905 - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
908 name: opnfv/functest-components:{tag}
910 - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
912 - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
914 - name: 'functest-opnfv-functest-components-{tag}-rally_full-run'
917 name: opnfv/functest-vnf:{tag}
919 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
921 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
923 - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
925 - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
927 - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
930 name: opnfv/functest-features:{tag}
932 - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
934 - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
936 - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
938 - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
940 - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
942 - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
949 - 'functest-{tag}-daily'
950 - 'functest-{tag}-check'
951 - 'functest-{tag}-gate'
963 regex: ^functest-[a-z]+-(daily|check|gate)$