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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:44:57