REA*_*REW 29 .net c# api cruisecontrol.net continuous-integration
我可以使用Cruise Control .NET(ccnet)查询服务器的API,例如获取各种构建的状态吗?
我注意到ccnet托盘应用程序中有一些选项可供连接,但我找不到服务API的任何文档或如何使用它的示例.
Rob*_*Rob 34
当托盘应用程序使用它时,肯定有一个API.我以前从他们的SVN存储库下载了代码(注意:根据下面的URL,它现在托管在github.com)来修复错误("最后构建时间"列的工作方式 - 已修复,但在1.5中回归释放),这可能是一个很好的起点.
存储库网址是https://github.com/ccnet/CruiseControl.NET.
我刚刚更新了我的本地副本,并通过了一个可能的候选人,你想要的是项目中的CruiseServerHttpClient类Remote.
使用Remote程序集获取每个项目的状态/强制构建
Thoughtworks.CruiseControl.Remoteand 的引用NetReflector(两者都将在\ bin目录中Remote)控制台应用代码:
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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于每个项目,您将获得类似于以下内容的输出:
ProjectName - 成功
要强制构建,您可以进行以下调用:
client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));
Run Code Online (Sandbox Code Playgroud)
在引擎盖下,这导致发出的HTTP请求包括:
POST http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx HTTP/1.1
Content-Type:application/x-www-form-urlencoded
主机:192.168.100.180
内容长度:64
期望:100-continueForceBuild =真PROJECTNAME = PROJECT_NAME&SERVERNAME =本地
Twi*_*tem 10
将Nuget包CruiseControl.Net添加到您的项目中.http://www.nuget.org/packages/CruiseControl.Net/
这将向您的项目添加对ThoughtWorks.CruiseControl.Core,ThoughtWorks.CruiseControl.Remote和NetReflector的引用,并为您提供一种简单的方法来使其保持最新.
您还可以通过加载页面直接通过HTTP进行查询http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx.这将返回一个XML文档,该文档提供所有构建项目的状态,如页面上呈现的那样http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx.
如果您可以深入了解构建项目的历史,那将是很好的 - 也许您可以,我没有尝试过!
| 归档时间: |
|
| 查看次数: |
5789 次 |
| 最近记录: |