我正在尝试为 TeamCity 创建一个自定义插件,当我们的一个构建失败时Notificator
,它将向我团队的Slack实例发送一条消息。
我们能够让它运行,并按预期发送消息。当我们尝试查询SRunningBuild
传递到我们的notifyBuildFailed
方法实现中的失败原因列表时,就会出现问题。如果我们不尝试此操作,则会按预期显示失败消息。当我们尝试提取失败原因列表时,不会显示该消息,并且据我们所知,日志中没有引发异常。
这是我们代码的摘录:
public void notifyBuildFailed(@NotNull SRunningBuild build, @NotNull Set<SUser> users) {
String concatenatedFailureReasons =
getConcatenatedFailureReasons(build.getFailureReasons());
sendNotification("Build failed for the following reasons:\n" +
concatenatedFailureReasons, users);
}
private String getConcatenatedFailureReasons(List<BuildProblemData> reasons) {
String concatenatedFailureReasons = "";
for (BuildProblemData buildProblemData : reasons) {
concatenatedFailureReasons += buildProblemData.getDescription();
}
return concatenatedFailureReasons;
}
据我所知,失败实际上是在调用时发生的,build.getFailureReasons()
因为当我让该getConcatenatedFailureReasons
方法简单地返回一个空字符串时,它仍然无法正确显示消息。
由于我认为是 TeamCity 插件开发的性质,因此很难实际调试此问题。如果有人有一个很好的方法来逐步完成 TeamCity 插件代码,我很想听听。