如何通过 GitHub Workflow 在 Lerna 中为旧主/次版本发布补丁版本
Lerna 旧版本线补丁发布方案
步骤1:创建旧版本专属维护分支
首先找到package-a@1.4.0版本对应的提交哈希,创建独立的维护分支,避免影响main分支的代码:
# 查看历史提交找到1.4.0版本对应的提交ID git log --oneline # 基于对应提交创建维护分支 git checkout -b package-a/1.4.x <1.4.0版本对应的提交哈希>
步骤2:提交补丁修复代码
在package-a/1.4.x分支上完成补丁修复,提交信息遵循conventional commits规范,使用fix:前缀标识补丁更新。
步骤3:配置Lerna发版参数
在维护分支执行发版时,需指定仅针对package-a发布,避免影响其他包版本,同时指定非latest的分发标签避免覆盖线上最新版本:
# 生成1.4.1版本号、打版本标签 lerna version patch --scope package-a --yes --force-publish=package-a --no-changelog # 发布补丁版本,指定1.x-lts标签,不覆盖默认latest标签 lerna publish from-git --scope package-a --yes --dist-tag 1.x-lts
步骤4:新增独立的GitHub Workflow
新增单独的工作流文件.github/workflows/release-1x.yml,仅监听维护分支的push事件,和原有main分支的工作流完全隔离:
name: Release Package-A 1.x Maintenance Version on: push: branches: - 'package-a/1.4.x' jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-node@v4 with: node-version: 18 registry-url: 'https://registry.npmjs.org' - run: yarn install --frozen-lockfile - name: Publish patch version run: | lerna version patch --scope package-a --yes --force-publish=package-a --no-changelog lerna publish from-git --scope package-a --yes --dist-tag 1.x-lts env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
原有main分支的工作流无需任何修改,两个工作流触发条件完全独立,不会互相干扰。
注意事项
- 维护分支仅用于旧版本补丁修复,不要合并main分支的新功能代码
- 如果有多条旧版本线需要维护,按照相同规则创建对应维护分支,在workflow的branches配置中添加对应分支匹配规则即可
- 所有补丁提交必须遵循conventional commits规范,确保Lerna可以正确识别版本升级类型
内容的提问来源于stack exchange,提问作者Bhanu Prakash Alapati
相关产品推荐
相关产品推荐

