如何使用 Remote API 获取 CCNet 构建的最终构建状态

How to get the final build status for a CCNet build using the Remote API

我一直在尝试编写一个简单的 Java 库来模拟来自 GitHub 的 Remote 程序集。为此,我查看了来自 .Net 版本的 XML,并在 Java 中进行了模拟。当我 运行 遇到问题时,我 "force build" 开始工作并想轮询服务器以获取构建结果。起初我以为是我的 Java 代码(通常的嫌疑人),但后来我发现 .Net 库似乎也存在同样的问题。

我的 C# 测试代码如下所示:

public void GetStatus() {
   CruiseServerClient client = new CruiseServerClientFactory().GenerateClient("http://myserver/ccnet", "local") as CruiseServerClient;
   String projectName = "MyProject";
   String buildName = client.GetMostRecentBuildNames(projectName, 1)[0];
   ProjectStatusSnapshot status = client.GetFinalBuildStatus(projectName, buildName);
   Console.WriteLine(status.Status);
}

当我调试它时,我可以看到对 GetMostRecentBuildNames returns 的调用类似于 "log20151229103101Lbuild.47.xml"。这个好像名字 在 URL 中用于 Web 前端。但是调用 GetFinalBuildStatus returns null,并查看响应 XML,我可以看到响应 包含一条警告,指出构建名称不存在。

我是否遗漏了一些重要的东西,或者 API 的这一部分完全损坏了?

交叉发布到 http://www.cruisecontrolnet.org/boards/2/topics/632

我最终使用了基于推送的方法,在该方法中我向作业添加了一组条件发布者。根据结果​​,发布者然后使用 custom Nant task 来调用另一台机器的 REST 接口和结果。

最终的解决方案感觉比轮询结果更干净,所以我很满意。