Configurar Jenkins para trabajar con sucursales SVN
continuous-integration hudson (3)
Actualmente estoy configurando Jenkins para trabajar con el repositorio SVN. Actualmente funciona bien para el maletero. Ahora quiero configurar a Jenkins para que se encargue de las sucursales recién creadas. No quiero crear un nuevo proyecto manualmente para cada nueva sucursal en SVN.
- ¿Ya existe una solución que permita utilizar SVN y crear trabajos / tareas en Jenkins automáticamente para cada brach creado en SVN?
- ¿Cómo se utiliza Jenkins con etiquetas / sucursales SVN?
El complemento de Subversion debe incluir una opción de parámetro de compilación desplegable. Puede incluir su repositorio base y luego seleccionar las ramas, las etiquetas o el tronco.
Echa un vistazo a esto: ¿Cómo configurar un solo trabajo de Jenkins para realizar el proceso de liberación desde un troncal o sucursales?
Y más información aquí: https://issues.jenkins-ci.org/browse/JENKINS-10678
También revise mi respuesta extendida si no está muy familiarizado con jenkins.
Proporciona una solución paso a paso con capturas de pantalla.
El complemento de subversion se instala de forma predeterminada en versiones recientes (a partir de septiembre de 2015).
Entonces debes configurar tu proyecto de la siguiente manera:
- marque "Esta construcción está parametrizada"
- elija "Listar etiquetas de subverion (y más)"
- en el campo de nombre, establezca un nombre variable que se pueda consultar más adelante en la URL svn. Elijo svnbranch aquí.
- en el campo URL del repositorio, dale la URL del proyecto (que debe contener troncales, sucursales y etiquetas)
- Rellena otro campo según tus necesidades.
- en la administración del código fuente, haga referencia a la variable definida anteriormente en su url de repositorio.
Compruebe las siguientes capturas de pantalla:
Tenemos un trabajo para cada sucursal y camión. Si tenemos 30 proyectos, tenemos 30 proyectos troncales y 30 proyectos para cada sucursal que estamos utilizando actualmente. Eso puede ser más de 150 trabajos, pero usamos vistas para ayudar a separarlos. Muy simple de usar una rama (o incluso una etiqueta) en Subversion: Simplemente use la URL que contiene la rama.
Copio mis trabajos manualmente cada vez que creamos una nueva sucursal. Por lo general, aborrezco un proceso manual (proceso manual => cometer un error => desordenar mayormente => ser despedido => trabajar en Walmart), pero en realidad solo se deben hacer dos cambios en mi trabajo. Tengo que cambiar la URL de Subversion y la descripción. Todo lo demás está configurado para utilizar los valores por defecto de Jenkin. No hay ningún directorio de trabajo raro, no hay copia extraña de artefactos de compilación (los almacenamos en Jenkins). Tenemos alrededor de 30 trabajos o así, y puedo duplicarlos en menos de media hora.
Simplemente he tenido problemas con la automatización, y si tengo que pasar por todos los trabajos de todas formas para asegurarme de que todo está bien, también podría hacerlo manualmente.
Podrías parametrizar tus construcciones. Es decir, haga que el usuario ingrese el nombre de la sucursal (o selecciónelo de una lista desplegable. Esto significa crear un solo trabajo para todas sus sucursales. Sin embargo, eso elimina el aspecto de compilación continua de Jenkins, ya que tiene que activar manualmente cada trabajo .
Algunos sitios tienen scripts que pueden producir en masa una nueva rama. Simplemente necesita copiar el archivo config.xml
(y algunos otros archivos) de un trabajo y modificarlo. Algunos sitios han creado trabajos de plantilla que hacen esto un poco más fácil. Los trabajos de la plantilla están deshabilitados, y gracias a la API REST, es fácil habilitar los trabajos a través de wget
. Simplemente duplican sus trabajos de plantilla, modifican algunos parámetros y luego vuelven a habilitar todos esos trabajos.
Hay un complemento del creador de JobCopy que le permite definir proyectos de compilación de plantillas y luego reemplazar cadenas en la plantilla para crear trabajos reales.
También hay un script Ant en la Wiki de Jenkins que duplica los trabajos para ti.