2011-10-13 15 views
16

Actualmente estoy mejorando el proceso de lanzamiento de nuestros proyectos en Jenkins (1.430).¿Cómo configurar un solo trabajo de Jenkins para realizar el proceso de liberación desde el tronco o las ramas?

empleos versión actual

Hoy en día, para un proyecto específico, tenemos un trabajo dedicado al proceso de lanzamiento. El procedimiento completo es el siguiente:

  1. El desarrollador que está a cargo de la liberación cambia manualmente la versión de todos los archivos pom.xml (de hecho usando mvn versions:set -DnewVersion=2.0) para deshacerse de la -SNAPSHOT.
  2. Luego, crea una etiqueta en SVN (http://my-svn-repo/project/tags/V_2_0 por ejemplo).
  3. Una vez que se ha creado esta etiqueta, inicia sesión en nuestro servidor Jenkins y comienza una compilación de versión.
  4. Esta construcción le preguntará qué etiqueta quiere usar para la compilación. El trabajo se configura como Parameterized build, con el parámetro List Subversion tags.
  5. Jenkins construirá los artefactos a partir de esta etiqueta y los implementará en nuestra instancia de Nexus.
  6. Una vez hecho esto, el desarrollador establece las versiones pom.xml en la nueva versión de desarrollo (es decir, 2.1-SNAPSHOT).

La ventaja de este método es que solo tengo el trabajo de Jenkins, ya que la creación se basará solo en una etiqueta.

Sin embargo, este procedimiento implica demasiadas intervenciones humanas (cambios de pom.xml, confirmaciones, etiquetas, etc.).

Los nuevos trabajos de liberación

Ahora, yo uso el plugin de Maven liberación. He creado un trabajo que pide tres información para el usuario que inicia la construcción:

  • la versión de la liberación (parámetro releaseVersion del plugin de liberación);
  • la versión de desarrollo, después del lanzamiento (parámetro developmentVersion del complemento de publicación);
  • el nombre de la etiqueta (parámetro tag del complemento de versión).

Este trabajo funciona bien, excepto por un punto: el trabajo se basa en el tronco o en una rama en SVN. Esto significa que si tengo 2 ramas (además del tronco), necesitaré crear 3 trabajos de liberación: uno por rama.

Una idea para mantener lo mejor de los dos mundos (es decir, usar mvn release, pero manteniendo 1 release job) para agregar un parámetro de compilación que le preguntará al usuario por la ruta del tronco/rama. Por lo tanto, en lugar de establecer http://my-svn-repo/project/trunk (o http://my-svn-repo/project/branches/BRANCH_V1) en la configuración del trabajo, estableceré http://my-svn-repo/project/$FROM_BRANCH y le pediré al usuario que ingrese el parámetro FROM_BRANCH.

El problema con esta solución es que el usuario tendrá que ingresar ya sea trunk o branches/BRANCH_Vx, lo que puede ocasionar errores.

Idealmente, me encantaría tener un parámetro de compilación que me dejó la elección de la rama (incluyendo el tronco), como las etiquetas lista Subversion parámetro existen para la elección de las etiquetas ...

Así que mi pregunta: ¿hay una mejor manera de configurar un trabajo de Jenkins que pueda funcionar en todas las sucursales?

Gracias.


Editar: He encontrado el Validating String Jenkins plugin que puede ser interesante para asegurar que el valor definido por el usuario respeta alguna expresión regular. Eso es útil en mi caso ...

+0

También puede utilizar alguna modificación de mi respuesta aquí: http://stackoverflow.com/a/41632406/2886891 –

Respuesta

9

Necesita la versión 1.32 del complemento de subversión. El issue JENKINS-10678 se implementó en esa versión.

Luego solo le da su URL de proyecto (que debe contener tronco, ramas y etiquetas) y le ofrecerá el tronco junto con sus ramas.

+0

Gracias! Eso es casi perfecto. Ahora, proporciona troncales, ramas y etiquetas. Me gustaría eliminar las etiquetas, pero de todos modos, ahora es bastante bueno. – romaintaz

+0

¿Te ayuda el 'tags filter'? –

+0

No lo intenté todavía, pero creo que puede ser útil, sí. – romaintaz

14

Solo para agregar algunas notas a la respuesta de Peter si no está tan familiarizado con jenkins.

El complemento de subversión está instalado de forma predeterminada en las versiones recientes (en septiembre de 2015).

A continuación, debe configurar su proyecto de la siguiente manera:

  1. de verificación "Esta construcción es parametrizado" (esto proyecto es parametrizada en las versiones más recientes)
  2. elegir "etiquetas lista subverion (y más)"
  3. en el campo de nombre, establezca un nombre variable que se puede consultar más adelante en la url de svn. Elijo svnbranch aquí.
  4. en el campo URL del repositorio, darle su URL del proyecto (que debe contener tronco, las ramas y las etiquetas)
  5. relleno otro campo como sus necesidades
  6. en la gestión de código fuente, referencia a la variable definido antes en su URL del repositorio.

de verificación siguientes capturas de pantalla:

enter image description here

enter image description here

+0

¿El enganche post-commit desencadenará esta compilación, si usamos un $ svnbranch? Sólo curioso – user1164061

Cuestiones relacionadas