You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为GitHub Actions的Release工作流组合多触发条件?

解决办法

GitHub Actions的on字段不支持直接配置同时满足多个条件的触发规则,需要通过「事件触发+作业级条件判断」的组合方式实现需求,下面提供两种可行方案:

方案一:基于workflow_run触发,配合作业条件判断

将Release工作流改为仅监听Lint、Test、Integration test这三个工作流的完成事件,然后在作业中添加双重判断:一是触发这三个工作流的原事件为符合规则的标签推送,二是三个输出届时指定********************************German「 seventhmh/application Squ类�负责 Else真人 imper原触发事件是符合规则的标签推送,二是这三个工作流全部执行成功。

具体配置如下:

name: Release

on:
  workflow_run:
    workflows: ["Lint", "Test", "Integration test"]
    types: [completed]

jobs:
  release:
    # 仅当三个前置工作流全成功,且原触发事件是符合规则的标签时才执行
    if: >
      github.event.workflow_run.conclusion == 'success' &&
      startsWith(github.event.workflow_run.head_branch, 'refs/tags/v') &&
      matches('^refs/tags/v[0-9]+\\.[0-9]+\\.[0-9]+$', github.event.workflow_run.head_branch)
    runs-on: ubuntu-latest
    steps:
      # 此处编写你的Release步骤,比如拉取代码、创建Release、上传产物等
      - name: 拉取代码
        uses: actions/checkout@v4
      # ...其他需要的步骤

方案二:拆分前置检查与Release执行

如果需要更清晰的流程,可以新增一个「标签推送触发的前置检查工作流」,等三个指定工作流全部完成且成功后,再触发Release工作流:

前置检查工作流(仅标签推送触发)

name: 发布前置检查

on:
  push:
    tags:
      - 'v[0-9].[0-9]+.[0-9]+'

jobs:
  等待前置工作流完成:
    runs-on: ubuntu-latest
    steps:
      - name: 等待Lint工作流成功
        uses: lewagon/wait-on-check-action@v1.3.0
        with:
          ref: ${{ github.ref }}
          check-name: 'Lint' # 填写Lint工作流中的作业名称
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          wait-interval: 10

      - name: 等待Test工作流成功
        uses: lewagon/wait-on-check-action@v1.3.0
        with:
          ref: ${{ github.ref }}
          check-name: 'Test'
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          wait-interval: 10

      - name: 等待Integration test工作流成功
        uses: lewagon/wait-on-check-action@v1.3.0
        with:
          ref: ${{ github.ref }}
          check-name: 'Integration test'
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          wait-interval: 10

      - name: 触发Release工作流
        uses: benc-uk/workflow-dispatch@v1
        with:
          workflow: Release # 填写你的Release工作流名称
          token: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ github.ref }}

Release工作流配置

name: Release

on:
  workflow_dispatch: # 仅由前置检查工作流触发

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      # 此处编写你的Release步骤
      - name: 拉取代码
        uses: actions/checkout@v4
      # ...其他需要的步骤

关键说明

  • 方案一更简洁,无需额外维护工作流,通过事件上下文即可完成判断;方案二流程更直观,适合依赖关系复杂的场景
  • 标签推送时,github.event.workflow_run.head_branch的格式为refs/tags/vx.x.x,因此正则匹配需对应该格式

内容的提问来源于stack exchange,提问作者kozmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:45:09