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
Spot na odpowiedź, że cheeers !! :-) –
Zespoły Thoughtworks.CruiseControl.Remote.dll i NetReflector.dll znajdują się również w katalogu plików programu cctray. – John
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? –