circleci - CircleCI:跳过整个工作流程
问题描述
基本上,如果它不是拉取请求或某个分支,我会尝试跳过构建,但是如果失败,我似乎无法跳过工作或工作流程的一部分,到目前为止,问题是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\/.*$/
这不会失败,它适用于拉取请求,但hello/hello-build
无论如何都会执行circleci step halt
命令。
任何帮助将不胜感激,谢谢!
解决方案
在他们的论坛中创建一个线程后,这是有效的: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}:'
推荐阅读
- node.js - 将网络托管空间与 Node.js 应用程序一起使用的最佳实践?
- javascript - 有没有办法用js缩短数字?
- c# - CS0029 无法将类型“double”隐式转换为“bool”
- algorithm - 实现的最大并行化(数据结构和算法)
- java - 单击TableView列标题时如何先使用降序排序?
- blazor - 如何拖放 Blazor 组件
- amazon-web-services - 创建 API 网关方法时出错响应:NotFoundException:指定的方法标识符无效
- azure-devops - 如何使用 ADO 扩展将带有值的自定义下拉列表发布到 Devops 工作项表单
- php - 使用页面规则时,高级自定义字段和 WooCommerce 可能发生冲突
- signalr - 安装 signalr 5 nuget 包时出现错误“System.Reflection.TargetInvocationException”