2010-08-12 8 views
27

Czy istnieje interfejs API, którego mogę używać z tempomatem .NET (ccnet) do wysyłania zapytań do serwera, na przykład w celu uzyskania statusu różnych kompilacji?Czy istnieje interfejs API do kontroli prędkości .NET?

Zauważyłem, że istnieje kilka opcji w aplikacji ccnet taca do łączenia, ale nie mogę znaleźć dokumentacji API usługi lub przykłady, jak go używać.

Odpowiedz

33

Z pewnością istnieje interfejs API, ponieważ używa go aplikacja Taca. Wcześniej pobrałem kod z jego repozytorium SVN (UWAGA: zgodnie z poniższym adresem URL jest on teraz hostowany pod numerem github.com) w celu naprawienia błędu (sposób działania kolumny "Ostatnia budowa"), który został naprawiony, ale został cofnięty w wersji 1.5), a to prawdopodobnie byłby dobry początek.

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

Właśnie zaktualizowałem swoją lokalną kopię i przeszedłem przez nią, a potencjalnym kandydatem do tego, co chcesz, jest klasa CruiseServerHttpClient w projekcie .

Korzystanie zespół Remote aby uzyskać status każdego projektu/wymusić build

  • Kompilacja źródło z git
  • Utwórz nową aplikację konsoli
  • Dodaj odwołanie do Thoughtworks.CruiseControl.Remote i NetReflector (obie będą w katalogu \ bin dla projektu Remote)
  • Dodaj następujący kod do aplikacji konsoli

konsoli kod aplikacji:

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 dostaniesz wynik podobny do:

NazwaProjektu - Sukces

Aby wymusić build, ty” d wykonaj następujące połączenie:

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

Pod maską skutkuje to żądania HTTP są wykonane, że 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
Expect: 100 kontynuować

ForceBuild = true & Nazwa_projektu = PROJECT_NAME & serverName = local

+0

Spot na odpowiedź, że cheeers !! :-) –

+0

Zespoły Thoughtworks.CruiseControl.Remote.dll i NetReflector.dll znajdują się również w katalogu plików programu cctray. – John

+0

W twoim przykładzie Wymuszenie kompilacji wymaga nazwy komputera i użytkownika. Czy jest to tylko do logowania, ponieważ nie jest wysyłane w poście? –

7

Można też zapytać bezpośrednio przez HTTP, przez ładowanie strony http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx.Spowoduje to zwrócenie dokumentu XML podającego statusy wszystkich twoich projektów kompilacji, co jest renderowane na stronie http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx.

Byłoby miło, gdybyś mógł przejść do tego tematu, aby zdobyć historię projektu budowlanego - może możesz, nie próbowałem!