run net deploy asp application c# .net api continuous-integration cruisecontrol.net

c# - deploy - publish asp net core web api to iis



¿Hay una API para Cruise Control.NET? (3)

¿Existe una API que pueda usar con Cruise Control .NET (ccnet) para consultar el servidor, por ejemplo, para obtener el estado de varias compilaciones?

Me he dado cuenta de que hay algunas opciones en la aplicación de bandeja de ccnet para la conexión, pero no puedo encontrar ninguna documentación de la API de servicio o ejemplos de cómo consumirla.


Agregue el paquete Nuget CruiseControl.Net a su proyecto. http://www.nuget.org/packages/CruiseControl.Net/

Esto agregará las referencias a ThoughtWorks.CruiseControl.Core, ThoughtWorks.CruiseControl.Remote y NetReflector a su (s) proyecto (s) y le brindará una manera fácil de mantenerlo actualizado.


También puede realizar consultas directamente a través de HTTP cargando la página http://CC_SERVER_NAME/ccnet/XmlStatusReport.aspx . Esto devolverá un documento XML que proporciona los estados de todos sus proyectos de compilación, tal como se representa en la página http://CC_SERVER_NAME/ccnet/ViewFarmReport.aspx .

Sería bueno si pudieras profundizar en eso para obtener la historia de un proyecto de construcción, ¡tal vez puedas, no lo he intentado!


Ciertamente hay una API, ya que la aplicación Tray lo usa. He descargado el código de su repositorio SVN previamente ( NOTA: según la URL a continuación, ahora está alojado en github.com ) para corregir un error (la forma en que funciona la columna "Última compilación", que fue corregida, pero regresó 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 gran avance y un posible candidato para lo que desea es la clase CruiseServerHttpClient en el proyecto Remote .

Usar el ensamblaje Remote para obtener el estado de cada proyecto / forzar una compilación

  • Compila la fuente de git
  • Crea una nueva aplicación de consola
  • Agregue 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

Código de aplicación de consola:

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 obtendrás resultados similares a los siguientes:

ProjectName - Éxito

Para forzar una construcción, harías la siguiente llamada:

client.Request("PROJECT_NAME", new IntegrationRequest(BuildCondition.ForceBuild, "YOUR_MACHINE_NAME", "YOUR_USER_NAME"));

Debajo del capó esto da como resultado una solicitud HTTP que está compuesta por:

POST http: //CC_SERVER_NAME/ccnet/ViewFarmReport.aspx HTTP / 1.1
Tipo de contenido: application / x-www-form-urlencoded
Anfitrión: 192.168.100.180
Longitud del contenido: 64
Esperar: 100-continuar

ForceBuild = true y projectName = PROJECT_NAME & serverName = local