2 - functest-jobs: &functest-jobs
4 current-parameters: true
6 - functest-params: &functest-params
7 name: 'functest-params'
23 default: functest-virtual
32 - functest-containers: &functest-containers
33 name: 'functest-containers'
36 container: '{container}'
39 - functest-run-containers: &functest-run-containers
40 name: 'functest-build-containers'
41 <<: *functest-containers
44 - functest-build-containers: &functest-build-containers
45 name: 'functest-build-containers'
46 <<: *functest-containers
51 name: functest-pull-containers
55 if [ "{repo}" = "_" ]; then
56 image={container}:{tag}
57 elif [ "{port}" = "None" ]; then
58 image={repo}/{container}:{tag}
60 image={repo}:{port}/{container}:{tag}
62 sudo docker pull $image
65 name: functest-build-containers
69 if [ "{repo}" = "_" ]; then
70 image={container}:{tag}
71 elif [ "{port}" = "None" ]; then
72 image={repo}/{container}:{tag}
74 image={repo}:{port}/{container}:{tag}
76 if [ "{ref_arg}" = "None" ]; then
79 build_arg="--build-arg {ref_arg}={ref}"
82 sudo docker build $build_arg \
83 --pull=false --no-cache --force-rm=true \
87 name: functest-run-containers
91 [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true
92 if [ "{repo}" = "_" ]; then
93 image={container}:{tag}
94 elif [ "{port}" = "None" ]; then
95 image={repo}/{container}:{tag}
97 image={repo}:{port}/{container}:{tag}
99 sudo docker run --rm \
100 -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
101 $image run_tests -t {test}
103 gsutil -m cp -r $WORKSPACE/ \
104 gs://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID > /dev/null 2>&1
105 find $WORKSPACE -type f \
107 "http://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID/%P\n"
111 name: functest-remove-images
115 if [ "{repo}" = "_" ]; then
116 image={container}:{tag}
117 elif [ "{port}" = "None" ]; then
118 image={repo}/{container}:{tag}
120 image={repo}:{port}/{container}:{tag}
122 sudo docker rmi $image || true
128 url: https://gerrit.opnfv.org/gerrit/functest
129 refspec: '+refs/changes/*:refs/changes/*'
134 name: 'functest-{repo}-{container}-{tag}-pull'
138 - functest-pull-containers:
139 <<: *functest-containers
142 name: 'functest-opnfv-functest-healthcheck-pull'
144 container: 'functest-healthcheck'
146 - 'functest-{repo}-{container}-{tag}-pull'
149 name: 'functest-opnfv-functest-smoke-pull'
151 container: 'functest-smoke'
153 - 'functest-{repo}-{container}-{tag}-pull'
156 name: 'functest-opnfv-functest-benchmarking-pull'
158 container: 'functest-benchmarking'
160 - 'functest-{repo}-{container}-{tag}-pull'
163 name: 'functest-opnfv-functest-components-pull'
165 container: 'functest-components'
167 - 'functest-{repo}-{container}-{tag}-pull'
170 name: 'functest-opnfv-functest-vnf-pull'
172 container: 'functest-vnf'
174 - 'functest-{repo}-{container}-{tag}-pull'
177 name: 'functest-opnfv-functest-features-pull'
179 container: 'functest-features'
181 - 'functest-{repo}-{container}-{tag}-pull'
184 name: 'functest-{repo}-{container}-{tag}-rmi'
188 - functest-remove-images:
189 <<: *functest-containers
192 name: 'functest-opnfv-functest-healthcheck-rmi'
194 container: 'functest-healthcheck'
196 - 'functest-{repo}-{container}-{tag}-rmi'
199 name: 'functest-opnfv-functest-smoke-rmi'
201 container: 'functest-smoke'
203 - 'functest-{repo}-{container}-{tag}-rmi'
206 name: 'functest-opnfv-functest-benchmarking-rmi'
208 container: 'functest-benchmarking'
210 - 'functest-{repo}-{container}-{tag}-rmi'
213 name: 'functest-opnfv-functest-components-rmi'
215 container: 'functest-components'
217 - 'functest-{repo}-{container}-{tag}-rmi'
220 name: 'functest-opnfv-functest-vnf-rmi'
222 container: 'functest-vnf'
224 - 'functest-{repo}-{container}-{tag}-rmi'
227 name: 'functest-opnfv-functest-features-rmi'
229 container: 'functest-features'
231 - 'functest-{repo}-{container}-{tag}-rmi'
234 name: 'functest-{repo}-{container}-{tag}-{test}-run'
238 - functest-run-containers:
239 <<: *functest-run-containers
242 name: 'functest-opnfv-functest-healthcheck'
244 container: 'functest-healthcheck'
260 - 'functest-{repo}-{container}-{tag}-{test}-run'
263 name: 'functest-opnfv-functest-smoke'
265 container: 'functest-smoke'
268 - neutron-tempest-plugin-api
279 - 'functest-{repo}-{container}-{tag}-{test}-run'
282 name: 'functest-opnfv-functest-benchmarking'
284 container: 'functest-benchmarking'
289 - 'functest-{repo}-{container}-{tag}-{test}-run'
292 name: 'functest-opnfv-functest-components'
294 container: 'functest-components'
300 - 'functest-{repo}-{container}-{tag}-{test}-run'
303 name: 'functest-opnfv-functest-vnf'
305 container: 'functest-vnf'
313 - 'functest-{repo}-{container}-{tag}-{test}-run'
316 name: 'functest-opnfv-functest-features'
318 container: 'functest-features'
320 - doctor-notification
328 - 'functest-{repo}-{container}-{tag}-{test}-run'
331 name: 'functest-{tag}-daily'
332 project-type: multijob
339 use-build-blocker: true
340 blocking-level: 'NODE'
342 - '^functest-[a-z]+-(daily|check|gate)$'
345 name: remove former images
347 - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
349 - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
351 - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
353 - name: 'functest-opnfv-functest-components-{tag}-rmi'
355 - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
357 - name: 'functest-opnfv-functest-features-{tag}-rmi'
360 name: pull containers
362 - name: 'functest-opnfv-functest-healthcheck-{tag}-pull'
364 - name: 'functest-opnfv-functest-smoke-{tag}-pull'
366 - name: 'functest-opnfv-functest-benchmarking-{tag}-pull'
368 - name: 'functest-opnfv-functest-components-{tag}-pull'
370 - name: 'functest-opnfv-functest-vnf-{tag}-pull'
372 - name: 'functest-opnfv-functest-features-{tag}-pull'
375 name: opnfv/functest-healthcheck:{tag}
377 - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
379 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
381 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
383 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
385 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
387 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
389 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
391 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
393 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
395 - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
397 - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
399 - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
401 - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
404 name: opnfv/functest-smoke:{tag}
406 - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
408 - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
410 - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
412 - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
414 - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
416 - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
418 - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
420 - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
422 - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
424 - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
426 - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
429 name: opnfv/functest-benchmarking:{tag}
431 - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
433 - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
436 name: opnfv/functest-components:{tag}
438 - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
440 - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
442 - name: 'functest-opnfv-functest-components-{tag}-rally_full-run'
445 name: opnfv/functest-vnf:{tag}
447 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
449 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
451 - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
453 - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
455 - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
458 name: opnfv/functest-features:{tag}
460 - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
462 - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
464 - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
466 - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
468 - name: 'functest-opnfv-functest-features-{tag}-fds-run'
470 - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
472 - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
476 name: 'functest-{repo}-{container}-{tag}-gate'
483 - functest-build-containers:
484 <<: *functest-build-containers
488 name: 'functest-{repo}-{container}-{tag}-check'
497 - functest-build-containers:
498 <<: *functest-build-containers
502 name: 'functest-_-alpine-3.8-rmi'
508 - 'functest-{repo}-{container}-{tag}-rmi'
511 name: 'functest-_-alpine-3.8-pull'
517 - 'functest-{repo}-{container}-{tag}-pull'
520 name: functest-opnfv-functest-core-{tag}-build
522 container: functest-core
526 - 'functest-{repo}-{container}-{tag}-gate'
527 - 'functest-{repo}-{container}-{tag}-check'
530 name: functest-opnfv-functest-tempest-{tag}-build
532 container: functest-tempest
536 - 'functest-{repo}-{container}-{tag}-gate'
537 - 'functest-{repo}-{container}-{tag}-check'
540 name: functest-opnfv-functest-healthcheck-{tag}-build
542 container: functest-healthcheck
544 path: docker/healthcheck
546 - 'functest-{repo}-{container}-{tag}-gate'
547 - 'functest-{repo}-{container}-{tag}-check'
550 name: functest-opnfv-functest-smoke-{tag}-build
552 container: functest-smoke
556 - 'functest-{repo}-{container}-{tag}-gate'
557 - 'functest-{repo}-{container}-{tag}-check'
560 name: functest-opnfv-functest-benchmarking-{tag}-build
562 container: functest-benchmarking
564 path: docker/benchmarking
566 - 'functest-{repo}-{container}-{tag}-gate'
567 - 'functest-{repo}-{container}-{tag}-check'
570 name: functest-opnfv-functest-components-{tag}-build
572 container: functest-components
574 path: docker/components
576 - 'functest-{repo}-{container}-{tag}-gate'
577 - 'functest-{repo}-{container}-{tag}-check'
580 name: functest-opnfv-functest-vnf-{tag}-build
582 container: functest-vnf
586 - 'functest-{repo}-{container}-{tag}-gate'
587 - 'functest-{repo}-{container}-{tag}-check'
590 name: functest-opnfv-functest-features-{tag}-build
592 container: functest-features
594 path: docker/features
596 - 'functest-{repo}-{container}-{tag}-gate'
597 - 'functest-{repo}-{container}-{tag}-check'
600 name: 'functest-{tag}-check'
601 project-type: multijob
608 use-build-blocker: true
609 blocking-level: 'NODE'
611 - '^functest-[a-z]+-(daily|check|gate)$'
614 name: remove former images
616 - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
618 - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
620 - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
622 - name: 'functest-opnfv-functest-components-{tag}-rmi'
624 - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
626 - name: 'functest-opnfv-functest-features-{tag}-rmi'
629 name: remove dependencies
631 - name: 'functest-_-alpine-3.8-rmi'
634 name: pull dependencies
636 - name: 'functest-_-alpine-3.8-pull'
639 name: build opnfv/functest-core
641 - name: 'functest-opnfv-functest-core-{tag}-check'
644 name: build opnfv/functest-tempest
646 - name: 'functest-opnfv-functest-tempest-{tag}-check'
649 name: build containers
651 - name: 'functest-opnfv-functest-healthcheck-{tag}-check'
653 - name: 'functest-opnfv-functest-smoke-{tag}-check'
655 - name: 'functest-opnfv-functest-benchmarking-{tag}-check'
657 - name: 'functest-opnfv-functest-components-{tag}-check'
659 - name: 'functest-opnfv-functest-vnf-{tag}-check'
661 - name: 'functest-opnfv-functest-features-{tag}-check'
664 name: opnfv/functest-healthcheck:{tag}
666 - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
668 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
670 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
672 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
674 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
676 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
678 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
680 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
682 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
684 - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
686 - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
688 - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
690 - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
693 name: opnfv/functest-smoke:{tag}
695 - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
697 - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
699 - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
701 - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
703 - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
705 - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
707 - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
709 - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
711 - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
713 - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
715 - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
718 name: opnfv/functest-benchmarking:{tag}
720 - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
722 - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
725 name: opnfv/functest-components:{tag}
727 - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
729 - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
731 - name: 'functest-opnfv-functest-components-{tag}-rally_full-run'
734 name: opnfv/functest-vnf:{tag}
736 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
738 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
740 - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
742 - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
744 - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
747 name: opnfv/functest-features:{tag}
749 - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
751 - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
753 - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
755 - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
757 - name: 'functest-opnfv-functest-features-{tag}-fds-run'
759 - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
761 - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
765 name: functest-patchset-created
768 server-name: 'gerrit.opnfv.org'
770 - patchset-created-event
771 - comment-added-contains-event:
772 comment-contains-value: 'recheck'
773 - comment-added-contains-event:
774 comment-contains-value: 'reverify'
776 - project-compare-type: 'ANT'
777 project-pattern: 'functest'
779 - branch-compare-type: 'ANT'
780 branch-pattern: '**/{branch}'
788 name: 'functest-{tag}-gate'
789 project-type: multijob
791 - functest-patchset-created:
797 use-build-blocker: true
798 blocking-level: 'NODE'
800 - '^functest-[a-z]+-(daily|check|gate)$'
803 name: remove former images
805 - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
807 - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
809 - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
811 - name: 'functest-opnfv-functest-components-{tag}-rmi'
813 - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
815 - name: 'functest-opnfv-functest-features-{tag}-rmi'
818 name: remove dependencies
820 - name: 'functest-_-alpine-3.8-rmi'
823 name: pull dependencies
825 - name: 'functest-_-alpine-3.8-pull'
828 name: build opnfv/functest-core
830 - name: 'functest-opnfv-functest-core-{tag}-gate'
833 name: build opnfv/functest-tempest
835 - name: 'functest-opnfv-functest-tempest-{tag}-gate'
838 name: build containers
840 - name: 'functest-opnfv-functest-healthcheck-{tag}-gate'
842 - name: 'functest-opnfv-functest-smoke-{tag}-gate'
844 - name: 'functest-opnfv-functest-benchmarking-{tag}-gate'
846 - name: 'functest-opnfv-functest-components-{tag}-gate'
848 - name: 'functest-opnfv-functest-vnf-{tag}-gate'
850 - name: 'functest-opnfv-functest-features-{tag}-gate'
853 name: opnfv/functest-healthcheck:{tag}
855 - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
857 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
859 - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
861 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
863 - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
865 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
867 - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
869 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
871 - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
873 - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
875 - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
877 - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
879 - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
882 name: opnfv/functest-smoke:{tag}
884 - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
886 - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
888 - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
890 - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
892 - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
894 - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
896 - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
898 - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
900 - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
902 - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
904 - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
907 name: opnfv/functest-benchmarking:{tag}
909 - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
911 - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
914 name: opnfv/functest-components:{tag}
916 - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
918 - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
920 - name: 'functest-opnfv-functest-components-{tag}-rally_full-run'
923 name: opnfv/functest-vnf:{tag}
925 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
927 - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
929 - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
931 - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
933 - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
936 name: opnfv/functest-features:{tag}
938 - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
940 - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
942 - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
944 - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
946 - name: 'functest-opnfv-functest-features-{tag}-fds-run'
948 - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
950 - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
957 - 'functest-{tag}-daily'
958 - 'functest-{tag}-check'
959 - 'functest-{tag}-gate'
971 regex: ^functest-[a-z]+-(daily|check|gate)$