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

GitHub Actions中PR合并到main时获取头部分支版本号

解决GitHub Actions合并PR时提取头部分支版本号的问题

要实现当release/vX.Y.Z格式的PR合并到main分支时自动创建对应版本的Release,核心是获取PR的头部分支(源分支)信息,并正确传递版本号到后续步骤。以下是具体修改方案:

关键修改点

  • 获取头部分支名称:GitHub事件对象里的github.event.pull_request.head.ref就是PR的源分支(你需要的头部分支),而非base_ref(base_ref是目标分支main)。
  • 过滤目标分支:在job的条件里增加判断,只处理release/v开头的分支,避免非目标PR触发流程。
  • 正确传递版本号:用echo "KEY=VALUE" >> $GITHUB_ENV将提取的版本号存入环境变量,确保后续步骤能读取到。

修改后的完整工作流配置

name: Auto PR Action

on:
  pull_request:
    branches: 
      - main
    types: [closed]

jobs:
  build:
    # 仅合并了且头部分支是release/v开头的PR才触发
    if: ${{ github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/v') }}
    runs-on: ubuntu-latest

    steps:
      - name: Extract version number
        run: |
          # 获取PR的头部分支名称
          HEAD_BRANCH="${{ github.event.pull_request.head.ref }}"
          # 从release/vX.Y.Z中提取vX.Y.Z
          RELEASE_VERSION=$(echo "$HEAD_BRANCH" | sed 's/.*\///')
          # 将版本号写入环境变量,供后续步骤使用
          echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV

      - name: Create Release
        id: create_release
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          # 使用环境变量中的版本号创建Release
          gh release create ${{ env.RELEASE_VERSION }} --generate-notes --latest --verify-tag

说明

  • startsWith(github.event.pull_request.head.ref, 'release/v'):确保只有符合格式的分支合并时才执行流程,避免误触发。
  • echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV:把提取的版本号存入GitHub Actions的环境变量,后续步骤通过${{ env.RELEASE_VERSION }}引用。
  • sed 's/.*\///':从release/vX.Y.Z中截取最后一段,得到vX.Y.Z,符合你需要的版本号格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:05:31