本文已参与「新人创作礼」活动,一起开启掘金创作之路。
开源项目中,经常会碰到这样的问题,当发布一个版本的时候,我们需要手动修改版本号,然后添加更新日志,打标签,生成 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
字段默认只有 feat
和 fix
类型,如果需要展示其他的更新日志,可以如上自行设置。
接着我们还需要配置 RELEASE_TOKEN
变量。
生成 Token
脚本编写完成之后,我们需要配置 RELEASE_TOKEN
这个变量,确保 release-please-action
有对应的权限进行一些必要的修改和更新。
首先进入到设置页面,找到 Developer settings
中的 Personal access tokens
,然后点击 Generate new token
进行新增。
Note
可以随意填写,不需要与 action
配置的 RELEASE_TOKEN
一样,这里我们填 release-test
Expiration
设置不过期 No expiration
,然后勾选以下权限
最后点击 Generate token
,即可生成对应 Token
,然后点击复制按钮进行复制。
注意:该页面关闭之后,如果没有复制或者保存的话,token将会消失,只能重新执行上述步骤重新生成。
生成 RELEASE_TOKEN
接下来,需要到项目中的 Settings
去配置 RELEASE_TOKEN
点击 New repostory secret
,Name
需要与 action
中的 secrets.xxx
一致,Value
的话就是我们上一步生成出来的 Token
,直接粘贴即可。
之后点击 Add secret
即可生成 RELEASE_TOKEN
到这里,我们完成了自动发布版本及更新日志的 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/automerge-action@v0.14.3'
env:
GITHUB_TOKEN: '${{ secrets.RELEASE_TOKEN }}'
MERGE_LABELS: ''
# 只要是 kailong321200875 用户,都进行合并
MERGE_FILTER_AUTHOR: 'kailong321200875'
这样我们就配置完成了,推送到 master
的时候,即可查看效果。
总结
通过自动发布,我们可以很大程度的避免错误,并且减少手动更新的成本。
如果需要文章的源码,可自取: 文章项目Demo