停止在GitHub Actions中已经运行的工作流/作业

8
我已经使用GitHub Actions设置了CI。我的其中一个工作流程是由“push”事件触发的,但它(或此工作流程的作业)���应同时运行在多个实例上。
有没有可能创建一个作业来停止其他工作流程(或作业),或者不允许工作流程/作业并行运行?
我更喜欢取消“旧”作业,而不是需要等待“新”作业完成,直到“旧”作业完成。
理想情况下,我还想在最后运行一个作业,以完成“旧”作业。(保存未完成状态)这可以(但不必)与“新”作业并行运行。
[注] 我想要取消另一个工作流程中的作业,或者取消其他工作流程,而不是同一工作流程中的另一个作业。
3个回答

12

3
如果你想基于PR而不是整个项目来取消操作,请使用github.ref而不是github.head_ref - 김민준

2
停止所有正在运行的工作流,只需添加此任务。
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>

with:部分中。

有关此操作的更多信息,请查看 https://github.com/styfle/cancel-workflow-action#readme


2
自从Github开放了新的工作流API,我创建了这个小脚本来手动取消所有未完成的任务,只需一条命令:small script
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接