CircleCI:跳过整个工作流程
Posted
技术标签:
【中文标题】CircleCI:跳过整个工作流程【英文标题】:CircleCI: Skip entire workflow 【发布时间】:2020-11-03 00:00:29 【问题描述】:基本上,如果它不是拉取请求或某个分支,我会尝试跳过构建,但是我似乎无法跳过工作或工作流程的一部分,如果这失败了,到目前为止的问题是circleci step halt
在我的管道中什么都不做,这里的示例配置:
version: 2.1
orbs:
hello: circleci/hello-build@0.0.5
jobs:
build:
docker:
- image: docker:17.05.0-ce-git
steps:
- checkout
- setup_remote_docker
- run:
command: |
if [[ $(echo "$CIRCLE_PULL_REQUEST $CIRCLE_PULL_REQUESTS" | grep -c "pull") -gt 0 ]]; then
echo "Do stuff if it's a PR"
else
echo "Not a PR, Skipping."
circleci step halt # does nothing
circleci-agent step halt # does nothing
exit 0
fi
workflows:
"Hello Workflow":
jobs:
- hello/hello-build:
requires:
- build
filters:
branches:
only:
- testing
- /^(?!pull\/).*$/
tags:
only:
- /^pull\/.*$/
- build:
filters:
branches:
only:
- testing
- /^(?!pull\/).*$/
tags:
only:
- /^pull\/.*$/
这不会失败,它适用于拉取请求,但尽管有circleci step halt
命令,hello/hello-build
仍会执行。
任何帮助将受到欣赏,谢谢!
【问题讨论】:
【参考方案1】:在他们的论坛中创建了一个帖子后,这很有效:https://discuss.circleci.com/t/does-circleci-step-halt-works-with-version-2-1/36674/4
转到帐户设置 -> 个人 API 令牌 -> 新令牌。获得令牌后,转到项目并创建一个类似 CIRCLE_TOKEN 的新环境变量并将其保存在那里。
然后在 config.yml 中你可以运行这样的东西来取消当前的工作流:
curl -X POST https://circleci.com/api/v2/workflow/$CIRCLE_WORKFLOW_ID/cancel -H 'Accept: application/json' -u '$CIRCLE_TOKEN:'
然后你会看到类似的东西:
【讨论】:
以上是关于CircleCI:跳过整个工作流程的主要内容,如果未能解决你的问题,请参考以下文章