是否有Cruise Control .NET的API?

时间:2010-08-12 12:00:17

标签: c# .net api continuous-integration cruisecontrol.net

我是否可以使用Cruise Control .NET(ccnet)查询服务器的API,例如获取各种构建的状态?

我注意到ccnet托盘应用程序中有一些用于连接的选项,但我找不到服务API的任何文档或如何使用它的示例。

3 个答案:

答案 0 :(得分:34)

当托盘应用程序使用它时,肯定有一个API。我之前从他们的SVN存储库下载了代码(注意:根据下面的URL,它现在托管在github.com )来修复错误(“最后构建时间”的方式)专栏作品 - 已修复,但在1.5版本中退步),这可能是一个很好的起点。

存储库网址为https://github.com/ccnet/CruiseControl.NET

我刚刚更新了我的本地副本并且通过了CruiseServerHttpClient项目中的Remote类可能的候选人。

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

  • 从git
  • 编译源代码
  • 创建新的控制台应用程序
  • 添加对Thoughtworks.CruiseControl.RemoteNetReflector的引用(两者都位于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);
            }
        }
    }
}

对于每个项目,您将获得类似于以下内容的输出:

  

ProjectName - 成功

要强制构建,您可以进行以下调用:

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
  内容类型:application / x-www-form-urlencoded
  主持人:192.168.100.180
  内容长度:64
  期待:100-continue

     

ForceBuild =真安培; PROJECTNAME = PROJECT_NAME&安培; SERVERNAME =本地

答案 1 :(得分:10)

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

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

答案 2 :(得分:7)

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

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