是否有Cruise Control .NET的API?

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.

我刚刚更新了我的本地副本,并通过了一个可能的候选人,你想要的是项目中的CruiseServerHttpClientRemote.

使用Remote程序集获取每个项目的状态/强制构建

  • 从git编译源代码
  • 创建一个新的控制台应用程
  • 添加对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-continue

ForceBuild =真PROJECTNAME = PROJECT_NAME&SERVERNAME =本地


Twi*_*tem 10

将Nuget包CruiseControl.Net添加到您的项目中.http://www.nuget.org/packages/CruiseControl.Net/

这将向您的项目添加对ThoughtWorks.CruiseControl.Core,ThoughtWorks.CruiseControl.Remote和NetReflector的引用,并为您提供一种简单的方法来使其保持最新.


Dav*_*eny 7

您还可以通过加载页面直接通过HTTP进行查询http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx.这将返回一个XML文档,该文档提供所有构建项目的状态,如页面上呈现的那样http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx.

如果您可以深入了解构建项目的历史,那将是很好的 - 也许您可以,我没有尝试过!