2011-07-01 9 views

Respuesta

4

acabo de enterar que su posible a través de la REST API puedo f.ex enviar un comando PUT como esto http://teamcityserver:81/httpAuth/app/rest/builds/id:688/pin/ y luego la acumulación con id 688 (teamcity.build.id) será fijado.

+1

¿Cómo se contrae alrededor de autenticación? La API REST está protegida por usuario/contraseña ... – RickardN

+0

@RickardN: Puede usar guestAuth: 'http: // YourServer: Port/guestAuth/app/rest/builds/id: 688/pin /'. Sin embargo, sería muy cauteloso con los permisos que permite bajo autenticación de invitado. –

4

Me gustaría desafiar la respuesta aceptada con una respuesta actualizada, que se probó con TeamCity 9 EAP 4 (compilación 31717) y 8.1.x.

etiquetado y la fijación podrían implementarse a través de un plugin simple que contiene sólo un adaptador de eventos tales como los siguientes:

package com.foo; 

import com.intellij.openapi.diagnostic.Logger; 
import jetbrains.buildServer.messages.Status; 
import jetbrains.buildServer.serverSide.BuildServerAdapter; 
import jetbrains.buildServer.serverSide.BuildServerListener; 
import jetbrains.buildServer.serverSide.SRunningBuild; 
import jetbrains.buildServer.util.EventDispatcher; 
import org.jetbrains.annotations.NotNull; 

import java.util.Arrays; 
import java.util.Map; 

public class MyEventAdapter extends BuildServerAdapter 
{ 

    private final static Logger logger = Logger.getInstance(MyEventAdapter.class.getName()); 


    public MyEventAdapter(@NotNull EventDispatcher<BuildServerListener> serverDispatcher) 
    { 
     serverDispatcher.addListener(this); 
    } 

    @Override 
    public void buildFinished(@NotNull SRunningBuild build) 
    { 
     logger.debug("#"); 
     logger.debug("# Build finished: "); 
     logger.debug("# name: " + build.getBuildTypeName() + ";" + 
        " id: " + build.getBuildId() + ";" + 
        " build number: " + build.getBuildNumber() + "; " + 
        " owner: " + build.getTriggeredBy().getUser().getName()); 
     logger.debug("# status: " + build.getBuildStatus()); 
     logger.debug("# ---------------------------------------------------"); 

     super.buildFinished(build); 

     if (build.getBuildStatus().equals(Status.NORMAL)) 
     { 
      if (someConditionCheckWhetherToTagAndPinGoesHere()) 
      { 
       final String tag = "dev"; 

       // Pin the build: 
       if (build.getBuildType() != null && build.getBuildType().getLastChangesSuccessfullyFinished() != null) 
       { 
        build.getBuildType().getLastChangesSuccessfullyFinished().setPinned(true, build.getOwner(), "This is a " + tag + " build."); 
       } 

       // Tag the build: 
       build.setTags(build.getOwner(), Arrays.asList(tag)); 
      } 
     } 
    } 

} 

También debes tener un contexto primavera bajo src/main/resources/META-INF/my-plugin.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans default-autowire="constructor"> 

    <bean class="com.foo.MyEventAdapter"/> 

</beans> 
3

Inspirado por la respuesta de carlspring, escribí un pequeño plugin teamcity que agrega etiquetas programáticamente a tu compilación:

https://github.com/echocat/teamcity-buildTagsViaBuildLog-plugin

Puede modificarlo fácilmente para fijar también su construcción. Además, puede ser útil etiquetar las construcciones exitosas en lugar de fijarlas y usar la etiqueta como filtro.

+0

El complemento requiere que coloque algo en su registro de compilación para que funcione, esto podría haberse hecho simplemente con una llamada rizada desde un paso de compilación. 'curl --user $ {username}: $ {password} -X POST --data" $ {tags} "% teamcity.serverUrl%/httpAuth/app/rest/8.0/builds/id:% teamcity.build .id%/tags --header "Content-Type: text/plain" ' De hecho, se puede hacer un metarunner a partir de la llamada curl anterior y etiquetar ejecutando compilaciones desde un paso de compilación. Jetbrains incluso tiene un paquete de energía metarunner que tiene un metarunner similar que usa hormiga. – Amit

Cuestiones relacionadas