Jenkins Git Plugin: ¿Cómo build una label específica?

Tengo problemas para que Jenkins cree una label específica. La label es parte de una compilation parametrizada, pero no sé cómo pasar esto al plugin git para simplemente build esa label. Esto ha tomado 3 horas de mi día y he concedido la derrota a los maestros en el desbordamiento de la stack.

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 testings, 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 hilo (30 de marzo). El problema mencionado en esa publicación de desencadenamiento innecesario de comstackciones no fue un problema para mí, ya que mi trabajo se desencadena desde un trabajo en sentido ascendente, no desde un sondeo de SCM.

Pude hacer eso usando el parámetro "branches to build":

 Branch Specifier (blank for default): tags/[tag-name] 

Reemplace [nombre-label] por el nombre de su label.

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 build para un repository de Git para una label específica, fija (es decir, no parametrizada). Tuve que improvisar una solución a partir de varias respuestas más la input del blog "crear una label de Git" citada por Thilo .

  1. Asegúrese de insert su label en el repository remoto con git push --tags
  2. En la sección "Repositorio de Git" de su trabajo, bajo el título "Administración de código fuente", click "Avanzado".
  3. En el campo de Refspec, agregue el siguiente text: +refs/tags/*:refs/remotes/origin/tags/*
  4. En "Sucursales para comstackr", "Especificador de sucursal", ponga */tags/<TAG_TO_BUILD> (reemplazando <TAG_TO_BUILD> con su nombre de label real).

Agregar el Refspec para mí resultó ser crítico. Aunque parecía que los repositorys de git estaban obteniendo toda la información remota de forma pnetworkingeterminada cuando la dejé en blanco, el complemento de Git no pudo encontrar mi label por completo. Solo cuando especifiqué explícitamente "get las tags remotas" en el campo Refspec, el plugin de Git fue capaz de identificar y build desde mi label.

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 del repository Git à la Stash Webhook a Jenkins : cada vez que se actualiza cualquier twig en el repository en un impulso, los trabajos de creación de tags también se activarán nuevamente. Esto lleva a una gran cantidad de reconstrucciones innecesarias de los mismos trabajos de tags 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 versiones innecesarias para los trabajos de tags 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.

¿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 file de configuration para que TeamCity funcione.

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 

enter image description here

El logging de Jenkins confirmó que obtenía la fuente de la label

Revisando la Revisión 0b4d6e810546663e931cccb45640583b596c24b9 (v0.9.5.2)

Logré que Jenkins creara una label configurando Refspec y Branch Specifier como se detalla en esta publicación de blog .

También tuve que configurar el nombre del repository (para "origen" en mi caso) para que pudiera referencerlo en el Refspec (de lo contrario, aparentemente usaría un nombre generado aleatoriamente).

En un último Jenkins (1.639 y superior) puedes:

  1. solo especifica el nombre de la label en un campo 'Branches to build'.
  2. en una compilation parametrizada, puede usar el parámetro como variable en el mismo campo 'Sucursales para comstackr', es decir, $ {Sucursal_para_build}.
  3. puede instalar el complemento de parameters de Git, que le proporcionará la funcionalidad mediante la list de todas las twigs y tags disponibles.

Si está utilizando tuberías de Jenkins y quiere verificar una label específica (por ejemplo, un parámetro TAG de su compilation), esto es lo que puede hacer:

 stage('Checkout') { steps { checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL.git', cnetworkingentialsId: 'YOUR_GIT_CREDENTIALS_ID' ]], branches: [[name: 'refs/tags/${TAG}']]], poll: false } } 

Lo que hice al final fue:

  • creó una nueva twig jenkins-target y consiguió que jenkins rastreara
  • fusionar desde cualquier twig o label que quiera build en el jenkins-target
  • una vez que la construcción estaba funcionando, las testings pasaban, etc., simplemente creaba una label de la twig jenkins-target

No estoy seguro de si esto funcionará para todos, mi proyecto fue bastante pequeño, no hay demasiadas tags y esas cosas, pero es muy fácil de hacer, no tiene que perder el time con las references y parameters y cosas así 🙂

Puedes build incluso un tipo de label, por ejemplo 1.2.3-alpha43 , usando comodines:

Refspec: +refs/tags/*:refs/remotes/origin/tags/* refs +refs/tags/*:refs/remotes/origin/tags/*

Especificador de twig: 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.