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

如何配置GitHub Actions实现基础设施优先部署的工作流触发逻辑?

问题

我有两个GitHub Actions工作流文件:

  • 一个监听infrastructure文件夹的变更(部署AWS CDK通用资源)
  • 另一个监听单仓库(monorepo)其余部分的所有变更(部署应用)

应用部署依赖基础设施资源已就绪,因此需要实现以下运行逻辑:

  • 若提交包含infrastructure变更,先执行基础设施部署工作流,完成后再执行应用部署工作流
  • 若提交不包含infrastructure变更,直接执行应用部署工作流

我了解needs用于同一工作流内的任务依赖,workflow_run需要指定completed/in_progress/requested状态,想知道能否实现上述需求,还是必须将基础设施任务整合到应用部署工作流中?

现有工作流代码

infrastructure工作流

name: infrastructure

on:
  push:
    branches:
      - main
    paths:
      - 'infrastructure/**'
      - '**.md'

jobs:
  infrastructure:
    runs-on: ubuntu-latest
    steps:

deploy工作流

name: deploy

on:
  push:
    branches:
      - main
    paths-ignore:
      - 'infrastructure/**'
      - '**.md'
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to deploy'
        type: environment
        required: true
        default: 'dev'
解决方案

不需要将两个工作流整合,通过调整deploy工作流的触发配置即可实现需求,具体操作如下:

1. 修改deploy工作流的触发条件

在deploy工作流的on字段中添加workflow_run规则,监听infrastructure工作流的成功完成事件,确保基础设施部署完成后再触发应用部署:

name: deploy

on:
  push:
    branches:
      - main
    paths-ignore:
      - 'infrastructure/**'
      - '**.md'
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to deploy'
        type: environment
        required: true
        default: 'dev'
  # 新增:当infrastructure工作流成功完成时触发deploy
  workflow_run:
    workflows: ["infrastructure"]
    types:
      - completed
    branches:
      - main

2. 添加工作流状态校验

在deploy的jobs中添加条件判断,确保只有infrastructure工作流执行成功时,才继续应用部署(避免工作流失败后误触发):

jobs:
  deploy:
    runs-on: ubuntu-latest
    # 触发条件:push/手动触发,或infrastructure工作流成功完成
    if: |
      (github.event_name == 'push') || 
      (github.event_name == 'workflow_dispatch') ||
      (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
    steps:
      # 这里写你的应用部署步骤

逻辑说明

  • 含infrastructure变更的提交:原infrastructure工作流会被触发,待其成功完成后,workflow_run规则会自动触发deploy工作流,满足依赖顺序
  • 不含infrastructure变更的提交:原paths-ignore规则会直接触发deploy工作流,无需等待
  • 异常场景:如果infrastructure工作流执行失败,deploy工作流不会被触发,避免依赖资源未就绪导致的部署失败
  • 手动部署:通过workflow_dispatch触发时,依然可以直接执行deploy工作流,不影响紧急部署操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:07:35