Il existe certainement une API car l'application Tray l'utilise. J'ai téléchargé le code de leur dépôt SVN précédemment (NOTE: selon l'URL ci-dessous, il est maintenant hébergé sur github.com
) pour corriger un bug (la façon dont la colonne "Last Build Time" fonctionne - qui a été corrigée, mais a régressé dans la version 1.5), et ce serait probablement un bon point de départ. L'URL du référentiel est https://github.com/ccnet/CruiseControl.NET
.
Je viens de mettre à jour ma copie locale et j'ai eu un peu de chemin à travers et un candidat probable pour ce que vous voulez est la classe CruiseServerHttpClient
dans le projet Remote
.
En utilisant l'ensemble Remote
pour obtenir le statut de chaque projet/forcer une construction
- compiler la source de git
- Créer une nouvelle application console
- Ajouter une référence à
Thoughtworks.CruiseControl.Remote
et NetReflector
(les deux seront dans le répertoire \ bin pour le projet Remote
)
- Ajoutez le code suivant à votre application de console
code d'application Console:
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);
}
}
}
}
Pour chaque projet, vous obtiendrez une sortie similaire à:
ProjectName - Succès
Pour forcer une construction, vous d appelez:
client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));
Sous le capot il en résulte une requête HTTP étant fait qui se compose de:
POST http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Hôte: 192.168 .100.180
Content-Length: 64
Expect: 100-continue
ForceBuild = true & projectName = PROJECT_NAME & serverName = local
Spot sur la réponse qui chérit !! :-) –
Les assemblées Thoughtworks.CruiseControl.Remote.dll et NetReflector.dll se trouvent également dans le répertoire des fichiers du programme cctray. – John
Dans votre exemple Forcer une construction nécessite le nom et l'utilisateur de la machine. Est-ce juste pour la journalisation, car il n'est pas envoyé par la poste? –