Tengo problemas para que Jenkins cree una etiqueta específica. La etiqueta es parte de una compilación parametrizada, pero no sé cómo pasar esto al complemento git para simplemente compilar esa etiqueta. Esto ha estado tomando 3 horas de mi día y he concedido la derrota a los maestros en el stack overflow.
120
Respuestas:
Pude hacer eso usando el parámetro "ramas para construir":
Reemplace [tag-name] por el nombre de su etiqueta.
fuente
HEAD
. La lógica del complemento git parece comparar estas dos revisiones, que en mi repositorio siempre son desiguales y, por lo tanto, siempre se activa una nueva compilación.Ninguna de estas respuestas fue suficiente para mí, usando Jenkins CI v.1.555, el complemento Git Client v.1.6.4 y el complemento Git 2.0.4.
Quería crear un trabajo para un repositorio de Git para una etiqueta específica, fija (es decir, no parametrizada). Tuve que improvisar una solución a partir de las diversas respuestas más la publicación del blog "construir una etiqueta Git" citada por Thilo .
git push --tags
+refs/tags/*:refs/remotes/origin/tags/*
*/tags/<TAG_TO_BUILD>
(reemplazando<TAG_TO_BUILD>
con su nombre de etiqueta real).Agregar Refspec para mí resultó ser crítico. Aunque parecía que los repositorios de git estaban obteniendo toda la información remota de forma predeterminada cuando lo dejé en blanco, el complemento de Git no podría encontrar mi etiqueta. Solo cuando especifiqué explícitamente "obtener las etiquetas remotas" en el campo Refspec, el complemento de Git pudo identificar y construir a partir de mi etiqueta.
Actualización 2014-5-7 : Desafortunadamente, esta solución viene con un efecto secundario indeseable para Jenkins CI (v.1.555) y el mecanismo de notificación push del repositorio Git al estilo Stash Webhook to Jenkins : cada vez que se actualiza cualquier rama del repositorio en un empujón, los trabajos de creación de etiquetas también se activarán nuevamente. Esto conduce a una gran cantidad de reconstrucciones innecesarias de los mismos trabajos de etiquetas una y otra vez. Intenté configurar los trabajos con y sin la opción "Forzar sondeo usando el espacio de trabajo", y pareció no tener ningún efecto. La única forma en que podría evitar que Jenkins hiciera las compilaciones innecesarias para los trabajos de etiquetas es borrar el campo Refspec (es decir, eliminar
+refs/tags/*:refs/remotes/origin/tags/*
).Si alguien encuentra una solución más elegante, edite esta respuesta con una actualización. Sospecho, por ejemplo, que tal vez esto no sucedería si refspec específicamente fuera en
+refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
lugar del asterisco catch-all. Por ahora, sin embargo, esta solución está funcionando para nosotros, simplemente eliminamos la Refspec adicional después de que el trabajo tenga éxito.fuente
+refs/heads/*:refs/remotes/origin/*
, ahora lo será+refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/remotes/origin/tags/*
. (No he trabajado mucho con refspecs, por lo que me tomó un poco de experimentación aprender que este campo está delimitado por espacios).¿No puedes decirle a Jenkins que construya a partir de un nombre de referencia? Si es así entonces es
De todas las preguntas que veo sobre Jenkins y Hudson, sugeriría cambiar a TeamCity. No he tenido que editar ningún archivo de configuración para que TeamCity funcione.
fuente
git push --tags
Si está utilizando canalizaciones de Jenkins y desea verificar una etiqueta específica (por ejemplo: un
TAG
parámetro de su compilación), esto es lo que puede hacer:fuente
En un Jenkins más reciente (1.639 y superior) puede:
fuente
1.0.1
) en las ramas para construir el campo.Hice algo como esto y funcionó:
El registro de Jenkins confirmó que estaba obteniendo la fuente de la etiqueta
Comprobando la revisión
0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)fuente
refspec
fue el truco haciendo clic en el botón Avanzado.Configuré el campo Advanced-> Refspec en
refs/tags/[your tag name]
. Esto parece más simple que las otras sugerencias para Refspec, pero funcionó bien para mí.ACTUALIZACIÓN 23/7/2014 - En realidad, después de más pruebas, resulta que esto no funcionó como se esperaba. Parece que la versión HEAD todavía se estaba revisando. Deshaga esto como la respuesta aceptada. Terminé obteniendo una solución funcional siguiendo la publicación de gotgenes en este hilo (30 de marzo). El problema mencionado en esa publicación de activación innecesaria de compilaciones no fue un problema para mí, ya que mi trabajo se activa desde un trabajo anterior, no desde el sondeo de SCM.
ACTUALIZAR ABR-2018 : tenga en cuenta en los comentarios que esto funciona para una persona y está de acuerdo con la documentación de Jenkins.
fuente
refs/tags/<tagname>
es lo que la documentación de Jenkins dice que se debe usar, y funciona bien para mí. Quizás el complemento tenía errores en el momento de la publicación original, pero ... a partir de abril de 2018, esta es la respuesta correcta.refs/tags
prefijo y simplemente usar<tagname>
. YMMV, pero ... funciona bien para mis propósitos.Pude hacer que Jenkins construyera una etiqueta estableciendo Refspec y Branch Specifier como se detalla en esta publicación de blog .
También tuve que establecer el Nombre del repositorio (en "origen" en mi caso) para poder hacer referencia a él en Refspec (de lo contrario, aparentemente usaría un nombre generado aleatoriamente).
fuente
Lo que hice al final fue:
jenkins-target
y consiguió que Jenkins rastreara esojenkins-target
jenkins-target
ramaNo estoy seguro de si esto funcionará para todos, mi proyecto era bastante pequeño, no había demasiadas etiquetas y esas cosas, pero es muy fácil de hacer, no tienes que perder el tiempo con las especificaciones de referencia y los parámetros y esas cosas :-)
fuente
Puede crear incluso un tipo de etiqueta, por ejemplo
1.2.3-alpha43
, utilizando comodines:Refspec:
+refs/tags/*:refs/remotes/origin/tags/*
Especificador de rama:
origin/tags/1.2.3-alpha*
También puede marcar " Crear cuando se envía un cambio a GitHub " para activar el envío, pero debe agregar la acción "crear" al webhook
fuente
Agregando mis dos centavos aquí ya que no he visto una respuesta que use la opción "Construir con parámetros" en Jenkins.
Aquí estoy usando la consola del navegador Jenkins CI para el proyecto starwars_api y pude construir directamente con "Construir con parámetros" con el valor refs / tags / tag-name
construir con nombre de etiqueta de referencia
fuente