使用google release-please实现CI/CD自动化发布

2023-10-20 15:41:34 浏览数 (4)

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

1 人点赞