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

