github - Cloudposse CodeFresh——拉取请求管道规范——终止而不将状态设置为“失败”
问题描述
我有一个 CodeFresh、GitHub 拉取请求管道。
有两种情况,PR 标记为 "Failed",理想情况下它会显示为 "Pending"或无状态。
场景一:
当一个新事件被触发时,它会终止之前的构建(如预期的那样)
构建被管道策略终止 - 新构建由分支上的拉取请求触发
<my-branch>
这一切都很好,但是构建在 GitHub 上显示为“失败”。从理论上讲,新构建将撤消“失败”状态,但这可能需要相当长的时间,并且很难跟踪最新运行的构建是什么。我的terminationPolicy
规格如下所示:
terminationPolicy:
- type: branch
event: onCreate
终止政策文档: https ://codefresh.io/docs/docs/integrations/codefresh-api/?#full-pipeline-specification
场景二:
我们想绕过基于应用标签的构建。例如:"skip-test"
,或者能够不受branchRegex
.
steps:
harakiri:
...
commands:
- codefresh terminate ${{CF_BUILD_ID}}
when:
condition:
any:
isWorkInProgress: "match('${{CF_PULL_REQUEST_LABELS}}', 'WIP', false) == true"
再次,效果很好。但是将 PR 标记为“失败”。
如果有办法将命令注入其中任何一个,我可以使用它。但是我们如何布置它需要整个步骤才能将状态更改为“待定”。(所以我不能简单地在harakiri
步骤中添加一个额外的“命令”)
有什么想法吗?
解决方案
方案 1
我可以建议您使用带有钩子的 github-status-updater(而不是默认状态更新)
所以基本上它会pending
在构建开始时设置状态(如果它被策略终止,它将保持这个状态)。
hooks:
on_success:
title: Set GitHub deployment status to "success"
image: cloudposse/github-status-updater
environment:
- GITHUB_ACTION=update_state
- GITHUB_TOKEN=${{GITHUB_TOKEN}}
- GITHUB_OWNER=${{CF_REPO_OWNER}}
- GITHUB_REPO=${{CF_REPO_NAME}}
- GITHUB_REF=${{CF_REVISION}}
- GITHUB_CONTEXT=Codefresh CI - Build
- GITHUB_STATE=success
- GITHUB_TARGET_URL=${{CF_BUILD_URL}}
on_fail:
title: Set GitHub deployment status to "failure"
image: cloudposse/github-status-updater
environment:
- GITHUB_ACTION=update_state
- GITHUB_TOKEN=${{GITHUB_TOKEN}}
- GITHUB_OWNER=${{CF_REPO_OWNER}}
- GITHUB_REPO=${{CF_REPO_NAME}}
- GITHUB_REF=${{CF_REVISION}}
- GITHUB_CONTEXT=Codefresh CI - Build
- GITHUB_STATE=failure
- GITHUB_TARGET_URL=${{CF_BUILD_URL}}
on_elected:
title: Set GitHub deployment status to "pending"
image: cloudposse/github-status-updater
environment:
- GITHUB_ACTION=update_state
- GITHUB_TOKEN=${{GITHUB_TOKEN}}
- GITHUB_OWNER=${{CF_REPO_OWNER}}
- GITHUB_REPO=${{CF_REPO_NAME}}
- GITHUB_REF=${{CF_REVISION}}
- GITHUB_CONTEXT=Codefresh CI - Build
- GITHUB_STATE=pending
- GITHUB_TARGET_URL=${{CF_BUILD_URL}}
要禁用默认状态更新,请使用 CLI 修补管道规范
codefresh get pip <name> -o yaml > file.yml
spec:
options:
enableNotifications: false
codefresh replace -f file.yml
推荐阅读
- java - 如何使枚举值全局化并存储它
- excel - 复制工作表-Excel-VBA 时更改工作表名称(基于单元格的值)时出错
- java - 如何在 Java 中签署 JWT 以验证 Ghost API v3
- python - isinstance 无法按预期使用字符串枚举
- linux - 来自不同源文件的bash中的变量替换
- python-3.x - 将大文件中的 IP 地址提取成 100 个组并放入二维数组中
- curl - 正确的语法 cURL --capath
- java - 线程“主”java.lang.NullPointerException 中的异常 - 在客户端。
(Client.java:64) 在 Client.main(Client.java:105) - javascript - 在 vue.js 中发布到烧瓶 API 时“被 CORS 策略阻止”
- hdl - 我正在尝试创建一个 8 位移位寄存器,但不太确定哪里出错了