如何使用 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 的这一部分完全损坏了?
我最终使用了基于推送的方法,在该方法中我向作业添加了一组条件发布者。根据结果,发布者然后使用 custom Nant task 来调用另一台机器的 REST 接口和结果。
最终的解决方案感觉比轮询结果更干净,所以我很满意。
我一直在尝试编写一个简单的 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 的这一部分完全损坏了?
我最终使用了基于推送的方法,在该方法中我向作业添加了一组条件发布者。根据结果,发布者然后使用 custom Nant task 来调用另一台机器的 REST 接口和结果。
最终的解决方案感觉比轮询结果更干净,所以我很满意。