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 .
- Asegúrese de enviar su etiqueta al repositorio remoto con
git push --tags
- En la sección "Repositorio de Git" de su trabajo, bajo el encabezado "Administración de código fuente", haga clic en "Avanzado".
- En el campo de Refspec, agregue el siguiente texto:
+refs/tags/*:refs/remotes/origin/tags/*
- En "Ramas para construir", "Especificador de rama", coloque
*/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.