Ciertamente hay una API, ya que la aplicación Tray lo usa. He descargado el código de su repositorio SVN anteriormente (NOTA: según la siguiente URL, ahora está alojado en github.com
) para corregir un error (la forma en que funciona la columna "Última compilación", que se corrigió, pero retrocedió) en la versión 1.5), y ese probablemente sea un buen lugar para comenzar.
La URL del repositorio es https://github.com/ccnet/CruiseControl.NET
.
Acabo de actualizar mi copia local y tuve un avance y un posible candidato para lo que quiere es la clase CruiseServerHttpClient
en el proyecto Remote
.
Usando los conjuntos de Remote
para obtener el estado de cada proyecto/forzar una acumulación
- compilar el código fuente de Git
- Crear una nueva aplicación de consola
- Añadir una referencia a
Thoughtworks.CruiseControl.Remote
y NetReflector
(ambos estarán en el directorio \ bin para el proyecto Remote
)
- Agregue el siguiente código a su aplicación de consola
consola de código de aplicación:
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);
}
}
}
}
Para cada proyecto se obtendrá una salida similar a:
Nombre del Proyecto - Éxito
para forzar una compilación,' Haga la siguiente llamada:
client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));
Bajo el capó esto se traduce en una petición HTTP que se hicieron que consiste en:
POSTAL http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Anfitrión: 192.168 .100.180
Content-Length: 64
espera: 100-CONTINUACIÓN
ForceBuild = true & projectName = PROJECT_NAME & serverName = local
Spot on answer that cheeers !! :-) –
Los ensamblados Thoughtworks.CruiseControl.Remote.dll y NetReflector.dll también se encuentran en el directorio de archivos de programa cctray. – John
En su ejemplo Forzar una construcción requiere el nombre y el usuario de la máquina. ¿Es solo para iniciar sesión ya que no se envía en la publicación? –