#ci #cargo #integration #messages #service #team-city #teamcity

bin+lib cargo-service-message

无缝集成Cargo与TeamCity

3个版本

0.1.8 2020年10月24日
0.1.5 2020年10月18日
0.1.4 2020年10月17日

测试中排名第461

MIT/Apache

44KB
851行(不包括注释)

cargo-service-message

为Cargo提供(测试)服务消息,以便集成到CI系统如TeamCity。

(如果您允许向TeamCity实例添加插件,请参阅https://github.com/JetBrains/teamcity-rust-plugin

如何安装?

按照标准方式安装

cargo install cargo-service-message

如果您想要覆盖率,也请安装grcov

cargo install grcov

如何使用?

如果您使用Teamcity或Teamcity Cloud,那么如果您输入

cargo service-message test而不是cargo test,则它会发出TeamCity(和其他人?)理解并用于动态更新UI的服务消息。

如果您的命令行不起作用,请提出一个问题。

开箱即用的支持功能

以下是一些迄今为止似乎可以正常工作的示例命令

  • cargo service-message test(测试结果将在TeamCity UI中实时显示)
  • cargo service-message bench(统计信息记录以便TeamCity可以将其绘制成图表)
  • cargo service-message clippy(违规情况显示为检查项)
  • cargo service-message build(警告显示为检查项)
  • cargo service-message check
  • cargo service-message rustc
  • cargo service-message clean(无操作)
  • cargo service-message fmt(无操作)

对于编译,它会在工件中添加cargo-timings.html。我无法为您配置报告选项卡以显示它 - 您可以从实例的根项目为所有项目进行此操作,如果报告存在,它将添加选项卡。

设置环境变量SERVICE_MESSAGE="--cover"以生成覆盖率。

如果您不希望在调用后生成覆盖率报告(因为您还有更多测试要运行,这将影响覆盖率),则使用:"--cover-without-report"。

设置环境变量SERVICE_MESSAGE="--debug"以显示调试信息。

待办事项列表

[ ] 样式化覆盖率结果,使其看起来不那么糟糕。

[ ] 现在覆盖率是自动的,写一些更多的测试。

[ ] 如果子命令有问题,我们可以从stdin读取。例如:cargo test --message-format=json | cargo-service-message

[ ] 支持just/cargo-make?

Teamcity 待办事项列表

Hi Jetbrains,以下是使Teamcity + Rust更加出色的方法

[ ] 在检查中使用等宽字体。

[ ] 在检查中解释ansi转义代码,就像在teamcity构建日志中发生的那样。

需要帮助

[ ] 需要TeamCity测试人员 - 在您的Teamcity实例上试用并给我们反馈!

[ ] 需要黑客 - 帮助使crate在尽可能多的环境中正确运行。

许可证

选择Apache 2.0或MIT许可证。

跟踪问题

https://github.com/rust-lang/rust/pull/77890

https://github.com/rust-lang/rust/issues/49359

https://github.com/rust-lang/rust/issues/50297

发布日志

0.1.8 忽略报告的测试。

0.1.7(未发布):使覆盖率与proc-macros一起工作。

0.1.6(未发布):尊重CARGO_TARGET_DIR。

0.1.5 忽略覆盖率中的第三方crate。

0.1.4 初始crate发布

依赖项

~1.9–10MB
~94K SLoC