Czy jest API do rejsu Control.NET? [zamknięte]

Czy istnieje API, którego mogę używać z Cruise Control. Net (ccnet) do odpytywania serwera, na przykład w celu uzyskania statusu różnych kompilacji?

Zauważyłem, że jest kilka opcji w aplikacji ccnet tray do łączenia, ale nie mogę znaleźć żadnej dokumentacji API usługi ani przykładów, jak go używać.

Author: John, 2010-08-12

3 answers

Z pewnością istnieje API, ponieważ używa go aplikacja Tray. Pobrałem kod z ich repozytorium SVN wcześniej (Uwaga: zgodnie z poniższym adresem URL, jest teraz hostowany na github.com) aby naprawić błąd (sposób, w jaki działa kolumna "Last Build Time" - która została naprawiona, ale regresowana w wydaniu 1.5), i to prawdopodobnie byłoby dobre miejsce, aby zacząć.

Adres URL repozytorium to https://github.com/ccnet/CruiseControl.NET.

Właśnie zaktualizowałem moją lokalną kopię i miałem mooch przez i prawdopodobnego kandydata na to, co Ty want to klasa CruiseServerHttpClient w projekcie Remote.

Użycie zestawu Remote do uzyskania statusu każdego projektu / Wymuś budowę

  • Skompiluj źródło z git
  • Utwórz nową aplikację konsolową
  • Dodaj odniesienie do Thoughtworks.CruiseControl.Remote i NetReflector (oba będą w katalogu \bin dla projektu Remote)
  • Dodaj następujący kod do aplikacji konsolowej

Kod aplikacji konsolowej:

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);
            }
        }
    }
}

Dla każdego projektu otrzymasz wynik podobny do:

ProjectName-Sukces

Aby wymusić kompilację, wykonasz następujące wywołanie:

client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));

Pod maską powoduje to wysłanie żądania HTTP, które składa się z:

POST http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx HTTP / 1.1
Content-Type: application / x-www-form-urlencoded
Host: 192.168.100.180
Content-Length: 64
Oczekiwanie: 100-Kontynuuj

ForceBuild = true&projectName=PROJECT_NAME&serverName=local

 34
Author: Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-23 12:51:05

Dodaj pakiet Nuget CruiseControl.Net do twojego projektu. http://www.nuget.org/packages/CruiseControl.Net/

To spowoduje dodanie odniesień do ThoughtWorks.CruiseControl.Core, ThoughtWorks.CruiseControl.Zdalne i NetReflector do twojego projektu(ów) i daje łatwy sposób, aby utrzymać go na bieżąco.

 10
Author: TwistedStem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-06 13:19:12

Możesz również odpytywać bezpośrednio przez HTTP, ładując stronę http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx. Zwróci to dokument XML zawierający statusy wszystkich twoich projektów budowania, które są renderowane na stronie http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx.

Byłoby miło, gdybyś mógł zagłębić się w to, aby dostać się do historii projektu budowlanego-może możesz, nie próbowałem!

 7
Author: David Keaveny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-16 00:23:55