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 在 测试 中排名
每月下载量 331
21KB
Rust CI/CD 模板
用于使用 GitHub Workflows 维护 Rust 项目的 CI/CD 模板。
CI 工作流
每次你向主分支推送或发起拉取请求时,此工作流都会运行。你还可以在 GitHub 中手动运行此工作流。
它将执行
- cargo build: 为 ubuntu-latest 编译。
- cargo fmt
- Rust 格式化器。
- 检查文件 rustfmt.toml。
- cargo clippy
- 代码检查器可以捕获常见的错误并提高你的 Rust 代码质量。
- 检查 Cargo.toml 文件 中的
[lints.rust] 和
[linsts.clippy] 部分。
- cargo doc: 构建文档。
- cargo doc --test: 仅当 crate 是库时,在文档中运行测试。
- cargo-nextest: 执行单元和集成测试。
- cargo miri test: 帮助检测某些类别的 未定义行为。
- 错别字:
- 源代码拼写检查器。
- 检查 typos.toml 文件。
- 文档
- taplo fmt: Toml 格式化器。
- markdownlint-cli2:
- Markdown 检查器和格式化器。
- 检查 .markdownlint.yaml 文件。
- yamlfmt: Yaml 格式化器。
- cargo deny:
- 货物审计:
- 检查安全漏洞。
- 使用advisory-db
- cargo msrv:检查rustc版本。
CD 工作流程
此工作流程只能通过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发布版
- 使用create-gh-release-action
- 如果版本匹配,则包含您的变更日志。
- 使用创建的tag作为参考。
- 在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
工作流程。 -> 运行工作流程
按钮。
在这里,您可以执行以下操作以运行工作流程
- 编写您想要发布的版本:- 版本格式为
- 版本部分:
${MAJOR}.${MINOR}.${PATCH}-${PRE-RELEASE}+${BUILD}
- 示例:3.1.4-alpha+159
- 版本部分:
- 选择您想要的发布类型:
修补程序
、小版本
和大版本
。- 它将使用您当前的crate版本作为基准。
- 如果只想写版本,请保留
none
。
- 使用默认值保留所有(无版本和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-msrv来更新Cargo.toml中的
- cargo_semver_checks
- 在发布前测试semver违规。
- cache.yaml
- 用于清理工作流生成的缓存。
- 如果您遇到缓存问题,请运行。
- add_notice.yaml
- 用于替换和更新您的通知。
- 用于将通知应用于其他类型的文件。
- 用于使用不同的注释样式。
- publish.yaml
- 用于将您的crate发布到crates.io。
如果您想使用此模板,需要更改以下内容
- 更改此文件。
- 更改Cargo.toml中的元数据。
- 更改许可证文件。目前使用LICENSE-CC0-1.0、LICENSE-MIT和LICENSE-Apache-2.0。
- 更改deny.toml文件。
- 更改NOTICE文件。
- 从main.rs中删除通知。
- 或者,您可以在更新NOTICE文件之前运行add-notice --remove。
- 更改FUNDING.yaml文件。
可能有助于您的类似项目
LICENSE
SPDX-License-Identifier: CC0-1.0 OR MIT OR Apache-2.0
根据您的选择,在三项许可证下许可
- CC0-1.0许可证。
- MIT 许可证。
- Apache-2.0 许可证。