release-please是google开发维护的一个开源自动化发布工作,主要用于github上一些项目的自动化发布.
https://github.com/googleapis/release-please
先说效果
release-please 可以实现根据commit massages自动生成pull request, 这个PR 包含了当前版本的commit. 而release-please会自动识别上个版本到当前的commit.
当合并了这个pr后, release-please会自动的打tag, 创建发布github release, 生成changelog.md文件.
基于这些和release-please的输出, 我们可以实现CI/CD在github release创建后去跑一些流程(publish npm包、发布docker、打包发布到自己的服务器 等等.)
集成方式
release-please提供了三种集成方式: github action(推荐)、CLI、github app. 本篇主要以github action为例.
Release flows实现
1. 创建 .github/workflows/auto-release.yaml
github action可自行查看学习github相关文档.
https://github.com/google-github-actions/release-please-action
2. code以下配置,可自行根据文档和自身需求调整
代码语言:javascript复制name: auto-release
on:
push:
branches:
- develop
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: google-github-actions/release-please-action@v3
id: release-please
with:
token: ${{ secrets.RICARDO_TOKEN }}
release-type: node # 这个可以是你的项目使用的配置文件对应的语言, 一般node使用的是package.json
package-name: your-repo-name
default-branch: develop # 基于develop分支的commit
token使用自己的personal token,是因为github action如果使用默认的GITHUB_TOKEN不能触发其他的workflows.
token创建文档:https://docs.github.com/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
token创建之后需要在github项目的设置中去使用.
3. 完成了以上步骤之后, 就可以尝试提交commit了!!
当你使用angular的commit规范提交时,这个以上的workflows就一会自动生成一个PR. PR title的版本号会默认使用package.json中的版本号
合并了PR后就会自动的创建发布相应的release和tag
其他的workflows
实现了auto-release的workflows后, 就可以基于这个workflows去实现其他自动化的Ci/CD.
可参考: https://github.com/RicardoUU/Fortress-demo/blob/main/.github/workflows/prod.yaml