Pregunta

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

  • código fuente Salida
  • Crear un script de construcción de una plantilla
  • Construir el proyecto

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

  • ¿Tendría sentido para controlar el directorio de etiquetas en el depósito de la subversión para dar comienzo a mi flujo de trabajo?
  • ¿Existe alguna herramienta decente que ayudan con esto (.NET sería grande si es posible).
  • ¿Soy mejor simplemente escribiendo un motor para hacer esto?

Mis preferencias:

  • Producto existente que hace todo o parte de este
  • Si el trabajo de desarrollo tiene que ocurrir, .NET es preferible
  • Funciona con Windows (tenemos un acuerdo de recompra basado en Linux, pero construye todo se produce en Windows)
¿Fue útil?

Solución

Hudson - fácil de configurar y funciona fuera de la caja con SVN.

Se puede configurar para construir en cada cometió.

Lo descargué y empecé construir con ella en un día. Ha pasado por un montón de ajustes, pero se lo recomendaría a cualquiera.

También he utilizado el control de crucero, pero no soy tan feliz con eso. No tengo ninguna razón concreta que no sean tema de plataforma cruzada.

editar

He añadido recientemente un trabajo en mi servidor de compilación Hudson en espera de una / chat de Gmail Jabber Google. Puedo "promover" un "regular" a construir una versión de lanzamiento con este mecanismo. Acabo de crear un nuevo trabajo que realiza los pasos necesarios para promover / publicar una construcción privada en una versión candidata.

Otros consejos

He hecho esto usando Hudson. En la ranura de la subversión de pago regulares Tengo un pago y envío para el tronco:

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

A continuación, como la primera acción de construcción, tengo una "ejecutar el entorno", y en esa cáscara utilizar un interruptor de SVN para cambiar a la última etiqueta en el repositorio:

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

El siguiente paso de generación es un experto en 'instalación limpia' comando que inicia la acumulación utilizando el código de la versión etiquetada.

Yo no he descubierto aún cómo conseguir Hudson comenzar con una versión más reciente etiquetado en lugar de tener que hacer el cambio, pero el interruptor funciona. A continuación, puede tener el gatillo sea cuando se actualiza el directorio de la etiqueta.

Se automatizado ... un poco de una chapuza, pero funciona ...

, el interruptor debe incluir un acento grave para el segundo comando svn, pero tuvo que utilizar 'porque el acento grave no se presentó aquí.

Parece que usted está después de un motor de generación de integración continua CruiseControl o algo así como Hudson (Hudson escrito en Java, pero es muy fácil de usar en las ventanas).

Ahora usted podría Fudge sus guiones de construcción de estas herramientas para ver el directorio de etiquetas, pero eso sería un poco contra la corriente ya que están destinados a ver una ubicación específica y construir el proyecto en ese lugar. Si usted mira todo el directorio de etiquetas, que fácilmente podría terminar con todas las etiquetas serían controladas a cabo en la máquina de construcción y que había necesidad de una secuencia de comandos de alto nivel para decidir qué etiqueta para construir.

Para obtener lo que quiere, un motor de generación puede ver una ubicación específica (por ejemplo '/ ramas / release'). Si a continuación se funden en esa rama, Hudson construirá automáticamente el proyecto, archivar los artefactos y crear una etiqueta para usted si todo fue un éxito (véase el La subversión de etiquetado Plugin).

No me gusta hacer este tipo de cosas desde un gancho post-commit, ya que hace el commit fase de toma demasiado tiempo. Sin embargo, TeamCity es un sistema de control de origen que tiene una característica que hace exactamente eso sin tener que arriba mientras que confirma.

Me gustaría recomendar Hudson para esto.

CruiseControl.Net puede automatizar fácilmente automática construye desde los repositorios de subversión.

Se puede controlar el repositorio (SVN y varios otros tipos) y arranque automático construye usando una variedad de herramientas. (Nant, MSBuild, etc.)

Un producto comercial que se ha anunciado en este sitio precisamente para este propósito!

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

Es posible que tenga que añadir un post-gancho para SVN para desencadenar el inicio de construcción a menos que usted quiere que se ejecute un programa de tiempo.

También recomiendo Hudson para esto. Yo estaba buscando hacer algo similar, crear una etiqueta y tienen que inicio a una acumulación. En vez he optado por utilizar este plugin para Hudson:

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

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

Estoy usando de NAnt (y NAntContrib ) para automatizado construye. Se comprueba automáticamente un repositorio de subversión por cambios y (si los hay) se pone la última versión del código fuente y comienza la construcción.

No estoy seguro de si las tareas existentes permiten hacer exactamente lo que quiere, pero tal vez se podría utilizar como punto de partida y, si es necesario, ampliarlo con las tareas para sus necesidades especiales (Es desarrollado con .NET).

Al igual que los otros chicos dijeron, usted quiere un servidor de integración continua (climatizador, CruiseControl.Net, Hudson, etc). Mientras que usted podría trabajar en su script de creación y cometer ganchos para hacer la funcionalidad que usted describe, al final encontrará que reinventado la rueda (Continuous Integration Server). No hay necesidad, hay soluciones libremente disponibles para este propósito.

El proceso funciona un poco diferente de lo que se ha descrito anteriormente. La voluntad servidor de compilación:

  1. Detectar una nueva cometer
  2. Pedido de su código fuente
  3. Ejecutar el script de construcción
  4. en la construcción satisfactoria

El cometen desencadena el proceso y crea la etiqueta en lugar de la etiqueta desencadenar el proceso. El servidor hace esto mi monitoreo desde el repositorio SVN en lugar de un gancho de comprometerse.

Salida documentación del CruiseControl.Net sobre este tema, en concreto el tagOnSuccess opciones y tagBaseUrl. Hudson y CruiseControl deben tener opciones similares.

http://confluence.public.thoughtworks.org / pantalla / CCNET / Subversion + Fuente + control + Bloque

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top