有没有一个API可以与Cruise Control .NET(ccnet)一起使用来查询服务器,例如获取各种构建的状态?有Cruise Control .NET的API吗?
我注意到在ccnet托盘应用程序中有几个选项用于连接,但我找不到服务API的任何文档或如何使用它的示例。
有没有一个API可以与Cruise Control .NET(ccnet)一起使用来查询服务器,例如获取各种构建的状态?有Cruise Control .NET的API吗?
我注意到在ccnet托盘应用程序中有几个选项用于连接,但我找不到服务API的任何文档或如何使用它的示例。
当Tray应用程序使用它时肯定会有一个API。我已经从他们的SVN仓库中下载了代码(注意:根据下面的URL,它现在托管在github.com
)以修复一个错误(“最后生成时间”列的工作方式 - 这是固定的,但是回归在1.5版本中),这可能是一个很好的开始。
存储库网址是https://github.com/ccnet/CruiseControl.NET
。
我刚刚更新了我的本地副本,并通过了一个mooch,并且您想要的是Remote
项目中的CruiseServerHttpClient
类。
使用Remote
组件上以获得每个项目的状态/强制执行构建
Thoughtworks.CruiseControl.Remote
和NetReflector
(两者都将位于Remote
项目的\ bin目录中)控制台应用程序代码:
using System;
using ThoughtWorks.CruiseControl.Core;
using ThoughtWorks.CruiseControl.Remote;
using ThoughtWorks.CruiseControl.Remote.Messages;
namespace CruiseControlInterface
{
class Program
{
static void Main(string[] args)
{
var ipAddressOrHostNameOfCCServer = ""; // Complete this value
var client = new CruiseServerHttpClient(
string.Format("http://{0}/ccnet/",ipAddressOrHostNameOfCCServer));
foreach (var projectStatus in client.GetProjectStatus())
{
Console.WriteLine("{0} - {1}", projectStatus.Name, projectStatus.BuildStatus);
}
}
}
}
对于每一个项目,你会得到类似的输出:
项目名 - 成功
强制执行构建,你” d拨打以下电话:
client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));
引擎盖下,这导致在HTTP请求被提出,包括:
POST http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx HTTP/1.1
内容类型:应用/ X WWW的窗体-urlencoded
主机:192.168 .100.180
的Content-Length:64
期望值:100继续ForceBuild =真& PROJECTNAME = PROJECT_NAME & serverName = local
您也可以直接通过HTTP查询,通过加载页面http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx
。这将返回一个XML文档,给出所有构建项目的状态,如在页面http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx
上呈现的那样。
如果你能深入了解构建项目的历史 - 也许你可以,我还没有尝试过!
将Nuget包CruiseControl.Net添加到您的项目中。 http://www.nuget.org/packages/CruiseControl.Net/
这会将ThoughtWorks.CruiseControl.Core,ThoughtWorks.CruiseControl.Remote和NetReflector的引用添加到您的项目中,并为您提供一种简单的方法使其保持最新状态。
现货答案,cheers! :-) – 2010-08-12 21:46:30
程序集Whiletworks.CruiseControl.Remote.dll和NetReflector.dll也位于cctray程序文件目录中。 – John 2011-04-05 08:42:18
在您的示例中强制构建需要计算机名称和用户。这仅仅是为了记录,因为它不是在邮件中发送的? – 2011-04-14 07:12:24