标签发布不是使用 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: /.*/
我正在使用 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: /.*/