¿Cómo activar una compilación remotamente desde Jenkins?
¿Cómo configurar Git post commit hook?
Mi requisito es que siempre que se realicen cambios en el repositorio de Git para un proyecto en particular, se iniciará automáticamente la compilación de Jenkins para ese proyecto.
En la sección de compilación del activador de Jenkins, seleccioné la compilación del activador de forma remota.
En el .git
directorio, el directorio de ganchos está ahí en el que tenemos que configurar el archivo post commit.
Estoy confundiendo cómo desencadenar una compilación desde allí (conozco alguna parte que deberíamos usar el comando curl).
curl cmbuild.aln.com/jenkins/view/project name/job/myproject/buildwithparameters?Branch=feat-con
He colocado este comando en mi directorio de enlaces de servidor git (post commit hook).
Cada vez que los cambios suceden en el repositorio, se ejecuta la compilación automatizada.
Quiero comprobar en el conjunto de cambios si en al menos un archivo Java está allí, la compilación debería comenzar.
Supongamos que los desarrolladores cambian solo archivos xml o archivos de propiedades que la compilación no debería comenzar.
Junto con xml
, supongamos que los .java
archivos están allí, la construcción debería comenzar.
Respuestas:
Como se menciona en "Las encuestas deben morir: desencadenar compilaciones de Jenkins desde un gancho de git ", puede notificar a Jenkins sobre una nueva confirmación:
Como se mencionó aquí , asegúrese de usar la dirección correcta para su servidor Jenkins:
Para reforzar ese último punto, ptha agrega en los comentarios :
También puede usar un gancho simple posterior a la recepción, como en " Compilaciones basadas en inserción usando Jenkins y GIT "
Sin embargo, este es un script específico del proyecto, y el autor menciona una forma de generalizarlo.
La primera solución es más fácil ya que no depende de la autenticación o de un proyecto específico.
Básicamente, su script de compilación puede:
git notes
) en la primera llamadaHEAD
de su candidato para la rama de construcción y la confirmación hace referencia elgit notes
'construir' (git show refs/notes/build
):git diff --name-only SHA_build HEAD
.git notes
'build
' aHEAD
.Mayo de 2016: cwhsu señala en los comentarios la siguiente URL posible:
Junio de 2016, polaretto señala en los comentarios :
fuente
yourRepo.git/hooks/post-receive
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
. El parámetro url debe coincidir exactamente con lo que tiene en la URL del repositorio de su trabajo de Jenkins. Al copiar ejemplos, omití el protocolo, en nuestro caso ssh: // y no funcionó.Espero que esto ayude: http://nrecursions.blogspot.in/2014/02/how-to-trigger-jenkins-build-on-git.html
Es solo una cuestión de usar
curl
para activar un trabajo de Jenkins usando los ganchos git proporcionados por git.El comando
puede ejecutar un trabajo de Jenkins, donde
someJob
está el nombre del trabajo de Jenkins.Busque la
hooks
carpeta en su carpeta oculta .git. Cambie el nombre delpost-commit.sample
archivo apost-commit
. Ábralo con el Bloc de notas, elimine la: Nothing
línea 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
Como la respuesta anterior mostró un ejemplo de cómo podría verse el gancho completo aquí está el código de mi gancho de trabajo posterior a la recepción:
En este caso, disparo trabajos de jenkins solo cuando presiono para dominar y no para otras ramas.
fuente
Quiero agregar a las respuestas anteriores que se vuelve un poco más difícil si la autorización de Jenkins está habilitada.
Después de habilitarlo, recibí un mensaje de error de que el usuario anónimo necesita permiso de lectura.
Vi dos posibles soluciones:
1: Cambiar mi gancho a:
2: configuración de autorización basada en proyecto.
Las soluciones anteriores tienen la desventaja de que tuve que exponer mi contraseña en el archivo de enlace. Inaceptable en mi caso.
El segundo funciona para mí. En la configuración de autenticación global, tuve que habilitar General> Leer para usuarios anónimos. En el proyecto que quería activar tuve que habilitar Job> Build and Job> Read for Anonymous.
Todavía no es una solución perfecta porque ahora puede ver el proyecto en Jenkins sin iniciar sesión. Puede haber una solución aún mejor utilizando el enfoque anterior con el inicio de sesión http, pero no lo he descubierto.
fuente