GitHub Action - 自动发布版本及生成更新日志

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

开源项目中,经常会碰到这样的问题,当发布一个版本的时候,我们需要手动修改版本号,然后添加更新日志,打标签,生成 release 这一系列步骤,稍微不注意,很容易出错并且增加维护成本。

这里给大家介绍如何自动发布版本的action。

release-please-action

首先在根目录 .github/workflows 下创建 release.yml 文件,并添加以下代码

on:
  push:
    branches:
      - master

name: Release

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: GoogleCloudPlatform/release-please-action@v3
        id: release
        with:
          token: ${{ secrets.RELEASE_TOKEN }}
          release-type: node
          package-name: standard-version
          changelog-types: '[{"type": "types", "section":"Types", "hidden": false},{"type": "revert", "section":"Reverts", "hidden": false},{"type": "feat", "section": "Features", "hidden": false},{"type": "fix", "section": "Bug Fixes", "hidden": false},{"type": "improvement", "section": "Feature Improvements", "hidden": false},{"type": "docs", "section":"Docs", "hidden": false},{"type": "style", "section":"Styling", "hidden": false},{"type": "refactor", "section":"Code Refactoring", "hidden": false},{"type": "perf", "section":"Performance Improvements", "hidden": false},{"type": "test", "section":"Tests", "hidden": false},{"type": "build", "section":"Build System", "hidden": false},{"type": "ci", "section":"CI", "hidden":false}]'

复制代码

当监听到 master 分支变化时,该 action 会根据项目中符合规范的 commit ,自动生成更新日志,并提交发布版本的 pull request

changelog-types 字段默认只有 featfix 类型,如果需要展示其他的更新日志,可以如上自行设置。

接着我们还需要配置 RELEASE_TOKEN 变量。

生成 Token

脚本编写完成之后,我们需要配置 RELEASE_TOKEN 这个变量,确保 release-please-action 有对应的权限进行一些必要的修改和更新。

1649748199(1).png

首先进入到设置页面,找到 Developer settings 中的 Personal access tokens,然后点击 Generate new token 进行新增。

image.png

Note 可以随意填写,不需要与 action 配置的 RELEASE_TOKEN 一样,这里我们填 release-test

Expiration 设置不过期 No expiration,然后勾选以下权限

image.png

最后点击 Generate token,即可生成对应 Token,然后点击复制按钮进行复制。

注意:该页面关闭之后,如果没有复制或者保存的话,token将会消失,只能重新执行上述步骤重新生成。

image.png

生成 RELEASE_TOKEN

接下来,需要到项目中的 Settings 去配置 RELEASE_TOKEN

image.png

点击 New repostory secretName 需要与 action 中的 secrets.xxx 一致,Value 的话就是我们上一步生成出来的 Token,直接粘贴即可。

之后点击 Add secret 即可生成 RELEASE_TOKEN

1650355497(1).png

到这里,我们完成了自动发布版本及更新日志的 action 配置,但目前只会存在 pull request 中,我们需要自动合并该pr。

下面就来介绍另外一个 action 。

automerge-action

我们使用 automerge-action 来自动合并 pr 。

根目录 .github/workflows 下创建 auto-merge.yml 文件,并添加以下代码

name: Automerge

on:
  pull_request:
    types:
      - labeled
      - unlabeled
      - synchronize
      - opened
      - edited
      - ready_for_review
      - reopened
      - unlocked
  pull_request_review:
    types:
      - submitted
  status: {}

jobs:
  # 合并发布版本的 pr 到 master
  auto-merge:
    runs-on: ubuntu-latest
    steps:
      - name: Automerge
        uses: 'pascalgn/[email protected]'
        env:
          GITHUB_TOKEN: '${{ secrets.RELEASE_TOKEN }}'
          MERGE_LABELS: ''
          # 只要是 kailong321200875 用户,都进行合并
          MERGE_FILTER_AUTHOR: 'kailong321200875'

复制代码

这样我们就配置完成了,推送到 master 的时候,即可查看效果。

1650356095(1).png

总结

通过自动发布,我们可以很大程度的避免错误,并且减少手动更新的成本。

如果需要文章的源码,可自取: 文章项目Demo

猜你喜欢

转载自juejin.im/post/7088225775731605518