#workflow #github-actions #template #ci-cd #pull-request #yaml #cargo

app rust-ci-cd-template

为 GitHub 的 Rust CI/CD 模板

14 个版本

0.2.5 2024年7月6日
0.2.4 2024年7月1日
0.2.3 2024年6月19日
0.1.8 2024年5月2日
0.1.7 2024年3月19日

58测试 中排名

Download history 114/week @ 2024-04-27 14/week @ 2024-05-04 2/week @ 2024-05-18 1/week @ 2024-05-25 430/week @ 2024-06-15 9/week @ 2024-06-22 160/week @ 2024-06-29 195/week @ 2024-07-06 3/week @ 2024-07-13 126/week @ 2024-07-27

每月下载量 331

CC0-1.0 OR MIT OR Apache-2.0

21KB

Rust CI/CD 模板

License Crates.io Minimum Supported Rust Version CI

用于使用 GitHub Workflows 维护 Rust 项目的 CI/CD 模板。

CI 工作流

ci.yaml

CI

每次你向主分支推送或发起拉取请求时,此工作流都会运行。你还可以在 GitHub 中手动运行此工作流。

它将执行

CD 工作流程

CD-1 CD-2

build_and_release.yaml

此工作流程只能通过GitHub手动运行。

它将

  • 使用正则表达式验证您的输入版本(例如v3.1.4-alpha+159)。
  • 运行ci工作流程。
  • 运行cargo semver-checks
    • 检查您的crate API更改是否存在semver违规。
    • 这仅适用于您是库的crate。
    • 使用您之前的tag作为基准。
  • 运行add-notice
    • 为rust文件添加标题通知。
    • 检查NOTICE文件
    • 自动提交。
  • 运行cargo-bump
    • 提升Cargo.toml文件的当前版本。
    • 如果提供,则使用输入版本。
    • 自动提交。
  • 运行cargo-attributions
    • 遵守许可证分发。
    • 添加依赖项的许可证、通知和元数据。
    • 创建一个attribution文件夹
    • 自动提交。
  • 创建一个新的tag
    • 如果提供,则使用输入版本。
    • 仅当tag不存在时创建。
  • 创建一个新的GitHub发布版
  • 在GitHub中构建和发布
    • 使用upload-rust-binary-action
    • setup-cross-toolchain-action
    • 仅当您的crate包含二进制crate时才进行构建。
    • 使用创建的tag作为参考。
    • 将许可证和通知捆绑到attribution文件夹中。
    • 使用sha256创建校验和。
    • 为Linux:gnu(x86_64|aarch64|riscv64gc)和musl(x86_64|aarch64)构建。
    • 为Windows:msvc(x86_64|aarch64)和gnu(x86_64)构建。
    • 为mac-os(x86_64|aarch64)构建。
  • 将创建的内容发布到crates.io
    • 仅当您将secrets.CARGO_REGISTRY_TOKEN变量添加到存储库机密中时。
    • 路径:设置 -> 安全 -> 机密和变量 -> 操作 -> 存储库机密。

如何使用构建和发布工作流程

您可以直接在GitHub存储库中运行此操作 -> 部分 操作 -> [Main] Build & Release 工作流程。 -> 运行工作流程 按钮。

Build and Release Workflow

在这里,您可以执行以下操作以运行工作流程

  1. 编写您想要发布的版本:- 版本格式为
    • 版本部分:${MAJOR}.${MINOR}.${PATCH}-${PRE-RELEASE}+${BUILD}
    • 示例:3.1.4-alpha+159
  2. 选择您想要的发布类型:发布类型
    • 修补程序小版本大版本
    • 它将使用您当前的crate版本作为基准。
    • 如果只想写版本,请保留none
  3. 使用默认值保留所有(无版本和release_type = none)
    • 它将使用您当前的crate版本作为基准。
    • 如果您已经更新了crate版本,请运行。
    • 当您已经运行了工作流时,很有用。

这两个布尔值允许您将crate发布到create.io,并分别覆盖标签以添加对发布进行的修改。

Dependabot

此模板包括Dependabot的设置和自动合并的工作流。

  • 它将每周更新cargo和github-actions的包。

  • 对于rust

    • 它将在组中创建pull请求。
    • 一个组用于修补程序更新,一个组用于小版本更新,一个组用于大版本更新。
    • 如果通过ci,它将自动合并pull请求。
  • 对于github-actions

    • 它将在组中创建pull请求。
    • 只有一个组用于更新。
    • 如果通过ci,它将自动合并pull请求。

其他工作流

此模板使用工作流调用工作流调度来重用工作流,并能够独立运行它们。因此,您可以独立运行ci/cd工作流的各种作业。

一些值得考虑的工作流

  • weekly-workflow
    • 运行ci工作流程。
    • 更新依赖项、归属和通知。
  • monthly-workflow
    • 运行build_and_release工作流。
    • 进行修补程序发布并将其发布到crates.io
  • update_msrv.yaml
    • 它将运行cargo-msrv来更新Cargo.toml中的rust-version
    • 如果您的README.md中使用MSRV,它也会更新它。
  • cargo_semver_checks
    • 在发布前测试semver违规。
  • cache.yaml
    • 用于清理工作流生成的缓存。
    • 如果您遇到缓存问题,请运行。
  • add_notice.yaml
    • 用于替换和更新您的通知。
    • 用于将通知应用于其他类型的文件。
    • 用于使用不同的注释样式。
  • publish.yaml
    • 用于将您的crate发布到crates.io。

如果您想使用此模板,需要更改以下内容

可能有助于您的类似项目

LICENSE

SPDX-License-Identifier: CC0-1.0 OR MIT OR Apache-2.0

根据您的选择,在三项许可证下许可

无运行时依赖