Github 配置 Action 自动生成 Rust 项目 Release 资源
如果我们在 Github 上开源了一款 Rust 项目,那么我们就可以借助 Github Action 来完成自动在不同平台上打包,并在创建 Release 后上传到 Github Release 中。
找寻合适的 Action
在 Github Marketplace 中寻找我们需要的 Action
我使用的 Action 为:
配置
在 Git 根目录下创建.github/workflows 目录,目录下创建 Action 配置文件,名称可自定义,我的文件为.github/workflows/release.yaml
在文件中填下如下内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63name: Release
permissions:
  contents: write
on:
  push:
    tags: [ "v[0-9]+.*" ]
env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1
defaults:
  run:
    shell: bash
jobs:
  create-release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
      - uses: taiki-e/create-gh-release-action@v1
        with:
          branch: master
          # (Optional)
          changelog: CHANGELOG.md
          # (Optional) Format of title.
          # [default value: $tag]
          # [possible values: variables $tag, $version, and any string]
          # title: $version
          # (Required) GitHub token for creating GitHub Releases.
          token: ${{ secrets.GITHUB_TOKEN }}
  upload-assets:
    needs: create-release
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: taiki-e/upload-rust-binary-action@v1
        with:
          # (required) Comma-separated list of binary names (non-extension portion of filename) to build and upload.
          # Note that glob pattern is not supported yet.
          bin: tools  #需要添加自己的名称,package.name
          # (optional) On which platform to distribute the `.tar.gz` file.
          # [default value: unix]
          # [possible values: all, unix, windows, none]
          tar: unix
          # (optional) On which platform to distribute the `.zip` file.
          # [default value: windows]
          # [possible values: all, unix, windows, none]
          zip: windows
          # (required) GitHub token for uploading assets to GitHub Releases.
          token: ${{ secrets.GITHUB_TOKEN }}
这其中需要注意的两项
branch: master需要替换为自己的主分支名bin: tools需要替换为自己的构建名称,主要就是Cargo.toml中的package.name
触发
Action 使用的 push tag 触发,也就是需要再本地打一个 tag,并推到 Github 才能触发。并且这个 Tag 有名称要求 tags: [ "v[0-9]+.*" ], 可以替换为自己的。
识别到这个版本号后,会在根目录找到 CHANGELOG.md, 找到对应的版本号下的日志。
例如打了一个 v0.0.1 的 tag,那么 CHANGELOG.md 的内容就为1
2
3
4
5
6
7
8
9# Changelog
## [Unreleased]
## [0.0.1] - 2024-02-22
- change something
- add something