CircleCI忽略git标签过滤器

问题描述 投票:0回答:1

我想测试每个提交(工作流程“测试”)。如果提交被标记并在某个分支上,则应触发部署(工作流“ 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工作流程。

我做错了什么?

git continuous-integration circleci
1个回答
0
投票

CircleCI过滤器不会同时合并两个过滤器,它就像一个“或”语句。在您的情况下,即使您过滤了标签,但如果test-deploy-pypi会出现在您过滤的分支之一中,则会运行test_deployment_pypitest_deployment_script

为了使其仅适用于标签,您必须忽略那些分支:

  filters:
    branches:
      ignore: /.*/
    tags:
      only: /v[0-9]+(\.[0-9]+)*/

注意,我也已将标签过滤器更改为在开始时具有“ v”,因为标签会自动添加,除非您覆盖它。如果确实从默认名称更改了标签名称,则将其更改回正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.