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ć.
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
iNetReflector
(oba będą w katalogu \bin dla projektuRemote
) - 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-KontynuujForceBuild = true&projectName=PROJECT_NAME&serverName=local
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.
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!
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