#发布 #语义发布 #GitHub Actions #命令行工具

构建 semantic-release-cargo

一个命令行界面,用于将 Rust 集成到语义发布工作流程中

324 个稳定版本

2.4.0-beta.12024 年 5 月 31 日
2.3.57 2024 年 8 月 24 日
2.3.43 2024 年 7 月 26 日
2.2.96 2024 年 3 月 30 日
1.0.2 2022 年 12 月 12 日

#61构建工具

Download history 737/week @ 2024-05-04 241/week @ 2024-05-11 59/week @ 2024-05-18 878/week @ 2024-05-25 361/week @ 2024-06-01 347/week @ 2024-06-08 223/week @ 2024-06-15 462/week @ 2024-06-22 608/week @ 2024-06-29 627/week @ 2024-07-06 437/week @ 2024-07-13 453/week @ 2024-07-20 137/week @ 2024-07-27 326/week @ 2024-08-03 1046/week @ 2024-08-10 293/week @ 2024-08-17

2,010 每月下载量

MIT/Apache

91KB
1.5K SLoC

semantic-release-cargo

Build Status

semantic-release-cargo 将基于 cargo 的 Rust 项目与 semantic-release 集成。这解决了两个用例

  1. 发布到 crates.io 或其他替代 crate 注册表,以及
  2. 编译发布版二进制文件

发布到 crates.io

按照以下说明操作后,您将拥有一个语义发布管道,可以将您的 Rust crate 发布到 crates.io。

要求

如果要将软件包发布到 crates.io,您必须设置 CARGO_REGISTRY_TOKEN 环境变量。

如果要将软件包发布到 替代注册表,您必须设置 CARGO_REGISTRIES_<YOUR REGISTRY>_TOKEN 环境变量。

此工作流程支持以下系统

系统 支持?
macOS aarch64
macOS x64
Linux x64 gnu

安装

使用 npm 安装 semantic-release-cargo

$ npm install --save-dev --save-exact @semantic-release-cargo/semantic-release-cargo

用法

semantic-release-cargo 添加到您的 semantic-release 配置文件 .releaserc.json

{
  "plugins": ["@semantic-release-cargo/semantic-release-cargo"]
}

使用 semantic-release-action 的替代配置

如果您不希望将 npm 与您的 Rust 项目混合,您可以使用 semantic-release-action

编译发布版本二进制文件

按照以下说明操作后,您将拥有一个GitHub Actions工作流程,该工作流程将设置在Cargo.toml中的下一个版本号并编译您的crate发布版本的二进制文件。

使用下一个版本号更新Cargo清单可以让您在编译的二进制文件中引用下一个版本,例如使用clap::crate_version宏。

编译的二进制文件可以使用@semantic-release/github插件上传到GitHub发布。

此工作流程支持以下系统

系统 支持?
macOS aarch64
macOS x64
Linux aarch64
Linux x64
Linux x86

用法

在第一个作业中,使用next-release-version动作保存下一个发布版本为GitHub Actions输出

jobs:
  get-next-version:
    uses: semantic-release-action/next-release-version/.github/workflows/next-release-version.yml@v4

在下一个作业中,使用semantic-release-cargo在编译之前设置crate版本

build:
  name: Build
  runs-on: ubuntu-latest
  needs:
    - get-next-version

  steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install semantic-release-cargo
      if: needs.get-next-version.outputs.new-release-published == 'true'
      uses: EricCrosson/install-github-release-binary@v2
      with:
        targets: semantic-release-cargo@2

    - name: Prepare semantic-release for Rust
      if: needs.get-next-version.outputs.new-release-published == 'true'
      run: semantic-release-cargo prepare ${{ needs.get-next-version.outputs.new-release-version }}

    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@master

    - name: Cargo build
      run: cargo build --release --target=x86_64-unknown-linux-gnu --all-targets

示例工作流程

您可以为这两个用例创建一个单一的GitHub Actions工作流程。此存储库使用semantic-release-cargo与semantic-release一起发布到crates.io并创建带有预编译二进制文件的GitHub发布。

有关工作示例,请参阅release.yml

贡献者许可协议

除非您明确声明,否则您提交给semantic-release-cargo的任何贡献,根据Apache-2.0许可证定义,应双许可如上所述,无需任何额外条款或条件。

致谢

此存储库已从kettleby/semantic-release-rust分支。所有荣誉归原作者。

依赖关系

~9–18MB
~255K SLoC