TeamCity: en el empuje de construcción exitosa para Git Repo

¿TeamCity puede enviar comstackciones exitosas a un repository de git?

No puedo ver un paso de compilation específico en TeamCity para hacer esto.
Uso la versión 7.1.1 de TeamCity

Gracias, Henrik

ACTUALIZAR:

Ok gracias por tu respuesta, me parece un poco complicado. Descubrí que simplemente puedo retrotraer las tags en comstackciones exitosas a mi repository global, del cual TeamCity obtiene datos para la compilation. Puedo sacar cambios de él y ver si los últimos commits tuvieron éxito.

¡Me encantaría que TeamCity proporcionara una opción simple para este tipo de flujo de trabajo!

Sería increíble si cada desarrollador pudiera sacar de un repository que solo se actualiza cuando la construcción es exitosa, ¿o estoy equivocado aquí?

Puede hacer que TeamCity ejecute un script de shell que posteriormente invoque git push (con los arguments apropiados, por ejemplo, git push <repository> para enviarlo a otro repository). Asegúrese de que git no necesita authentication interactiva para la operación de inserción.

Un ejemplo relacionado (implementar a Heroku usando un git push ) se puede encontrar aquí: http://blog.carbonfive.com/2010/08/06/deploying-to-heroku-from-teamcity/ .

Si actualiza a 8 o más reciente, puede hacer una o más funciones de compilation "Combinación automática". Esto empujará al repository remoto. Tampoco lo encontré al principio debido a los nombres confusos, pero tiene sentido que tengan que admitir muchos VCS diferentes con nombres diferentes.

¡Finalmente lo logré!

Debes agregar un parámetro de compilation en tu proyecto teamcity:

 name= env.PATH value= C:\Program Files (x86)\Git\cmd 

y luego agrega un nuevo paso de compilation de command-line con un script personalizado:

 call git push "C:\Gruene Git Repos\TeamCityApp" master 

la palabra "llamar" es importante!

¡Gracias por la ayuda! henrik

Respuesta fácil

Durante un time TeamCity ha admitido el labeldo de VCS, esto permite a su usuario raíz de VCS (si tiene permissions de escritura) labelr el hash de confirmación recién creado con la versión o cualquier otra cosa que TeamCity conozca (consulte la list completa de references de parameters en TeamCity wiki).

Un lado

Como se indica en otra respuesta, la funcionalidad de combinación automática disponible en TeamCity realizará automáticamente una fusión en una twig solicitada de la list de twigs especificada (comodín habilitado) y supervisará y comstackrá, y solo fusionará si tiene éxito.

La funcionalidad de fusión automática puede ser buena, pero si no tienes una buena cobertura de testing, también puede ser peligroso ya que un desarrollador podría romper algo que no tiene una testing y que causará problemas en tu código mucho más adelante. Una forma de prevenir esto es exigir que se creen / ejecuten +2 testings cada vez que se construya el proyecto (configurable en TeamCity). Estas advertencias se mencionan en el artículo previamente vinculado que anuncia la function de fusión automática.

Resolución relacionada

Nos encontramos con un problema similar no relacionado directamente con la fusión, pero con el requisito de realizar algunos cambios desde el trabajo más allá de las "tags ligeras" (al less para Git) que agrega TeamCity si usa el labeldo VCS (terrible nombre).

Lo que terminamos haciendo fue:

  1. Usando un parámetro del tipo "Variable de entorno" (visible para el agente de compilation, los otros types no) y configurando el "Spec" para hacer que el campo de tipo "Contraseña" impida que el text ingresado se muestre en la configuration UI o el resultado del logging de trabajo.
  2. Introdujo el nombre de usuario y la contraseña como parameters en la configuration del trabajo
  3. Creé un script que miraba la URL remota de git del repository "lado del agente" y añadí un nuevo control remoto con el nombre de usuario y la contraseña en línea en la url ( http: // gituser: gitpassword@githost.com/path/to/repo. git ) para impulsar los cambios en una nueva twig.
    • Luego, eliminamos el control remoto al final del script para que cualquier persona que acceda al sistema no pueda extraer la cnetworkingencial. Por supuesto, la cnetworkingencial también tiene un scope bastante limitado para acceder solo a ciertos repositorys, pero la regla de privilegios mínimos siempre es buena.

Mi solución quizás sea estúpida, pero simple. Los pasos son los siguientes:

  1. Clonando su heroku desde el repository heroku git creará su carpeta de aplicaciones heroku.

    heroku git:clone -a {app-name}

  2. Copie los files que necesita para actualizar a heroku

    xcopy client "{app-name}/client" /e/i/h/y

    xcopy server "{app-name}/server" /e/i/h/y

    xcopy imports "{app-name}/imports" /e/i/h/y

  3. git add.

    cd {app-name} && git add .

  4. git commit

    cd {app-name} && git commit --message 'ok'

  5. empujar a heroku

    cd {app-name} && git push heroku master