2010-11-08 10 views
9

TeamCity me permite informar desde mi secuencia de comandos MsBuild utilizando la interacción ## teamcity. Puedo usar esto para decirle a TeamCity que la compilación ha fallado, o de hecho ha tenido éxito, sin embargo, me gustaría decirle que CANCELAR la compilación en su lugar. ¿Alguien sabe de una manera de hacer esto?¿Puedo cancelar una compilación de TeamCity desde mi script msbuild?

puedo usar esto para informar TeamCity de fracaso ...

<Message Text="##teamcity[buildStatus status='FAILURE']" Condition="Something==SomeCondition" /> 

Me encantaría hacer esto ...

<Message Text="##teamcity[buildStatus status='CANCEL']" Condition="Something==SomeCondition" /> 

he probado el TeamCity Service Tasks pero nada hasta ahora .

EDIT:

por lo que parece que esta característica no está disponible, aunque un workaround http request se puede utilizar para cancelar una generación. También hay un feature request para cancelar una compilación del sitio web de TC. Si es algo que te apetece (¿o quieres ayudarme?) ¡Vota por él!

Saludos

Respuesta

1

es posible que no sólo tiene que utilizar el Error task, esto debería hacer que la ejecución de la construcción se detenga.

+3

Sí, actualmente usar esto para detener la acumulación, pero queremos que el comportamiento dentro de TC a ser el mismo que golpear el botón Cancelar. –

2

Puede usar la solicitud http no documentada que ha cambiado desde it was originally posted. Ahora necesita "operationKind = 1". He utilizado un corredor PowerShell, así:

$buildId = %teamcity.build.id% 
$uri = "http://teamcity/ajax.html?guest=1&comment=Cancelling+build+for+some+reason&submit=Stop&buildId=$buildId&kill&operationKind=1" 
$response = Invoke-WebRequest -UseBasicParsing -Uri $uri 

Otro SO posterior puede decirle cómo make an http request from MSBuild

El "invitado = 1" significa que estoy usando la cuenta de invitado, que como mínimo necesita el "Stop construir/eliminar de la cola "para el proyecto que vas a cancelar.

2

Desde Teamcity 8.1 (Source) es posible cancelar la compilación mediante API REST.

tomada de la 9.x Documentation, cancelar una actualmente en ejecución construir

curl -v -u user:password --request POST "http://teamcity:8111/app/rest/builds/<buildLocator>" --data "<buildCancelRequest comment='' readdIntoQueue='false' />" --header "Content-Type: application/xml" 
Cuestiones relacionadas