[英]Stop already running workflow/job in GitHub Actions
我使用 GitHub Actions 設置了 CI。 我的一個工作流程是由push
事件觸發的,但它(或此工作流程的一項工作)不應同時在多個實例上運行。
是否有可能創建一個作業來停止其他工作流(或作業或不允許工作流/作業並行運行)?
我寧願取消“舊”工作,也不願在“舊”工作完成之前完成“新”工作。
理想情況下,我還想在完成“舊”作業的最后運行一個作業。(~保存未完成狀態)。 這可以(但不一定)與“新”作業並行運行。
[注意] 我想取消另一個工作流程或另一個工作流程中的作業,而不是同一工作流程中的另一個作業。
現在您可以使用 Github Actions 的官方並發支持(但仍處於測試階段)
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency
支持工作流程和作業!
concurrency:
group: ${{ github.head_ref }}
cancel-in-progress: true
由於 Github 已經開放了新的工作流 API,我創建了這個 小腳本來在一個命令中手動取消所有未完成的作業:
Example:
# Set up
export GITHUB_TOKEN=394ba3b48494ab8f930fbc93
export GITHUB_REPOSITORY=apache/incubator-superset
# Cancel previous jobs for a PR
./cancel_github_workflows.py 1042
# Cancel previous jobs for a branch
./cancel_github_workflows.py my-branch
# Cancel all jobs including the last ones, this is useful
# when you have closed a PR or deleted a branch and want
# to cancel all its jobs.
./cancel_github_workflows.py 1024 --include-last
要停止所有正在運行的工作流程,只需添加此作業
jobs:
cancel:
name: 'Cancel Other Workflow'
runs-on: ubuntu-latest
steps:
- uses: styfle/cancel-workflow-action@0.9.0
with:
access_token: ${{ github.token }}
您還可以通過添加取消特定工作流程
workflow_id:<workflow id or workflow name>
在與:部分。
有關此操作的更多信息,請查看https://github.com/styfle/cancel-workflow-action#readme
我已經使用 GitHub Actions 設置了 CI。 我的一個工作流由push
事件觸發,但它(或此工作流的一個作業)不應同時在多個實例上運行。
是否有可能創建一個停止其他工作流(或作業或不允許工作流/作業並行運行)的作業?
我寧願取消“舊”工作,而不是在“舊”工作完成之前完成“新”工作。
理想情況下,我還想在最后運行一個完成“舊”工作的工作。(~保存未完成的狀態)。 這可以(但不是必須)與“新”作業並行運行。
[注意] 我想取消另一個工作流中的作業,或者另一個工作流,而不是同一工作流中的另一個作業。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.