[英]Cloudposse CodeFresh — pull-request pipeline spec — terminate without setting status to “Failed”
有兩種情況, 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.