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

如何在已关闭的Pull Request中获取分支名称?GitHub Actions求助

GitHub Actions 关闭PR时获取分支名及解决拉取引用失败的问题

问题原因

  • 你使用的actions/checkout@v1在PR关闭事件中默认尝试拉取refs/pull/{PR号}/merge引用,若PR的源分支已被删除,这个引用会直接失效,导致报错。
  • 原分支名提取逻辑依赖GITHUB_REF,但PR关闭事件里的GITHUB_REF指向的是PR的临时引用(如refs/pull/1365/merge),并非实际的源分支,自然提取不到正确名称。
  • 步骤变量引用完全错误:你定义的步骤ID是extract_branch,但后续调用用了steps.branch-name.outputs.current_branch,两者完全不匹配,根本拿不到分支名参数。

解决方法

  1. 升级并配置checkout动作:用最新的actions/checkout@v4,通过ref参数直接指定拉取PR的源分支,避开已失效的merge引用。
  2. 直接从GitHub上下文拿分支名:PR事件的上下文里自带github.event.pull_request.head.ref,可以直接获取源分支名,不用手动提取。
  3. 修正变量引用错误:确保步骤ID和后续调用的变量名对应一致。

修正后的Action文件

name: Close Pull Request

# 仅在PR关闭时触发
on:
  pull_request:
    types: [closed]

jobs:
  cleanup_namespace:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
        # 指定拉取PR的源分支
        with:
          ref: ${{ github.event.pull_request.head.ref }}
          # 拉取完整提交历史(可选,根据脚本需求调整)
          fetch-depth: 0
      - name: 删除命名空间
        run: ./bin/delete_namespace.sh ${{ github.event.pull_request.head.ref }}

额外说明

  • 如果PR的源分支已经被删除,拉取代码的步骤可能失败。若你的删除脚本不需要依赖代码,可直接跳过checkout步骤,直接执行脚本即可。
  • 原配置里的两个重复Job(merge_job和close_job)可以合并成一个,避免重复执行相同逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:35:26