Jenkins: cómo construir una rama específica

95

Esto no es tan simple como hacer una compilación parametrizada. Ya tengo un proceso de compilación específico que se compilará e implementará cada vez que alguna de estas ramas se envíe a GitHub:

ingrese la descripción de la imagen aquí

Entonces, si acabo de presionar developy se construyó correctamente, ¿cómo puedo activar una compilación manual y hacer que tire feature/my-new-feature(sin hacer a git push)? He intentado que permite la acumulación parametrizada, la adición de una nueva cadena llamada branch, y luego añadir un nuevo especificador rama, */$branch. Entonces me encontré con una construcción y un conjunto branchde feature/my-new-featurey todavía sacado de develop.

¡Agradecería cualquier ayuda!

ffxsam
fuente
¿Estás hablando de github webhook? esto podría resolver su problema. ¿Quieres activar esto desde github?
Abhijeet Kamble
1
No, la integración de GitHub ya está funcionando. Necesito saber cómo construir manualmente una rama específica.
ffxsam
3
Tengo el mismo problema. El trabajo está configurado para construir diferentes ramas y se activa mediante un gancho de git. Pero cuando me gustaría construir una rama específica manualmente (sin nuevos cambios en GIT) hago clic en "Construir ahora" pero siempre construye la última rama extraída. También probé varias propiedades de construcción.
cornz
Si su parámetro se llama rama, solo necesita especificarlo $branchen el campo del especificador de rama.
Alexey
1
@Alexey, pero luego, durante la compilación iniciada automáticamente, esto $branchdará como resultado una cadena vacía, supongo.
Nakilon

Respuestas:

109

La mejor solución puede ser:

Agregar un parámetro de cadena en el trabajo existente ingrese la descripción de la imagen aquí

Luego, en la Source Code Managementsección actualice Branches to buildpara usar el parámetro de cadena que definióingrese la descripción de la imagen aquí

Si ve una casilla de verificación etiquetada Lightweight checkout, asegúrese de que no esté marcada.

La configuración indicada en las imágenes le dirá al trabajo de jenkins que se use mastercomo la rama predeterminada, y para las compilaciones manuales le pedirá que ingrese los detalles de la rama (para su información: por defecto está configurado en master)ingrese la descripción de la imagen aquí

De Ranjith
fuente
4
La construcción maestra por defecto no es suficiente para una compilación de desarrollo genérica que se supone que compila todas las ramas de desarrollo.
static_rtti
9
Dios mío, eso es una mierda. ¿Por qué Jenkins no mantiene la Branches to buildsección con el maldito repositorio de Git al que se aplica? Es un PITA estúpido tener que hacer esto para especificar una rama para construir.
Alex Zavatone
9
Dong, esto no funciona (para mí). Termino con Jenkins tratando de verificar una rama git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --pruneque obviamente no es válida.
Liam
1
esto se registra como un error en Jenkins, por lo que es difícil ver cómo funcionó esto alguna vez.
Liam
19
@Liam Como se sugiere en el ticket de error, debes desmarcar "Pago ligero" para que esto funcione.
asmaier
10

No creo que puedan ambos en el mismo trabajo de jenkins, lo que debe hacer es configurar un nuevo trabajo de jenkins que tendrá acceso a su github para recuperar ramas y luego puede elegir cuál construir manualmente.

Simplemente márquelo como una compilación parametrizada, especifique un nombre y un parámetro configurado como git parameter

ingrese la descripción de la imagen aquí

y ahora puedes configurar las opciones de git:

ingrese la descripción de la imagen aquí

ahumado
fuente
7
¿Ese parámetro de git es un complemento de jenkins? No veo la opción de agregar ese tipo de prameter. Si se trata de un complemento, ¿puede señalarlo en la respuesta?
Leandro David
@LeandroDavid sí Git Parameter es un complemento que debe instalarse, luego verá esta opción en Agregar parámetro.
gotosachin
9

Para verificar la rama a través de scripts de Jenkins, use:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}
Igor L.
fuente
1
Sé que esto no es exactamente de lo que se trata la pregunta, pero estaba buscando esta información y Google seguía sugiriendo este sitio como respuesta.
Igor L.
aquí mismo bro. Que fueron capaces de encontrar la respuesta a la respuesta exacta
thinkingmonster
0

Esta es la extensión de la respuesta proporcionada por Ranjith

Le sugiero que elija una compilación de parámetro de elección y especifique las ramas que le gustaría construir. Parámetro de elección activa

Y después de eso, puede especificar ramas para construir. Rama para construir

Ahora, cuando construya su proyecto, se le proporcionará "Construir con parámetros, donde puede elegir la rama para construir"

También puede escribir un script maravilloso para recuperar todas sus ramas en el parámetro de elección activa.

Ashish Chandra
fuente
Por favor elabora. TeamCity hace esto de forma predeterminada y, sin embargo, Jenkins ni siquiera puede atarse sus propios zapatos.
C Johnson
0

ingrese la descripción de la imagen aquí

Habrá una opción en la configuración en Build Triggers

Verifique las sucursales de GitHub

Se creará un gancho y luego podrá construir cualquier rama que desee de Jenkins cuando seleccione Ramas de github ingrese la descripción de la imagen aquí

Espero eso ayude :)

rohit thomas
fuente
Estoy tratando de usar este complemento con esta configuración, pero no puedo encontrar la manera de que comience el trabajo. ¿Existe una forma diferente de comprobar si los eventos proceden correctamente de gh?
Vito De Tullio
¿Está obteniendo la Run Branch Triggeropción, escanea el repositorio de git para todas las ramas disponibles ... También solo mire en los registros de jenkins -> en Administrar Jenkins ... para ver si se han producido errores
rohit thomas
1
Desarrolle, su descripción es demasiado pequeña y corta.
C Johnson