tag plugin perform mvn example don maven hudson jenkins maven-release-plugin

maven - plugin - ¿Cómo configurar un solo trabajo de Jenkins para realizar el proceso de liberación desde el tronco o las ramas?



maven release plugin git (2)

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

El complemento de subversión se instala por defecto en las versiones recientes (en septiembre de 2015).

Entonces debes configurar tu proyecto de la siguiente manera:

  1. marca "Esta construcción está parametrizada" (este proyecto está parametrizado en las versiones más nuevas)
  2. elija "Listar etiquetas subverion (y más)"
  3. en el campo de nombre, establezca un nombre variable al que se puede hacer referencia más adelante en la url de svn. Elijo svnbranch aquí.
  4. en el campo URL del repositorio, dele la URL del proyecto (que debe contener el tronco, las ramas y las etiquetas)
  5. llene otro campo según sus necesidades
  6. en la gestión de código fuente, haga referencia a la variable definida anteriormente en su url de repositorio.

revisa las siguientes capturas de pantalla:

Actualmente estoy mejorando el proceso de lanzamiento de nuestros proyectos en Jenkins (1.430).

Trabajos de publicación actual

Hoy, 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 del lanzamiento cambia manualmente la versión de todos los archivos pom.xml (de hecho, usa mvn versions:set -DnewVersion=2.0 ) para deshacerse de -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 de Jenkins y comienza una versión de lanzamiento.
  4. Esta construcción le preguntará qué etiqueta quiere usar para la compilación. El trabajo se configura como una creación parametrizada , con el parámetro List Subversion tags .
  5. Jenkins construirá los artefactos de esta etiqueta y los desplegará en nuestra instancia de Nexus.
  6. Una vez hecho esto, el desarrollador establece las versiones pom.xml a 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 construcción dependerá solo de una etiqueta.

Sin embargo, este procedimiento implica demasiadas interventios humanas (cambios de pom.xml, commits, tags, etc.).

Nuevos trabajos de lanzamiento

Ahora, uso el complemento de lanzamiento de Maven. Creé un trabajo que le pide tres información al usuario que inicia la compilación:

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

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 la versión de mvn, pero manteniendo 1 trabajo de liberación) para agregar un parámetro de construcción que le preguntará al usuario por la ruta de la línea troncal / rama. Entonces, en lugar de configurar 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 solicite al usuario que ingrese el parámetro FROM_BRANCH .

El problema con esta solución es que el usuario deberá ingresar trunk o branches/BRANCH_Vx , lo que puede generar errores.

Idealmente, me encantaría tener un parámetro de compilación que me permita elegir la rama (incluida la troncal), ya que el parámetro List Subversion tags existe para la elección de las etiquetas ...

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

Gracias.

Editar : Encontré el complemento Validating String Jenkins que puede ser interesante para garantizar que el valor definido por el usuario respeta algunas expresiones regulares. Eso es útil en mi caso ...


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

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