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 日 |
#35 在 Cargo 插件 中
每月 621 次下载
在 2 crates 中使用
1MB
17K SLoC
cargo-dist
cargo-dist分发您的二进制文件
简单来说,设置 cargo-dist 后,只需这样做
git commit -am "release: 0.2.0"
git tag "v0.2.0"
git push
git push --tags
将生成 这个 GitHub 发布版
计划、构建、托管、发布、宣布
发布应用程序版本并分发二进制文件有很多步骤,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,...)
- 根据该标签选择您工作区中哪些应用程序需要宣布新版本
- 生成一个包含变更日志和构建计划的机器可读的清单
- 构建
- 为每个您支持的平台启动机器
- 构建您的二进制文件和 tar 包
- 为您的二进制文件构建安装程序
- 发布
- 上传到包管理器
- 托管 + 公告
- 创建(或编辑)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