tipos tag remove remota rama etiquetas crear cambiar git github jenkins jenkins-plugins

remota - git remove tag



Construye solo la rama Git que ha sido empujada a (6)

Tengo un trabajo de Jenkins para construir la rama master de mi repositorio de GitHub. Se dispara muy bien cuando presiona un compromiso para master , y estoy muy feliz por ello.

También me gustaría tener un solo trabajo de Jenkins que pueda construir cualquier otra rama en este repositorio. Es decir, cada vez que presiono un compromiso en una rama (que no es master ), me gustaría tener este trabajo de Jenkins para construir esa rama, y ​​solo esa rama.

El uso del complemento de solicitud de extracción de GitHub me obliga a crear una solicitud de extracción y combina mi confirmación con el master . Me gustaría hacer esto sin tener que crear una solicitud de extracción, y solo compilar mi confirmación sin fusionarla con el master .

Configurar el complemento Git para construir todas las ramas significa que cada vez que presiono para dominar, se construyen todas las ramas. Me gustaría construir solo la rama que ha sido modificada.

¿Es esto posible hacer en Jenkins?


Como se mentioned @ thatway_3, esto es posible con un complemento. El complemento del proyecto Multi-Branch al que se vincularon está en desuso, pero en su lugar puede usar el complemento multibranquio Pipeline

Si instala ese complemento y luego crea un nuevo trabajo de tipo "Pipeline Multibranch", puede configurarlo para rastrear un repositorio en particular. Entonces (¡correctamente!) Construirá todas las ramas desde allí.

Ver también: https://jenkins.io/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/

Espero que esto ayude.



Estaba teniendo el mismo problema, así que configuré un proyecto ficticio para experimentar y encontré la solución. Y descubrió que sí, puedes construir solo la rama en la que se ha empujado.

La respuesta corta es utilizar un "Especificador de rama" . Por ejemplo, origin/feature** .

Si está utilizando GitFlow y todas las ramas de sus características se nombran con una feature/ prefijo, entonces esta es la solución.

Y si tienes curiosidad, así es como lo descubrí.

Desde la configuración del repositorio configuré el servicio "complemento Github" con el https://<jenkin server>/github-webhook/ Jenkins https://<jenkin server>/github-webhook/ . Tenga en cuenta que, al menos para mí, lo que sucedió fue que, por algún motivo, después de presionar "prueba" , el mensaje de la carga útil que se envía nunca cambió para confirmar que se recibió / reconoció o algo. Tal vez no hay respuesta. Es confuso, pero de todos modos ...

Creé un nuevo trabajo de Jenkins y configuré el especificador de rama en blanco, que Jenkins establece automáticamente en ** .

Creé una característica de rama de feature/foo y empujé en ella.

  • La compilación 1 se disparó, pero en la rama master .
  • La compilación 2 también se activó en la feature/foo rama feature/foo .

Así que parece que con el especificador ** o en blanco, el complemento activará las compilaciones en todas las ramas de un repositorio siempre que haya un impulso para cualquiera de ellas.

Luego probé con refs/heads/feature/foo patrón y presioné otro cambio en la rama feature/foo .

  • La compilación 3 se activó en la feature/foo rama feature/foo .
  • No se dispararon otras construcciones.

Algo bueno, pero esto es demasiado rígido. Nos obligaría a tener un trabajo de compilación para cada rama de función. Quería un trabajo de compilación para todas las ramas principales.

Luego probé un comodín con patrones refs/heads/feature/*/* y presioné los cambios para feature/foo .

  • No se disparó ninguna construcción.

Luego probé con el especificador de rama refs/heads/feature//*/* y presioné.

  • No se disparó ninguna compilación

Luego vi la ayuda del campo "Especificador de rama" que se lee en la sección "Comodines":

La sintaxis es de la forma: REPOSITORYNAME/BRANCH . Además, BRANCH se reconoce como una abreviatura de */BRANCH , * se reconoce como comodín, y ** se reconoce como comodín que incluye el separador / . Por lo tanto, origin/branches* coincidiría con origin/branches-foo pero no origin/branches/foo , mientras que origin/branches** coincidirá con origin/branches-foo y origin/branches/foo .

Así que probé el origin/feature**

  • La compilación 4 se activó en origin/feature/foo .

¡Eureka! Parece que no puedes usar comodines con las referencias (comenzando con refs/ ), pero sí puedes con los nombres de las ramas reales (comenzando con origin/ ).

Luego creé la feature/bar rama y la presioné. Para verificar que solo se construirá éste y no otras ramas que también comiencen con la feature/ .

  • La compilación 5 se disparó en el origin/feature/bar .

Parecía casi allí. Sólo necesitaba un par de pruebas más.

Entonces empujé otro cambio a origin/master

  • No se construyó ningún edificio. ¡Genial!

Luego presioné otro cambio en feature/bar , para probar que solo se construiría esta rama. A pesar del hecho de que el origin/master también había sido empujado.

  • La compilación 6 se activó en la feature/bar .
  • No hay otras construcciones disparadas.

Me parece bien.


Puede especificar fácilmente la rama en la configuración del trabajo:

En la sección Administración del código fuente, donde ya ha especificado la URL de su repositorio git, también tiene la opción de especificar las sucursales para construir . Simplemente, por favor, el nombre de su sucursal en lugar del maestro (que es el valor predeterminado).



Se encontró que hay una configuración de la lista whitelist en la sección Build Trigger :

Allí puede especificar para construir / probar en qué rama se fusionará el RP.