Release-Please工作流配置咨询:多分支发布与热修复处理
配置Release-Please满足生产分支发布及跨分支标签同步需求
一、核心配置方案
1. 限定Production分支生成正式Release与发布笔记
调整Release-Please工作流,仅在Production分支触发正式发布,同时自动同步生成的标签到Development分支,解决标签不同步的问题。
name: Release-Please Production on: push: branches: - Production pull_request: branches: - Production jobs: release-please: runs-on: ubuntu-latest steps: - uses: google-github-actions/release-please-action@v4 id: release with: release-type: node # 替换为你的项目类型,如python、go、rust等 target-branch: Production package-name: your-project-name # 替换为你的项目名称 changelog-types: '[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"hotfix","section":"Hot Fixes"}]' # 自定义变更日志分类 - name: Sync release tag to Development branch if: steps.release.outputs.release_created == 'true' run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git fetch --tags git checkout Development git pull origin Development git tag -f ${{ steps.release.outputs.tag_name }} git push origin ${{ steps.release.outputs.tag_name }} --force
说明:
- Release-Please仅响应Production分支的推送和PR事件,确保正式Release和发布笔记只从生产分支生成
- 成功创建Release后,自动将生成的SemVer标签同步到Development分支,保证两个分支标签一致,Release-Please后续能正常识别这些标签
2. 功能分支合并的预发布标签处理
保留功能分支合并时自动打标签的需求,但限定在Development/Staging分支生成预发布标签,不触发正式Release:
name: Pre-Release Tagging on: pull_request: types: [closed] branches: - Development - Staging jobs: pre-release-tag: if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Generate pre-release tag id: tag-gen run: | # 获取最新标签,无标签则默认v0.0.0 LAST_TAG=$(git describe --abbrev=0 --tags 2>/dev/null || echo "v0.0.0") # 生成带-pr后缀的预发布版本,比如v1.2.3-pr.123 NEW_TAG=$(echo $LAST_TAG | awk -F. '{split($3, a, "-"); print $1"."$2"."a[1]+1"-pr."${{ github.run_number }}"}') echo "tag_name=$NEW_TAG" >> $GITHUB_OUTPUT - name: Push pre-release tag run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git tag ${{ steps.tag-gen.outputs.tag_name }} git push origin ${{ steps.tag-gen.outputs.tag_name }}
说明:功能分支合并到Development/Staging时,自动生成带-pr.xxx后缀的预发布标签,用于Docker镜像命名,不会触发正式Release流程。
二、热修复场景处理
1. 紧急生产环境修复
- 从Production分支切出热修复分支(如
hotfix/修复支付异常) - 完成修复后,合并到Production分支
- Release-Please检测到Production分支的变更,自动生成补丁版本标签(如v1.2.3→v1.2.4),同时创建GitHub Release、更新变更日志
- 工作流自动将新标签同步到Development分支
- 最后将热修复分支合并到Development分支,保持代码一致性
2. 回捞已开发完成的功能到生产环境
- 从Development分支切出适配Production环境的热修复分支,确保代码兼容当前生产版本
- 合并到Production分支,触发Release-Please生成补丁版本
- 标签同步到Development后,将热修复分支合并回Development,避免代码差异
关键注意事项
- 在Release-Please配置中添加
hotfix类型的变更日志分类,方便区分热修复记录 - 热修复完成后必须同步代码和标签到Development分支,防止后续发布出现版本混乱
- 可以给热修复PR添加
hotfix标签,Release-Please会自动识别并触发补丁版本升级
内容的提问来源于stack exchange,提问作者Devam Parikh
相关产品推荐
相关产品推荐

