如何对多个 GitHub Action 工作流程运行进行排队?

Kra*_*mer 5 github github-actions

我不断取消 GitHub Actions 工作流程运行,并显示以下消息:

Canceling since a higher priority waiting request for 'your-project' exists

查看 GitHub Actions 文档,我看到:

When a concurrent job or workflow is queued, if another job or workflow using the same 
concurrency group in the repository is in progress, the queued job or workflow will be
pending. Any previously pending job or workflow in the concurrency group will be canceled. 
Run Code Online (Sandbox Code Playgroud)

因此,这意味着只允许运行一个挂起的工作流程。有没有一种方法可以让我在不使用某种外部排队机制的情况下对多个队列进行排队?

MrD*_*oom 1

截至2023年11月17日,答案是否定的。

GitHub Actions 的并发功能为给定创建两个槽group

  • 单个运行的工作流程
  • 单个待处理工作流程

输入cancel-in-progress控制这两个插槽的行为。

如果cancel-in-progress: false

  1. 工作流被触发、启动并占用正在运行的工作流槽位。
  2. 工作流被第二次触发并占用待处理槽。
  3. 工作流程第三次触发并立即取消。

工作流程运行编号 3 将显示该消息Canceling since a higher priority waiting request for 'YOUR_GROUP_NAME' exists

此行为旨在确保“最新状态”是当前运行的操作完成后运行的状态。

如果cancel-in-progress: true

  1. 工作流被触发、启动并占用正在运行的工作流槽位。
  2. 当第一个工作流被取消时,工作流被第二次触发并占用待处理槽。
  3. 工作流被第三次触发,立即取消第二个工作流并在取消第一个工作流时占用待处理槽。

此行为旨在快速停止运行不再重要的作业,例如在将新更改添加到分支并需要构建时拉取请求构建。

如何在队列中保留构建?

目前(2023 年 11 月 17 日)无法通过工作流程实现此目的,只有解决方法,例如使用带有特殊标签的单个运行程序或使用阻止工作流程继续进行直到其他工作流程完成的步骤。