¿Es posible activar a Jenkins solo en una twig específica?

Mi situación es la siguiente: tengo tres twigs en un repository: master, dev y staging. Y tengo un trabajo para cada una de estas twigs, configurado en la sección 'Sucursales para build' en Jenkins. origen / maestro, origen / dev, origen / sorting por etapas.

Bitbucket desencadena el trabajo para comstackr cada vez que hay cambios en el repository a través de un gancho de repository. ( Https://confluence.atlassian.com/display/BITBUCKET/Jenkins+hook+management ).

Sin embargo, cuando presiono para dominar, todos los trabajos comienzan a build, y lo mismo con los otros dos.

Quiero que el trabajo "maestro" de Jenkins se construya solo cuando presiono para dominar una sucursal. Jenkins "dev" trabajo a la twig de desarrollo. Jenkins "escenificando" el trabajo para la puesta en escena de dev.

¿Hay alguna manera de controlar este comportamiento?

¿Has configurado la votación?

https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-Pushnotificationfromrepository

… Esto escaneará todos los trabajos que están configurados para verificar la URL especificada, las twigs opcionales, y si también están configurados con sondeo , inmediatamente activará el sondeo (y si eso encuentra un cambio que valga la construcción, un la compilation se activará a su vez). Requerimos la configuration de sondeo en el trabajo para que solo activemos los trabajos que se supone deben ser expulsados ​​de los cambios en el tree fuente.

Acabo de descubrir que Bitbucket no permite elegir gancho específico para empujar a cualquier twig. Simplemente llama a todos los ganchos, luego comienza todos los trabajos de Jenkins.

Mi solución fue crear un file específico en mi máquina que Jenkins está instalado y establecer un enlace Bitbucket a este file. (por ejemplo, http: // {jenkins url}: {apache port} /check.php)

Tenga en count que este puerto de apache no es el mismo que el de Jenkins, sino el de Apache. En mi caso, Jenkins se estaba ejecutando en 8080 y Apache en 7777. Lo hizo para ejecutar script php, pero no en el directory de Jenkins.

Como Bitbucket hook envía un file json, pude verificar en check.php qué twig ha sido presionada. Referencia: gestión de gancho POST

Después de la verificación usando un simple 'si', llamé a la url correcta para comenzar el trabajo correcto con exec_curl, como:

$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, http: // {jenkins url}: {jenkins port} / job / {job name} / build? token = {job token});
curl_setopt ($ ch, CURLOPT_HEADER, 0);
curl_exec ($ ch);
curl_close ($ ch);

Y voilá.

Para tener diferentes proyectos Jenkis para diferentes twigs hice lo siguiente:

  • Instale el complemento Bitbucket en su Jenkins
  • Agregue una publicación normal como gancho a su repository Bitbucket ( Configuración -> Ganchos ) y use la siguiente url:

https: // SU.JENKINS.SERVER: PORT / bitbucket-hook

  • Configure su proyecto Jenkins de la siguiente manera:
    • en el disparador de compilation habilitar Build cuando un cambio es empujado a BitBucket
    • en Gestión de código fuente, select GIT ; ingrese sus cnetworkingenciales y defina Sucursales para comstackr (como ** feature / * ) <- aquí es donde define diferentes twigs para cada proyecto

De esta manera, tengo tres proyectos de compilation, uno para todas las funciones, uno para desarrollo y otro para lanzamiento.

Y lo mejor de todo es que no tienes que anunciar nuevos ganchos para los nuevos proyectos de Jenkins.

    Intereting Posts