FED

©FrontEndDev.org
2015 - 2024
web@2.23.0 api@2.21.1

release-please-action 在 Single Repo 和 Monorepo 中的特别食用指南

介绍

release-please-action 是一个 GitHub App 和命令行工具,用于自动化管理项目的版本发布流程。它能自动检测代码仓库中的变更,根据预设的规则创建和更新版本标签、生成版本说明并发布到 GitHub Releases。这对于频繁发布和维护开源项目尤其有用,能够显著减少版本管理的手动工作,提高开发效率。

开始

在根目录创建以下两个文件:

  • release-please-config.json:配置 release-please 命令如何执行
  • .release-please-manifest.json:配置 component 版本信息

Single Repo

// release-please-config.json
{
    "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
    "release-type": "node",
    "include-component-in-tag": false,
    "packages": {
        ".": {}
    }
}

include-component-in-tag

配置了 packages 之后,默认会给标签上添加组件(即包名),例如 my-package-v12.34.56,但因为该 Monorepo 里只有一个 package,所以版本标签的前缀可以省略,即为正常的版本号,例如 v12.34.56

packages

使用 packages 键名表示需要版本管理的 package 所在的路径。使用 . 表示根目录所在的 package。

Monorepo 里只有一个 package

// release-please-config.json
{
    "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
    "release-type": "node",
    "include-component-in-tag": false,
    "packages": {
        "path/to/only-one": {}
    }
}

include-component-in-tag

配置了 packages 之后,默认会给标签上添加组件(即包名),例如 my-package-v12.34.56,但因为该 Monorepo 里只有一个 package,所以版本标签的前缀可以省略,即为正常的版本号,例如 v12.34.56

packages

使用 packages 键名表示需要版本管理的 package 所在的路径。

Monorepo 里有两个及以上的 package

// release-please-config.json
{
    "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
    "release-type": "node",
    "group-pull-request-title-pattern": "chore(${branch}): release",
    "packages": {
        "path/to/one": {},
        "path/to/two": {},
    },
    "plugins": ["node-workspace"]
}

group-pull-request-title-pattern

必须指定此配置,否则会出现解析失败的 bug

packages

使用 packages 键名表示需要版本管理的 package 所在的路径。

node-workspace

建议使用 node-workspace 插件,工程内部的本地依赖发生变化时,其自身也会递增一个 patch 版本。例如:

- packages
    - core@12.34.56 -> 依赖了本地 helpers 包
    - helpers@12.34.56

本次只变更了 helpers 包,helpers@12.34.56 升级为 helpers@12.35.00,那么 core 包也会受影响,其版本号会自动从 core@12.34.56 升级为 core@12.34.57。即结果为:

- packages
    - core@12.34.57 -> 依赖了本地 helpers 包
    - helpers@12.35.00