online - ¿Cómo puedo hacer que Jenkins CI con gatillo git en empujes domine?
jenkins online (11)
A partir de la versión 0.5, el plugin de Github para Jenkins puede desencadenar una compilación cuando se envía un cambio a GitHub.
Estoy intentando configurar Jenkins-ci para un proyecto que usa github. Ya configuré jenkins con los complementos adecuados. Quiero que jenkins ejecute scripts de compilación solo cuando alguien en el proyecto empuje al máster. Hasta ahora he podido configurarlo para que se genere una compilación cada vez que alguien empuja a cualquier lugar, pero eso es demasiado amplio. He hecho esto con ganchos de servicio post-recepción en git.
He leído el wiki de jenkins, y un par de tutoriales, pero este detalle en particular está perdido ... ¿tiene algo que ver con las encuestas, tal vez? ¿O debería hacerse el trabajo en el lado git, para que git solo active jenkins cuando se cambie Master?
¡Gracias por tu ayuda!
Como ya se señaló por gezzed en su comentario, mientras tanto hay una buena solución (descrita por kohsuke.org/2011/12/01/… ):
Establezca el desencadenador de compilación del trabajo de Jekins en Poll SCM , pero no especifique un cronograma
Crea un activador post-recepción github para notificar a la URL
http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
Esto desencadenará todas las construcciones que sondean el repositorio de git especificado.
Sin embargo, el sondeo realmente verifica si se ha enviado algo a la sucursal utilizada.
Funciona perfectamente
Continúa la integración con Jenkins Después de que el código se confirma desde el comando / GUI de Git del sistema local al repositorio.
1) Cree un trabajo en jenkins con solo nombre de trabajo y seleccione el tipo de proyecto estilo libre, haga clic en Aceptar. La página siguiente no agrega nada simplemente haga clic en Guardar.
2) Vaya al repositorio git local donde tiene el código fuente y navegue a la carpeta .git / hooks
3) la carpeta de anzuelos contiene los pocos archivos que verifican la "post-confirmación" si no está presente, crean un archivo "post-commit" sin extensión
C: / work / test / .git / hooks / post-commit
4) Edite el comando "postcompromiso" con el siguiente comando, asegúrese de que esté presente en su carpeta de enlaces de código fuente local
curl -u <nombre del usuario>: <apiToken> -X POST http: // localhost: 8080 / jenkins / job / <nombre del trabajo> / build? token = <apiToken >
Ejemplo: curl -u admin: f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384
5)
<nombre de usuario>: nombre de usuario de jenkins
<nombre del trabajo>: nombre del trabajo de la compilación
<apiToken>: vaya a la esquina superior derecha, haga clic en el nombre de usuario, se abrirá la página del usuario en el lado izquierdo, puede encontrar el menú "Configurar". haga clic en el menú de configuración, en esta página puede ver el encabezado del token de API, haga clic en el token de Mostrar API
"userName" y "API Token" estarán presentes, si los valores no están presentes ingrese algún valor aleatorio y utilícelo en la url.
6) Realice cambios en su código fuente y envíe el código al repositorio. 7) se puede construir el trabajo " http://localhost:8080/jenkins/job/Gitcommittest/ " dash borad.
Funcionó para mí
En lugar de desencadenar construcciones de forma remota, cambie su configuración de proyecto de Jenkins para desencadenar compilaciones por sondeo. Jenkins puede sondear en base a una interna fija, o por una URL. El último es lo que desea omitir construcciones si no hay cambios para esa rama. Los detalles exactos están en la documentation . Básicamente, solo tiene que marcar la opción "Poll SCM", dejar la sección de programación en blanco y establecer una URL remota para presionar JENKINS_URL / job / name / polling.
Una pregunta: si tiene un entorno seguro de Jenkins es diferente de / build, el / polling URL requiere autenticación. Las instrucciones here tienen detalles. Por ejemplo, tengo un gancho Post-Recibir de Github que va al nombre de usuario: apiToken @ JENKIS_URL / job / name / polling.
Espero que esto ayude: http://nrecursions.blogspot.in/2014/02/how-to-trigger-jenkins-build-on-git.html
Solo es cuestión de utilizar Curl para desencadenar un trabajo de Jenkins usando los ganchos de git proporcionados por git.
El comando curl http://localhost:8080/job/someJob/build?delay=0sec
puede ejecutar un trabajo de Jenkins, donde someJob
es el nombre del trabajo de Jenkins.
Busque la carpeta "ganchos" en su carpeta oculta .git. Cambie el nombre del archivo "post-commit.sample" a "post-commit". Ábralo con el Bloc de notas, elimine la línea ": Nothing" y pegue el comando anterior en él.
Eso es. Siempre que realice una confirmación, Git activará los comandos posteriores a la confirmación definidos en el archivo.
Necesitas especificar la rama. Por defecto escucha cualquier cosa. Ver este post aquí:
No relacionado con Git pero a continuación, ayudaré con la configuración del trabajo de Jenkins en detalle con Mercurial. Puede ayudar a otros con problemas similares.
- Instalar el complemento de activación de URL
- Vaya a la página de configuración del trabajo y seleccione la opción de
Poll SCM
. Establezca el valor en* * * * *
- Marque la opción:
[URLTrigger] - Poll with a URL
.
Ahora puede seleccionar algunas opciones, como cambio de fecha de modificación, contenido de URL, etc. - En las opciones, seleccione Cambiar el contenido de la URL, seleccione la primera opción -
Monitor change of content
- Guarde los cambios.
Ahora, active algunos cambios en el repositorio mercurial mediante algunos controles de prueba
Observe que el trabajo de Jenkins ahora se ejecuta al detectar los cambios de SCM. Cuando la construcción se ejecuta debido a cambios mercuriales, entonces, verá el texto Started by an SCM change
. De lo contrario, el usuario que lo inició manualmente.
Otra posible solución al problema es usar una receta similar a la respuesta a la pregunta "Cómo activar una compilación solo si ocurren cambios en un conjunto particular de archivos" .
Para Gitlab , utiliza estos pasos:
- Vaya a la configuración de su proyecto> Web hooks
Ingrese la URL "Desarrollar ahora" de su proyecto Jenkins como URL de evento de inserción
http://server.com/jenkins/job/project_name/build?delay=0sec
por ejemplo- Haga clic en
Add Web Hook
y luegotest hook
Luego, cada vez que se compromete con el repositorio, se activa el enlace web y se crea una compilación. Asegúrese de configurar su espacio de trabajo de Jenkins para delete workspace before each build
para que obtenga una copia nueva del nuevo código.
Utilice el complemento de generador de solicitudes de extracción: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
Es realmente sencillo. A continuación, puede configurar webbits de GitHub para desencadenar compilaciones.
El complemento genérico Webhook Trigger se puede configurar con filtros para achi
Cuando se configura con
- Una variable llamada
ref
y expression$.ref
. - Un filtro con texto
$ref
y expresión de filtro como^(refs/heads/feature/.+)$
.
Entonces ese trabajo se disparará para que cada empuje domine. Sin votación.
Probablemente desee más valores del webhook para realizar la compilación. Simplemente agregue más variables, con JSONPath, para elegir lo que necesita.