「小工具」volkswagen: 检测测试何时在CI中执行并且让其通过
关键字: [volkswagen, ci, auto pass]
extern crate volkswagen;
#[cfg(test)]
mod tests {
#[volkswagen::test]
fn it_works() {
assert_eq!(1 + 1, 3);
}
}
比如这个测试,会失败。但是volkswagen会根据失败的结果,生成一个新的测试,让其通过。
目测,用这个工具的时候最好确定你真的需要它来自动生成测试,否则可能引起问题
「附带八卦」
该作者起volkswagen这个名字,可能另有深意啊。
大众汽车「排放门」,2015年9月18日,美国环境保护署指控大众汽车所售部分柴油车安装了专门应对尾气排放检测的软件,可以识别汽车是否处于被检测状态,继而在车检时秘密启动,从而使汽车能够在车检时以“高环保标准”过关,而在平时行驶时,这些汽车却大量排放污染物,最大可达美国法定标准的40倍。
「社区」我的Rust程序发布checklist
关键字: [fd, release, checklist]
该文是fd库的作者总结出来的release清单,可以给社区提供一个借鉴。
按以下顺序做发布检查,非常重要:
一、 检查和更新依赖。
- 检查deps.rs是否有过期的依赖
- 运行cargo update去更新最新的兼容(minor)版本的依赖性
- 如果需要,可以手动更新到最新的主(major)版本
对于主版本更新还需要查看上游更改,仔细评估是否真的需要更新为新版本。
二、获取自上次发布以来的更新列表
通过 GitHub -> Release -> "XX commits to master since this release"
就能获取此更新列表。
三、更新文档
- 检查并更新 -h和—help文本
- 更新Readme(程序的用法、新功能介绍、最低要求的Rust版本)
- 更新man页面
四、在本地安装主分支并且测试新功能
- 使用
cargo install -f
来安装 - 手动测试新功能
- 运行基准测试避免性能回退
理想情况下,为新的功能编写了测试,并且也使用了CI,是没有什么可担心的了。但实际上,总有一些事需要手工审查。尤其是对终端环境依赖的CLI项目更是需要如此。
五、清理代码库。
- 运行
cargo clippy
并查看修改建议 [可选] - 运行
cargo fmt
自动格式化代码 - 运行
cargo text
确保所有测试通过
最后两步通常包含在CI中。
六、更新版本信息
- 在
Cargo.toml
中更新项目版本 - 运行
cargo build
更新Cargo.lock
- 在项目仓库中搜索旧的版本号将其更新为新版本(比如在Readme、安装说明、构建脚本中等等)
七、使用Dry run模拟发布
cargo publish --dry-run --allow-dirty
通过这次模拟来发现上传包到crates.io中的问题,提前检查修改
八、Commit、Push并等待CI成功
九、写release notes。
十、 为最新的提交打上tag,并且开始部署。
git tag vX.Y.Z; git push --tags
十一、在GitHub上创建实际的发布版本。
十二、验证部署。确保已经上传了所有的二进制文件。
十三、发布到crates.io。
cargo publish
十四、通知软件包维护者有关的更新信息。
「博文」 2D图形Rust开发:了解GPU内存管理
关键字: [2D, GPU, gfx]
该篇文章在gfx-hal基础上构思了一个2D图形库的一些底层实现细节。他讨论的这些内容并非2D图形API,而是基础的组件,在此组件上面可以实现各种渲染技术,并且该组件将独立于这些渲染技术。
「小工具」xcp:扩展cp命令
关键字: [xcp, cp]
提供进度条和.gitignore支持
「小工具」cargo-template-ci:自动生成travis.yml
关键字: [ci, template, travis, cargo]
「工具」Roughenough 1.1.0 发布
关键字: [roughtime, time-sync]
该工具是基于Google的Roughtime协议的Rust实现,包含了客户端和服务端。可以用来做时间同步验证。比如区块链矿工可以用它来验证自己的时间早于其他矿工。
新版本中支持KMS、HTTP运行状况检查和服务器模糊测试
「库」slotmap 0.3 发布
关键字: [slotmap, Generational, Index ]
该库是在Rust 2018 Conf闭幕演讲中介绍的,基于 Generational Index模式实现的库。
新功能:
- 可以自定义Key的类型
- SecondaryMap,运行slotmap中的key和任意数据关联
「库」bytecount 0.4 发布
关键字: [bytecount, stdsimd, simd, byte, count]
该库可以快速计算内存中给定字节或UTF8字符串出现的次数
新版本中支持了新的更快的算法,基于stdsimd。
每日新闻订阅地址:
欢迎通过GitHub issues投稿。
评论区
写评论还没有评论