78 个版本 (21 个重大更新)

新增 0.21.1 2024 年 8 月 20 日
0.20.0 2024 年 8 月 8 日
0.19.1 2024 年 7 月 12 日
0.12.0 2024 年 3 月 21 日
0.0.0 2022 年 9 月 16 日

#35Cargo 插件

Download history 94/week @ 2024-04-29 597/week @ 2024-05-06 219/week @ 2024-05-13 434/week @ 2024-05-20 294/week @ 2024-05-27 344/week @ 2024-06-03 258/week @ 2024-06-10 168/week @ 2024-06-17 394/week @ 2024-06-24 441/week @ 2024-07-01 569/week @ 2024-07-08 265/week @ 2024-07-15 99/week @ 2024-07-22 60/week @ 2024-07-29 227/week @ 2024-08-05 228/week @ 2024-08-12

每月 621 次下载
2 crates 中使用

MIT/Apache

1MB
17K SLoC

Rust 14K SLoC // 0.1% comments Jinja2 2.5K SLoC // 0.0% comments JavaScript 227 SLoC // 0.0% comments

cargo-dist

crates.io docs Rust CI

cargo-dist分发您的二进制文件

简单来说,设置 cargo-dist 后,只需这样做

git commit -am "release: 0.2.0"
git tag "v0.2.0"
git push
git push --tags

将生成 这个 GitHub 发布版

如果您正在使用 oranda,您将获得 这个网站

计划、构建、托管、发布、宣布

发布应用程序版本并分发二进制文件有很多步骤,cargo-dist 正在迅速发展以尝试涵盖所有这些步骤!

为此,cargo-dist 功能可以分为两部分

  • 构建(规划 发布;构建 二进制文件和安装程序)
  • 分发(托管 工件;发布 软件包;宣布 发布)

构建功能可以单独使用,如果您只需要一些 tarball 和安装程序,但使用分发功能时,所有功能才能真正整合。

构建

作为一个构建工具,cargo-dist 可以做到以下几点

这是一个简短的列表,因为“我们制作安装程序”正在做大量的重活。每个安装程序都可以(有时确实如此!)成为一个完整的独立工具,拥有自己的文档和生态系统。

分发

作为一个分发工具,cargo-dist 可以发挥其最大的超级能力:它生成自己的 CI 脚本。例如,通过 cargo dist init 启用 GitHub CI 将生成 release.yml,该文件实现了计划、构建、托管、发布、公告的全流程

  • 计划
    • 等待您推送一个用于新版本的 git 标签(v1.0.0,my-app-v1.0.0,my-app/1.0.0,...)
    • 根据该标签选择您工作区中哪些应用程序需要宣布新版本
    • 生成一个包含变更日志和构建计划的机器可读的清单
  • 构建
  • 发布
    • 上传到包管理器
  • 托管 + 公告
    • 创建(或编辑)GitHub 发布
    • 将构建工件上传到发布
    • 添加来自 RELEASES/CHANGELOG 的相关发布说明

阅读本书!

我们所有的文档都在cargo-dist 书籍中!

贡献

更新快照

cargo-dist 的测试依赖于 cargo-insta 进行各种输出的快照测试。这使我们既能捕捉回归,也能更容易地审查 UI/输出更改。如果快照测试失败,您将需要使用 cargo insta CLI 工具来更新它们

cargo install cargo-insta

安装后,您可以使用以下方式审查和接受更改:

cargo insta review

如果您确定喜欢更改,只需使用 cargo insta accept 自动应用所有更改。

(如果您引入了全新的快照测试,您还必须使用 git add 将它们!)

注意:当它成功时,cargo-dist-schema 的 emit 测试实际上会作为副作用将结果提交回磁盘到 cargo-dist-schema/cargo-dist-schema.json。这是一个糟糕的技巧,以确保我们始终存储并更新它(测试还使用了一个 insta 快照,但 insta 快照包含额外的垃圾标题,所以我们不想将其链接到最终用户)。该文件目前甚至没有被用于任何事情,我只是想让它存在,因为它似乎有用且重要。将来我们可能会正确地托管它,并且让我们的输出通过 $schema 字段来链接它。

发布版本

cargo-dist 是自托管的,因此你只需要推送一个正确格式的 git 标记到 "do" 以进行发布。当然,更新发布版本还有许多其他繁琐的任务,我们使用 cargo-release 来处理所有这些更新版本、标题和标签的机械细节。请参阅文档中的这些部分,了解我们使用的发布工作流程

总结

  • 更新 CHANGELOG.md 的 "未发布" 部分,以包含你想要的所有发布说明
  • 按照文档中的说明运行 cargo-release
  • .. 完成!

请注意,我们已经将 cargo-dist 和 cargo-release 配置为理解 "未发布" 标题,因此你永远不要编辑这个名称,工具将根据需要更新它。

如果发布成功,我们建议随后更新 cargo-dist 的引导版本

  • 在你的系统上安装你刚刚发布的 cargo-dist 版本
  • 运行 cargo dist init --yes
  • 提交 "chore: 更新引导 dist 到 ..."

请注意,由于我们是自托管的,cargo-dist 发布的工件总是由先前的版本构建/生成。如果你对 cargo-dist-schema 的格式进行了破坏性更改,这可能会导致问题... 所以不要!schema 中的许多内容都有意设置为可选,以实现前后兼容性,所以希望它能很好地工作!

依赖关系

~33–69MB
~1M SLoC