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
相关产品推荐
相关产品推荐

