tutorial tortoise tag subversion crear svn build-process build-automation build-management

svn - tortoise - Automatización de construcciones a partir de etiquetas de subversión



svn vs git (8)

¡Un producto comercial ha sido anunciado en este sitio para exactamente este propósito!

http://www.finalbuilder.com/Default.aspx?tabid=314

Es posible que deba agregar un anzuelo a SVN para activar el inicio de compilación a menos que desee que se ejecute un cronograma.

Estoy tratando de automatizar el proceso de compilación para el grupo de ingeniería. Como parte de esa automatización, estoy tratando de llegar al punto en que el acto de aplicar una etiqueta específica que se adhiera a un patrón dará inicio a un proceso automatizado que hará lo siguiente:

  • Verifica el código fuente
  • Crear un script de construcción a partir de una plantilla
  • Construye el proyecto

Estoy bastante seguro de que podría hacer esto con un anzuelo en subversión, pero estoy tratando de encontrar una manera de hacer esto con algo más que un gancho de subversión.

  • ¿Tendría sentido monitorear el directorio de etiquetas en el repositorio de subversión para iniciar mi flujo de trabajo?
  • ¿Hay alguna herramienta decente que ayude con esto (.NET sería genial si es posible).
  • ¿Será mejor que solo escriba un motor para hacer esto?

Mis preferencias:

  • Producto existente que hace todo o parte de esto
  • Si es necesario realizar un trabajo de desarrollo, es preferible .NET
  • Funciona con Windows (tenemos un repositorio basado en Linux, pero todas las construcciones se producen en Windows)

Estoy usando NAnt (y NAntContrib ) para compilaciones automatizadas. Comprueba automáticamente los repositorios de subversión para ver si hay cambios y (si hay alguno) obtiene la última versión del código fuente e inicia la compilación.

No estoy seguro de si las tareas existentes le permiten hacer exactamente lo que desea, pero tal vez podría usarlo como inicio y, si es necesario, extenderlo con tareas para sus necesidades especiales (está desarrollado con .NET).


Parece que buscas un motor de compilación de integración continua, algo así como CruiseControl o Hudson (hudson está escrito en Java pero es MUY fácil de usar en Windows).

Ahora podría manipular sus scripts de compilación para estas herramientas para ver el directorio de etiquetas, pero eso sería un poco contraproducente ya que están destinadas a ver una ubicación específica y construir el proyecto en esa ubicación. Si mira todo el directorio de etiquetas, podría terminar fácilmente con todas las etiquetas que se verían en la máquina de compilación y necesitaría un script de nivel superior para decidir qué etiqueta construir.

Para lo que quiere, un motor de compilación puede ver una ubicación específica (digamos ''/ branches / release''). Si luego se fusiona con esa sucursal, Hudson construirá automáticamente el proyecto, archivará los artefactos y creará una etiqueta para usted si todo fue exitoso (consulte el Complemento de etiquetado de Subversion).

No me gusta hacer este tipo de cosas desde un enganche post-commit porque hace que la fase de commit tome demasiado tiempo. Sin embargo, TeamCity es un sistema de control de fuente que tiene una función que hace exactamente eso sin retenerte mientras se compromete.

Recomiendo a Hudson por esto.


CruiseControl.Net puede automatizar fácilmente compilaciones automáticas de depósitos de subversión.

Puede monitorear el repositorio (Svn y varios otros tipos) e iniciar compilaciones automáticas usando una variedad de herramientas. (NAnt, MSBuild, etc.)


Al igual que los otros chicos, dijo, quiere un servidor de integración continua (CruiseControl, CruiseControl.Net, Hudson, etc.). Si bien podría trabajar en su script de compilación y enganchar los enganches para hacer la funcionalidad que describió, al final encontrará que reinventó el volante (Continuous Integration Server). No es necesario, hay soluciones disponibles gratuitamente solo para este propósito.

El proceso funcionará un poco diferente de lo que describió anteriormente. El servidor de compilación:

  1. Detectar un nuevo compromiso
  2. Verifica tu código fuente
  3. Ejecute su script de compilación
  4. Etiqueta en la construcción exitosa

El compromiso desencadena el proceso y crea la etiqueta en lugar de la etiqueta que activa el proceso. El servidor hace esto supervisando el repositorio svn en lugar de un enlace de confirmación.

Consulte la documentación de CruiseControl.Net sobre este tema, específicamente las opciones tagOnSuccess y tagBaseUrl. Hudson y CruiseControl deberían tener opciones similares.

http://confluence.public.thoughtworks.org/display/CCNET/Subversion+Source+Control+Block


Lo hice usando Hudson. En la ranura de pago de subversión regular, tengo una caja para el maletero:

http://dryad.googlecode.com/svn/trunk/dryad

Luego, como la primera acción de compilación, tengo un "shell de ejecución" y en ese shell uso un modificador svn para cambiar a la última etiqueta en el repositorio:

svn cambiar http://dryad.googlecode.com/svn/tags/ ''svn ls http://dryad.googlecode.com/svn/tags | cola -n 1 ''dríada

El siguiente paso de compilación es un comando maven ''clean install'' que inicia la compilación utilizando el código de la versión etiquetada.

Aún no me he dado cuenta cómo hacer que Hudson comience con una versión etiquetada más reciente en lugar de tener que hacer el cambio, pero el interruptor funciona. Luego puede tener el activador cuando se actualiza el directorio de etiquetas.

Es automatizado ... un poco complicado, pero funciona ...

el interruptor debe incluir un backtick para el segundo comando svn, pero tuvo que usar ''porque el backtick no apareció aquí.


También recomendaría Hudson para esto. Estaba buscando hacer algo similar, crear una etiqueta y tener un inicio de compilación. En cambio, opté por usar este complemento para Hudson:

http://wiki.hudson-ci.org/display/HUDSON/Release+Plugin

Y utilícelo para impulsar la creación de la etiqueta y una versión de lanzamiento explícita.


Me gusta Hudson : FÁCIL de instalar y funciona con SVN.

Puedes configurarlo para construir en cada commit.

Lo descargué y comencé a construirlo dentro de un día. Ha pasado por muchos ajustes, pero se lo recomendaría a cualquiera.

También he usado el control de crucero pero no estoy tan feliz con eso. No tengo ningún motivo específico aparte del problema multiplataforma.

EDITAR

Recientemente agregué un trabajo en mi servidor de compilación hudson que escucha un chat jabber de google / gmail. Puedo "promover" una compilación "regular" a una compilación de lanzamiento con este mecanismo. Acabo de configurar un nuevo trabajo que hace los pasos necesarios para promover / publicar una compilación privada en un candidato de lanzamiento.