tag - qué comando podemos usar para crear una etiqueta git
Jenkins Git Plugin: ¿Cómo construir una etiqueta específica? (10)
¿No puedes decirle a Jenkins que construya desde un nombre Ref? Si es así, entonces es
refs/tags/tag-name
De todas las preguntas que veo sobre Jenkins y Hudson, sugiero cambiar a TeamCity. No tuve que editar ningún archivo de configuración para que TeamCity funcione.
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 plugin git para simplemente construir esa etiqueta. Esto ha tomado 3 horas de mi día y he concedido la derrota a los maestros en el desbordamiento de la pila.
En un último Jenkins (1.639 y superior) puedes:
- solo especifica el nombre de la etiqueta en un campo ''Branches to build''.
- en una compilación parametrizada, puede usar el parámetro como variable en el mismo campo ''Sucursales para compilar'', es decir, $ {Sucursal_para_construir}.
- puede instalar el complemento de parámetros de Git, que le proporcionará la funcionalidad al enumerar todas las ramas y etiquetas disponibles.
Hice algo como esto y funcionó:
Source Code Management
Git
Repositories
Advance
Name: ref
Refspec : +refs/tags/*:refs/remotes/origin/tags/*
Branches to build
Branch Specifier (blank for ''any'') : v0.9.5.2
El registro de Jenkins confirmó que obtenía la fuente de la etiqueta
Revisando la Revisión 0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)
Lo que hice al final fue:
- creó una nueva rama
jenkins-target
y consiguió que jenkins rastreara - fusionar desde cualquier rama o etiqueta que quiera construir en el
jenkins-target
- una vez que la construcción estaba funcionando, las pruebas pasaban, etc., simplemente creaba una etiqueta de la rama
jenkins-target
No estoy seguro de si esto funcionará para todos, mi proyecto fue bastante pequeño, no hay demasiadas etiquetas y esas cosas, pero es muy fácil de hacer, no tiene que perder el tiempo con las referencias y parámetros y cosas así :-)
Logré que Jenkins creara una etiqueta configurando Refspec y Branch Specifier como se detalla en esta publicación de blog .
También tuve que configurar el nombre del repositorio (para "origen" en mi caso) para que pudiera referenciarlo en el Refspec (de lo contrario, aparentemente usaría un nombre generado aleatoriamente).
Ninguna de estas respuestas fue suficiente para mí, utilizando Jenkins CI v.1.555, el plugin Git Client v.1.6.4 y el plugin Git 2.0.4.
Quería un trabajo para construir para un repositorio de Git para una etiqueta específica, fija (es decir, no parametrizada). Tuve que improvisar una solución a partir de varias respuestas más la entrada del blog "crear una etiqueta de Git" citada por Thilo .
- Asegúrese de insertar su etiqueta en el repositorio remoto con
git push --tags
- En la sección "Repositorio de Git" de su trabajo, bajo el título "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 "Sucursales para compilar", "Especificador de sucursal", ponga
*/tags/<TAG_TO_BUILD>
(reemplazando<TAG_TO_BUILD>
con su nombre de etiqueta real).
Agregar el 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 la dejé en blanco, el complemento de Git no pudo encontrar mi etiqueta por completo. Solo cuando especifiqué explícitamente "obtener las etiquetas remotas" en el campo Refspec, el plugin de Git fue capaz de identificar y construir desde 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 de inserción de Git à la Stash Webhook a Jenkins : cada vez que se actualiza una rama en el repositorio en un impulso, los trabajos de creación de etiquetas también se activarán nuevamente. Esto lleva a una gran cantidad de reconstrucciones innecesarias de los mismos trabajos de etiquetas una y otra vez. He intentado configurar los trabajos con y sin la opción "Forzar encuesta mediante el espacio de trabajo", y parecía no tener ningún efecto. La única forma en que podría evitar que Jenkins haga las compilaciones innecesarias para los trabajos de etiquetas es borrar el campo Refspec (es decir, eliminar los +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 quizás esto no sucedería si el refspec específicamente fuera +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
refs +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
lugar del asterisco catch-all. Por ahora, sin embargo, esta solución nos funciona, simplemente eliminamos el Refspec adicional una vez que el trabajo tiene éxito.
Pude hacer eso usando el parámetro "branches to build":
Branch Specifier (blank for default): tags/[tag-name]
Reemplace [nombre-etiqueta] por el nombre de su etiqueta.
Puedes construir incluso un tipo de etiqueta, por ejemplo 1.2.3-alpha43
, usando comodines:
Refspec: +refs/tags/*:refs/remotes/origin/tags/*
refs +refs/tags/*:refs/remotes/origin/tags/*
Especificador de rama: origin/tags/1.2.3-alpha*
También puede marcar " Crear cuando un cambio se inserta en GitHub " para activar el impulso, pero debe agregar la acción "Crear" al enlace web.
Si está utilizando tuberías de Jenkins y quiere verificar una etiqueta específica (por ejemplo, un parámetro TAG
de su compilación), esto es lo que puede hacer:
stage(''Checkout'') {
steps {
checkout scm: [$class: ''GitSCM'', userRemoteConfigs: [[url: ''YOUR_GIT_REPO_URL.git'', credentialsId: ''YOUR_GIT_CREDENTIALS_ID'' ]], branches: [[name: ''refs/tags/${TAG}'']]], poll: false
}
}
Establecí el campo Avanzado-> Refspec en refs 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 aún se estaba revisando. Por favor, deshaga esto como la respuesta aceptada. Terminé obteniendo una solución de trabajo siguiendo la publicación de gotgenes en este thread (30 de marzo). El problema mencionado en esa publicación de desencadenamiento innecesario de compilaciones no fue un problema para mí, ya que mi trabajo se desencadena desde un trabajo en sentido ascendente, no desde un sondeo de SCM.
ACTUALIZACIÓN APR-2018 : tenga en cuenta en los comentarios que esto funciona para una persona y está de acuerdo con la documentación de Jenkins.