Подтвердить что ты не робот

Есть ли API для Cruise Control.NET?

Есть ли API, который я могу использовать с Cruise Control.NET(ccnet) для запроса сервера, например, для получения статуса различных сборок?

Я заметил, что есть несколько опций в приложении ccnet tray для подключения, но я не могу найти никакой документации API-интерфейса или примеров того, как его использовать.

4b9b3361

Ответ 1

Конечно, API использует приложение Tray. Я ранее загружал код из своего SVN-репозитория (ПРИМЕЧАНИЕ: в соответствии с приведенным ниже URL-адресом, теперь он размещен на github.com), чтобы исправить ошибку (как работает столбец "Last Build Time" - исправлен, но регрессирован в версии 1.5), и это, вероятно, будет хорошим местом для начала.

URL-адрес репозитория https://github.com/ccnet/CruiseControl.NET.

Я только что обновил свою локальную копию и прошел пробный путь, и вероятным кандидатом на то, что вы хотите, является класс CruiseServerHttpClient в проекте Remote.

Использование сборки Remote для получения статуса каждого проекта/принудительного создания

  • Скомпилируйте источник из git
  • Создание нового консольного приложения
  • Добавьте ссылку на Thoughtworks.CruiseControl.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 - Успех

Чтобы принудительно создать сборку, вы должны сделать следующий вызов:

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-продолжить -

ForceBuild = истина &ampы; Projectname = ИМЯ_ПРОЕКТ &ampы; имя_сервер = локальная

Ответ 2

Добавьте к вашему проекту пакет Nuget CruiseControl.Net. http://www.nuget.org/packages/CruiseControl.Net/

Это добавит ссылки на ThoughtWorks.CruiseControl.Core, ThoughtWorks.CruiseControl.Remote и NetReflector на ваш проект и даст вам простой способ сохранить его в актуальном состоянии.

Ответ 3

Вы также можете запросить напрямую через HTTP, загрузив страницу http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx. Это вернет XML-документ, дающий статусы всех ваших проектов сборки, как показано на странице http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx.

Было бы неплохо, если бы вы смогли разобраться в этом, чтобы получить историю проекта сборки - возможно, вы можете, я не пробовал!