标签发布不是使用 CircleCI 构建的

Tag release not built with CircleCI

我正在使用 CircleCI 构建项目,一切正常 运行,除了我的 标签 在推送到 github 时没有构建:

我不明白为什么,我将我的整个配置缩减为一个简约的配置文件,这是相同的逻辑:

version: 2

jobs:

  my_dummy_job_nightly:
    working_directory: ~/build
    docker:
      - image: docker:git
    steps:
      - checkout
      - setup_remote_docker:
          reusable: true
          exclusive: true

      - run:
          name: NIGHTLY BUILD
          command: |

            apk add --update py-pip
            python -m pip install --upgrade pip

  my_dummy_job_deploy:
    working_directory: ~/build
    docker:
      - image: docker:git
    steps:
      - checkout
      - setup_remote_docker:
          reusable: true
          exclusive: true

      - run:
          name: RELEASE BUILD
          command: |

            apk add --update py-pip
            python -m pip install --upgrade pip

###################################################################################
#                               CircleCI WORKFLOWS                                #
###################################################################################

workflows:
  version: 2
  build-and-deploy:
    jobs:

      ###################################################################################
      #                                  NIGHTLY BUILDS                                 #
      ###################################################################################

      - my_dummy_job_nightly:
          filters:
            tags:
              ignore: /.*/
            branches:
              only: master


      ###################################################################################
      #                                   TAGS BUILDS                                   #
      ###################################################################################

      - hold:
          type: approval
          filters:
            tags:
              only: /.*/
            branches:
              ignore: /.*/

      - my_dummy_job_deploy:
          requires:
            - hold
          filters:
            tags:
              only: /.*/
            branches:
              ignore: /.*/

我不明白为什么不构建标签...正则表达式应该让一切都通过...

TL;DR

在 yaml 中你忽略了每一个分支。删除以下部分。

branches:
  ignore: /.*/

您可能打算仅在显示标签时构建,但您忽略了所有分支。如果您想为每个带有标签的分支构建,请删除该行。如果您想使用标签为某些分支(例如 dev)构建,请添加 branches: only: dev.

两个说明符之间的联系是AND而不是OR。 CircleCI 论坛上有讨论添加功能以将其更改为 OR

我终于找到问题了。与配置无关,CircleCI 界面不在工作流界面中显示标签构建,因此 approval 操作阻止了整个过程。

要访问工作流并批准部署,您必须单击构建并单击工作流(见下文):

进入工作流程后,可以批准流程:

我发现使构建出现的唯一解决方案是在构建过程中创建一个虚拟且无用的步骤,该步骤将在批准之前出现。

version: 2

jobs:

  init_tag_build:
    working_directory: ~/build
    docker:
      - image: docker:git
    steps:
      - checkout
      - setup_remote_docker:
          reusable: true
          exclusive: true

      - run:
          name: Launch Build OP
          command: |
            echo "start tag workflow"

  my_deploy_job:
    working_directory: ~/build
    docker:
      - image: docker:git
    steps:
      - checkout
      - setup_remote_docker:
          reusable: true
          exclusive: true

      - run:
          name: DEPLOY BUILD
          command: |
            echo "do the deploy work"

workflows:
  version: 2
  build-and-deploy:
    jobs:

      - init_tag_build:
          filters:
            tags:
              only: /.*/
            branches:
              ignore: /.*/

      - hold:
          type: approval
          requires:
            - init_tag_build
          filters:
            tags:
              only: /.*/
            branches:
              ignore: /.*/

      - my_deploy_job:
          requires:
            - hold
          filters:
            tags:
              only: /.*/
            branches:
              ignore: /.*/