cargo 包的发版器
从 npm 转过来的,之前一直使用 github action 做npm包的发布器,发布流程比较丝滑,具体是怎么样的流程呢,一般情况下我们在拥有自己的一个库的时候,新版本发布会有以下流程:
- 运行单元测试
- 在库的配置文件中改下版本号
- 打包新版本,并推送到平台上去,
- 以上步骤没问题的话,打上 git 的 tag 标记,用于记录
- 推送代码到 github ,同时要推送 tag 到 github 上去
npm 项目的话,有 primer/publish 这种 github action 可以帮助我们做这些事,唯一我们自己要做的就是,写测试用例(可选),更改配置文件中的版本号,其他的就可以帮我们完成。
前段时间写了一个 rust 的库,发现没有类似的工具,就动手写了一个,地址在这 publish-action, 内含英文文档,在这里写一下中文文档:
- 你需要在 crates.io/settings/tokens 页面中申请一个 token,拥有库的推送权限
- 打开你的 github 仓库的配置页面,找到
Environments Settings
配置页,创建一个环境变量,并命名为cargo
,在该环境变量中添加一个机密信息,变量名为CARGO_REGISTRY_TOKEN
,值为第一步中获取到的 token - 你需要打开 github 配置页的 action 配置页,在 Workflow permissions 中选中 Read and write permissions ,授权 github action 对你的项目拥有读写权限,用于打 tag
- 在你本地的项目根目录中,创建
.github/workflows
目录,并在里面创建一个名字为publish.yaml
的文件,内容如下:
name: Publish to Cargo
on:
push:
branches: [ master ]
jobs:
publish:
runs-on: ubuntu-latest
name: 'publish'
# Reference your environment variables
environment: cargo
steps:
- uses: actions/checkout@master
# Use caching to speed up your build
- name: Cache publish-action bin
id: cache-publish-action
uses: actions/cache@v3
env:
cache-name: cache-publish-action
with:
path: ~/.cargo
key: ${{ runner.os }}-build-${{ env.cache-name }}
# install publish-action by cargo in github action
- name: Install publish-action
if: steps.cache-publish-action.outputs.cache-hit != 'true'
run:
cargo install publish-action --version=0.1.12
- name: Run publish-action
run:
publish-action
env:
# This can help you tagging the github repository
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# This can help you publish to crates.io
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- 保存并推送到 github 即可
至此配置完成,下一次发版的时候,只需要改变 Cargo.toml 文件中的版本号,然后推送到 github 上去,即可自动运行剩余的固定步骤