Есть ли API, который я могу использовать с Cruise Control .NET (ccnet) для запроса сервера, например, для получения статуса различных сборок?
Я заметил, что в приложении ccnet tray есть несколько вариантов для подключения, но я не могу найти никакой документации по сервисному API или примеров того, как его использовать.
Конечно, есть API, поскольку приложение Tray использует его. Я загружал код из их репозитория SVN ранее ( ПРИМЕЧАНИЕ: согласно приведенному ниже URL-адресу он теперь размещен на github.com
), чтобы исправить ошибку (как "Время последней сборки" column работает - что было исправлено, но регрессировало в версии 1.5), и это, вероятно, было бы хорошим местом для начала.
URL-адрес репозитория https://github.com/ccnet/CruiseControl.NET
.
Я только что обновил свою локальную копию, и вероятный кандидат на то, что вы хотите, - это класс CruiseServerHttpClient
в проекте Remote
.
Использование сборки Remote
для получения статуса каждого проекта / принудительной сборки
Мыслительные работы.Remote
и 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);
}
}
}
}
Для каждого проекта вы получите следующий результат:
ProjectName - Success
Чтобы принудительно выполнить сборку, вы должны сделать следующий вызов:
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
Content-Type: application / x-www-form-urlencoded
Хост: 192.168.100.180
Content-Length: 64
Ожидайте: 100-continueForceBuild = true & projectName = PROJECT_NAME & serverName = local