只有当标签符合特定模式时,才执行CircleCI作业

3
我有一个用于CircleCI构建的工作流定义如下:
workflows:
  version: 2
  default:
    jobs:
      - verify
      - tests_3_1:
          requires:
            - verify
      - tests_5_0:
          requires:
            - verify
      - pack:
          requires:
            - tests_3_1
            - tests_5_0
      - push:
          requires:
            - pack
          context:
            - GitHub
          filters:
              tags:
                only: /^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
              branches:
                ignore: /.*/

这个想法是:

  • 在所有提交中运行 verifytest_3_1test_5_0pack
  • 在上述工作的基础上,当在主分支并且有一个与 v 前缀的语义化版本匹配的标签时,运行任务 push

由于某种原因,在提交被打上标签时没有触发构建。我不确定问题是在过滤器还是正则表达式未匹配构建标签。

目前我尝试了在 RegexPal 上匹配的 v0.1.0-preview-0001

build is not triggered

你能提出任何改进建议吗?我看到有这个问题与我的问题非常相似,但我无法实现建议的解决方案。

1个回答

3

在每个任务push之前,我通过为每个任务指定标签正则表达式过滤器来解决了这个问题,如文档所示。

workflows:
  version: 2
  default:
    jobs:
      - verify:
          filters:
            tags:
              only: /.*/
      - tests_3_1:
          requires:
            - verify
          filters:
            tags:
              only: /.*/
      - tests_5_0:
          requires:
            - verify
          filters:
            tags:
              only: /.*/
      - pack:
          requires:
            - tests_3_1
            - tests_5_0
          filters:
            tags:
              only: /.*/
      - push:
          requires:
            - pack
          context:
            - GitHub
          filters:
              tags:
                only: /^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
              branches:
                ignore: /.*/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接