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

GitHub Actions:workflow_run如何调用触发分支的文件?

问题原因

当使用workflow_run触发工作流时,GitHub Actions 默认会拉取仓库的默认分支(此处为main)代码,而非触发上游Tests工作流的目标分支。这是因为workflow_run触发的工作流上下文默认绑定仓库默认分支,导致无论哪个分支触发Tests,Deploy工作流都只会使用main分支的文件。

解决方案

要让Deploy工作流拉取触发Tests的对应分支代码,需要手动指定checkout的分支,具体修改如下:

修改后的Deploy.yml示例

name: Deploy

on:
  workflow_run:
    workflows: [ 'Tests' ]
    types: [ completed ]
    branches: [ devel, main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout triggering branch code
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.workflow_run.head_branch }}
      
      # 根据分支执行不同部署操作
      - name: Deploy to staging (devel branch)
        if: github.event.workflow_run.head_branch == 'devel'
        run: |
          # 替换为devel分支的实际部署命令
          echo "Deploying devel branch to staging environment"
      
      - name: Deploy to production (main branch)
        if: github.event.workflow_run.head_branch == 'main'
        run: |
          # 替换为main分支的实际部署命令
          echo "Deploying main branch to production environment"

关键说明

  • ${{ github.event.workflow_run.head_branch }}:该变量会直接获取触发Tests工作流的分支名称(devel或main),确保checkout的代码与触发分支一致。
  • actions/checkout的ref参数:通过指定该参数,强制拉取目标分支的代码,覆盖默认的默认分支拉取行为。
  • 分支判断逻辑:通过if条件区分不同分支的部署动作,实现分支对应的差异化操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:17:07