Estoy tratando de configurar Jenkins-ci para un proyecto usando GitHub. Ya configuré Jenkins con los complementos apropiados. Quiero que Jenkins ejecute scripts de compilación solo cuando alguien en el proyecto se esfuerce por dominar. Hasta ahora he podido configurarlo para que se active una compilación cada vez que alguien empuje 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 falta este detalle en particular ... ¿tiene algo que ver con las encuestas? ¿O debería trabajarse en el lado de Git, de modo que Git solo active a Jenkins cuando master
se cambie?
Respuestas:
Como ya señaló gezzed en su comentario, mientras tanto hay una buena solución (descrita en Polling must die: desencadenar compilaciones de Jenkins desde un gancho Git ):
Establezca el desencadenador de compilación del trabajo de Jenkins en Poll SCM , pero no especifique una programación.
Cree un activador posterior a la recepción de GitHub para notificar la URL
Esto activará todas las compilaciones que sondeen el repositorio Git especificado.
Sin embargo, el sondeo en realidad verifica si se ha enviado algo a la rama utilizada.
Funciona perfectamente
fuente
A partir de la versión 0.5, el complemento GitHub para Jenkins puede desencadenar una compilación cuando se empuja un cambio a GitHub .
fuente
En lugar de desencadenar compilaciones forma remota, cambie la configuración de su proyecto Jenkins para desencadenar compilaciones mediante sondeo.
Jenkins puede sondear en función de un interno fijo, o por una URL. Esto último es lo que desea omitir compilaciones si no hay cambios para esa rama. Los detalles exactos están en la documentación. . Esencialmente, solo necesita marcar la opción "Encuesta SCM", dejar la sección de programación en blanco y establecer una URL remota para presionar JENKINS_URL / job / name / polling.
Un problema si tiene un entorno Jenkins seguro es diferente
/build
, la/polling
URL requiere autenticación. Las instrucciones aquí tienen detalles. Por ejemplo, tengo un enlace GitHub Post-Receive ausername:apiToken@JENKIS_URL/job/name/polling
.fuente
Para GitLab , use estos pasos:
Ingrese la URL "Build Now" de su proyecto Jenkins como una URL de evento push:
http://server.com/jenkins/job/project_name/build?delay=0sec
por ejemploAdd 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 Jenkins para
delete workspace before each build
obtener una copia nueva del nuevo código.fuente
No está 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 un problema similar.
Poll SCM
opción. Establezca el valor en* * * * *
[URLTrigger] - Poll with a URL
. Ahora puede seleccionar algunas opciones como cambio de fecha de modificación, contenido de URL, etc.Monitor change of content
Ahora, active algunos cambios en el repositorio de Mercurial mediante algunos registros de prueba.
Vea que el trabajo de Jenkins ahora se ejecuta detectando los cambios de SCM. Cuando se ejecuta la compilación debido a cambios de Mercurial, verá texto
Started by an SCM change
. De lo contrario, el usuario que lo inició manualmente.fuente
Espero que esto ayude: cómo activar una compilación Jenkins en Git commit
Es solo una cuestión de usar curl para activar un trabajo de Jenkins usando los ganchos Git proporcionados por Git.
El comando
curl http://localhost:8080/job/someJob/build?delay=0sec
puede ejecutar un trabajo de Jenkins, dondesomeJob
está 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 ": Nada" 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.
fuente
Integración continua con Jenkins, después de que el código se envíe al repositorio desde el comando / GUI de Git:
.git/hooks
carpeta.La
hooks
carpeta contiene los pocos archivos. Verifique el "post-commit". Si no está presente, cree un archivo, "post-commit" sin una extensión de archivo:Edite el archivo "post-commit" con el siguiente comando. Asegúrese de que esté presente en su carpeta de enlaces de código fuente local.
Ejemplo:
5)
userName
: Nombre de usuario JenkinsjobName
: Nombre del trabajo de la compilaciónapiToken
: Para obtener su token API, vaya a su página de usuario Jenkins (arriba a la derecha en la interfaz). Está disponible en el menú "Configurar" a la izquierda de la página: "Mostrar token API"Realice cambios en su código fuente y confirme el código en el repositorio.
Tu trabajo
http://localhost:8080/jenkins/job/Gitcommittest/
debería estar construyendo.fuente
Necesita especificar la rama. Por defecto escucha cualquier cosa. Vea la publicación del blog Hudson: complementos de Git y Maven .
fuente
Complemento de desencadenante webhook genérico se puede configurar con filtros para lograr esto.
Cuando se configura con
ref
y expresión$.ref
.$ref
y expresión de filtro como^refs/heads/master$
.Entonces ese trabajo se activará por cada impulso a
master
. No hay encuestas.Probablemente desee más valores del webhook para realizar la compilación. Simplemente agregue más variables, con JSONPath, para elegir lo que necesita.
Aquí hay algunos casos de uso: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd
fuente
En mi organización actual, no hacemos esto en master pero lo hacemos tanto en desarrollo como en lanzamiento / ramas (estamos usando Git Flow), para generar compilaciones de instantáneas.
Como estamos usando una tubería de múltiples ramificaciones, hacemos esto en el archivo Jenkins con la sintaxis when {} ...
Esto se detalla en esta publicación de blog: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
fuente
Las respuestas anteriores son correctas, pero me dirijo a ellos que son novatos aquí por su simplicidad
especialmente para configurar el disparador de compilación para la canalización:
Considere que tiene dos ramas de Github: 1.master, 2.dev y Jenkinsfile (donde se escribe el script de canalización) y hay otros archivos disponibles en cada rama
Configurar nuevo proyecto de canalización (para rama de desarrollo)
## 1.Integración de código con git-plugin y enfoque basado en cron Prerrequisito Se debe instalar el complemento git y configurarlo con su nombre y correo electrónico
## 2.Integración de código: github-plugin y enfoque webhook Requisito previo Se debe instalar el complemento Github y se debe configurar el servidor Github, se debe probar la conexión si no considera la siguiente configuración
Configurar el complemento Github con cuenta en Jenkins
Sección GitHub Agregue el servidor Github si no está presente URL de la API: https://api.github.com Credenciales: Agregue texto secreto (Haga clic en el botón Agregar: seleccione el tipo de texto secreto) con valor Token de acceso personal (Genere desde sus cuentas Github—> configuración -> configuración del desarrollador—> token de acceso personal—> agregar token—> verificar alcances—> copiar el token) Probar conexión—> Verificar si está conectado a su cuenta de Github o no Marcar la casilla de verificación con la subsección Administrar ganchos por adelantado simplemente seleccione credencial anterior para 'secreto compartido'
Agregue webhook si no lo agregó a su repositorio por
http: // Public_IP: Jenkins_PORT / github-webhook /
Si tiene el complemento de solicitudes Github Pull, configúrelo también con la URL publicada de Jenkins.
fuente
Utilice el complemento del generador de solicitudes de extracción: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
Es realmente sencillo. Luego puede configurar los webhooks de GitHub para activar compilaciones.
fuente
Mi solución para un servidor git local: vaya al directorio de enlace del servidor git local, ignore el archivo update.sample existente y cree un nuevo archivo literalmente llamado "actualización", como:
La declaración de eco se mostrará debajo del resultado de git push, el token se puede tomar de la configuración de trabajo de jenkins, navegue para encontrarlo. Si no se llama al archivo "actualizar", intente con otros archivos con el mismo nombre sin la extensión "muestra".
Eso es todo lo que necesitas
fuente