我想测试每个提交(工作流程“测试”)。如果提交被标记并在某个分支上,则应触发部署(工作流“ test-n-deploy”)。因此,我创建了以下工作流程:
workflows:
version: 2
test:
jobs:
- test-py36-yml
test-n-deploy:
jobs:
- test-py36-yml:
filters:
tags:
only: /[0-9]+(\.[0-9]+)*/
- test-deploy-pypi:
requires:
- test-py36-yml
filters:
tags:
only: /[0-9]+(\.[0-9]+)*/
branches:
only:
- test_deployment_pypi
- test_deployment_script
完整的脚本可以在这里找到:https://github.com/kipoi/kipoi/blob/test_deployment_pypi/.circleci/config.yml
我的问题:CircleCI完全忽略标签过滤器。即使提交未加标签,它也会运行整个test-n-deploy
工作流程。
我做错了什么?
CircleCI过滤器不会同时合并两个过滤器,它就像一个“或”语句。在您的情况下,即使您过滤了标签,但如果test-deploy-pypi
会出现在您过滤的分支之一中,则会运行test_deployment_pypi
或test_deployment_script
。
为了使其仅适用于标签,您必须忽略那些分支:
filters:
branches:
ignore: /.*/
tags:
only: /v[0-9]+(\.[0-9]+)*/
注意,我也已将标签过滤器更改为在开始时具有“ v”,因为标签会自动添加,除非您覆盖它。如果确实从默认名称更改了标签名称,则将其更改回正则表达式。