当触发新管道时取消之前的管道 GitHub Actions

gam*_*r17 5 github-actions

我遇到了拦截器,我确信其他人一定也遇到过这个问题,所以只需检查是否有任何解决方法。

这是一个 Github 工作流程示例

name: Test Build
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  app-1:
    runs-on: ubuntu-latest
    steps:
      - name: App-1
        run: echo "test1"
  app-2:
    runs-on: ubuntu-latest
    steps:
      - name: App-2
        run: echo "test1"
Run Code Online (Sandbox Code Playgroud)

现在,如果我多次提交,它将触发多个构建,这些构建将相互冲突并使管道失败。有没有办法可以取消该特定 PR 的正在运行的构建?

我看到有一个选择

concurrency: 
  group: CI-${GITHUB_REF#refs/heads/}
  cancel-in-progress: true
Run Code Online (Sandbox Code Playgroud)

但我不明白组在这里意味着什么,并发不是取消或跳过而是使构建失败。情况不应该是这样。我在这里错过了什么吗?

tho*_*idl 10

你快到了。并发组只是 GitHub Action 观察到的一个名称。我们在工作流程级别使用以下并发(您也可以使用作业级别):

on:
  workflow_dispatch:
  pull_request:
      types: [opened, synchronize, reopened]

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true
Run Code Online (Sandbox Code Playgroud)

该组设置为您的<ref>,如果您在同一个<ref>GitHub 上再次推送,则会识别出具有更高优先级的较新推送。同一组中当前正在运行的操作将被终止,新的操作将开始。Canceling since a higher priority waiting request for '<ref>' exists您将在终止的操作中收到来自 GitHub Action 的以下消息 。

您可以在此处找到有关工作流程级别并发性的 GitHub 文档