GitHub Actions中触发分支删除事件后,能否获取被删分支名称?
在GitHub Actions中获取被删除分支的名称
当然可以获取到被删除分支的名称!我之前也遇到过类似的清理部署资源的需求,刚好可以给你梳理清楚具体操作:
核心思路:利用GitHub事件上下文变量
当你通过**分支删除事件(delete event)**触发GitHub Actions时,虽然GITHUB_REF会指向仓库的默认分支,但GitHub会在事件上下文里提供专门的变量来存储被删除分支的信息,完全不需要依赖GITHUB_REF。
具体步骤
配置工作流触发条件
首先要确保你的工作流是由分支删除事件触发的,在on字段里指定delete事件并包含分支范围:on: delete: branches: - '*' # 匹配所有分支,也可以指定特定分支前缀,比如feature/*获取被删除分支的名称
在工作流的步骤中,直接使用${{ github.event.ref_name }}这个变量就能拿到被删除分支的纯名称(比如my-feature-branch,而不是完整的refs/heads/my-feature-branch)。如果需要完整的引用路径,可以用${{ github.event.ref }}。举个完整的工作流示例,用来清理对应分支的部署资源:
jobs: cleanup-deployment: runs-on: ubuntu-latest steps: - name: 输出被删除分支名称 run: echo "即将清理分支 ${{ github.event.ref_name }} 的部署资源" - name: 执行清理脚本 run: | # 这里替换成你实际的清理逻辑,用分支名作为标识 ./cleanup-resources.sh --branch "${{ github.event.ref_name }}"
额外说明
- 如果你是通过
git push origin :<branch-name>这种推送操作删除分支,这个动作同样会触发delete事件,上面的配置也能正常捕获到被删除的分支名。 - 注意确保你的工作流拥有足够的权限执行清理操作(比如访问云资源的密钥、仓库权限等),可以通过GitHub Secrets来管理敏感信息。
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

