Есть ли API для круиз-контроля .NET? [закрыто]

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

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

29
задан John 5 April 2011 в 08:40
поделиться

1 ответ

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

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

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

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

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

ForceBuild = true & projectName = PROJECT_NAME & serverName = local

34
ответ дан 28 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: