簡體   English   中英

在 GitHub Actions 中停止已經運行的工作流/作業

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM