【发布时间】:2019-11-14 03:52:40
【问题描述】:
我试图让 Cargo 在 CI 上出现警告时失败,但在本地开发时却没有。
我有一个可行的解决方案,即在 CI 作业中设置 RUSTFLAGS=“-D warnings”。这很有效,因为它确实会导致本地 crates 的构建失败,但依赖 crates 不会失败(由于 —cap-lints)。
最近,必须在(签入).cargo/config 文件中设置一些 rustflag:
[target.’cfg(target_os = “linux”)’]
rustflags = [“some”, “options”]
这不起作用,因为RUSTFLAGS 优先,.cargo/config 标志将被忽略。我不想将-D warnings 添加到config,因为这在开发过程中会很痛苦。
当前的解决方法是在 CI 作业之前调整 config 的脚本:
sed -i "s:\(rustflags = .*\)]:\1, \"-D\", \"warnings\"]:g" .cargo/config
echo '[build]' >> .cargo/config
echo 'rustflags = [ "-D", "warnings"]' >> .cargo/config
这会将-D warnings 附加到配置中的现有rustflags 并创建一个额外的包罗万象的config 条目,以确保-D warnings 在非Linux CI 版本上也启用.
这太骇人听闻了;有没有更好的解决方案?
也许这应该是对 Cargo 存储库的功能请求,但我不知道理想的解决方案是什么样的。
【问题讨论】:
标签: rust continuous-integration rust-cargo