Esiste certamente un'API come l'applicazione Tray utilizza. Ho scaricato il codice dal suo repository SVN in precedenza (NOTA: come per l'URL qui sotto, ora è ospitato su github.com
) per correggere un bug (il modo in cui funziona la colonna "Last Build Time" - che è stata riparata, ma regredita nella versione 1.5), e probabilmente sarebbe un buon punto di partenza.
L'URL del repository è https://github.com/ccnet/CruiseControl.NET
.
Ho appena aggiornato la mia copia locale e ho avuto un passaggio e un probabile candidato per quello che desideri è la classe CruiseServerHttpClient
nel progetto Remote
.
Utilizzando l'assemblea Remote
per ottenere lo stato di ogni progetto/forzare un accumulo
- Compilare il sorgente da Git
- Creare una nuova applicazione console
- Aggiungere un riferimento alla
Thoughtworks.CruiseControl.Remote
e NetReflector
(entrambi saranno nella directory \ bin per il progetto Remote
)
- Aggiungere il seguente codice all'applicazione console
Console codice dell'applicazione:
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);
}
}
}
}
Per ogni progetto si otterrà un output simile a:
ProjectName - Successo
per forzare un accumulo, è' d effettuare la seguente chiamata:
client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));
Sotto il cofano questo si traduce in una richiesta HTTP stato fatto che consiste di:
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-continuano
ForceBuild = true & projectName = PROJECT_NAME & serverName = locale
Spot on answer that cheeers !! :-) –
Gli assembly Thoughtworks.CruiseControl.Remote.dll e NetReflector.dll si trovano anche nella directory dei file del programma cctray. – John
Nel tuo esempio Forzare una build richiede il nome e l'utente del computer. È solo per la registrazione poiché non viene inviato nel post? –