steps - Cómo activar un trabajo Jenkins 2.0 Pipeline desde una solicitud de extracción de GitHub
jenkinsfile (4)
El flujo en pocas palabras puede ser así:
Usted crea su canalización como código y la guarda en un archivo llamado
Jenkinsfile
en el directorio raíz de su proyecto. Ese código debe describir cómo se construirá tu proyecto. Vea aquí los ejemplos: https://jenkins.io/doc/pipeline/examples/Luego, debe crear un nuevo elemento de "Proyecto de tubería multibranquio" en su Jenkins. Debe configurarlo para escanear su repo del paso 1.
Ahora, cada vez que abra una nueva sucursal de relaciones públicas en el repositorio del paso 1, la sucursal se desprotegerá y se construirá de acuerdo con las instrucciones de Jenkinsfile que se incluyen con ella. Puede configurar más condiciones en lo que se construye y cuándo, si así lo desea.
Notas:
Documentación de ejemplo del "Proyecto multibranch Pipeline": Documentation (desplácese hacia abajo hasta Proyectos multibranch Pipeline)
Tenga en cuenta que hacer que el complemento cree un PR después de recomendarlo en el PR no funciona. Hay una discusión que analiza esto aquí: https://github.com/jenkinsci/gitlab-plugin/issues/298 Hay soluciones alternativas (también descritas en esa discusión) pero son bastante complicadas de configurar.
Parece que GitHubPullRequestBuilder no es compatible con los trabajos de Jenkins v2.0 pipeline.
¿Cómo configura un trabajo de canalización para ser activado desde un evento de solicitud de extracción de GitHub?
La documentación sobre este tema es escasa y no puedo encontrar ningún ejemplo de esto. ¿O es mejor crear un enlace web en GitHub para activar el trabajo de canalización en el evento PR?
Siga los pasos a continuación para activar el trabajo de Jenkins automáticamente en la solicitud de extracción generada en GitHub
- Cree un enlace web en GitHub, es decir, http: /// generic- webhook-trigger / invoke
- Tipo de contenido: aplicación / json
- Seleccionar solicitud de extracción como evento Ahora la parte de configuración de github está lista.
Configuración de trabajo Jenkins
Descargar Generic Webhook Trigger en Jenkins
Configuración de Git Hub en Jenkins
7.Seleccione Generic Webhook Trigger en jenkins 8. Generic Webhook Trigger Configuration en Jenkins y siga el paso 9
9.Después de realizar el paso 7, el trabajo de Jenkins obtendrá un activador en PullRequest 10. Se requiere el paso 8 para obtener información de la solicitud de extracción. Carga.
Gracias
Tuve un problema similar. Esto es lo que funcionó para mí.
Pre-requisitos
- Jenkins ver. 2+ (estaba usando Jenkins 2.60)
- Cuenta Github (o empresa Githhub)
- Tu github y Jenkins deben poder hablar entre ellos.
En github
- crear un github Personal Access Token (PAT) con derechos relevantes.
- Para su repo, cree un webhook con
- URL como
YourJenkinsURL/github-webhook/
- Seleccione ''Permitirme seleccionar eventos individuales'' y marque ''Solicitud de extracción''
- URL como
- Agregue un archivo Jenkins a la carpeta raíz de su repositorio. Para propósitos de prueba, puedes poner contenido como un hola mundo básico como el siguiente
pipeline { agent any stages { stage(''Test'') { steps { echo ''Hello World ...'' } } } }
En Jenkins
- Instalar el complemento GitHub Pull Request Builder . (También necesita el complemento "Github", pero normalmente debería instalarse como parte de Jenkins ver 2+)
- Jenkins - Credenciales
- Agregue github Personal Access Token (PAT) como una credencial de ''texto secreto''.
- Agregue github username-password como credencial ''username-password''.
- Gestionar Jenkins - Configurar sistema
- Github - Servidores Github: esto es parte del complemento Github. Agrega un servidor github. ''API URL'' Será predeterminado en https://api.github.com . Si está utilizando github de empresa, sustitúyalo por url de github de empresa seguido de / api / v3. Para credencial seleccione la opción PAT. Probar la conexión. ''Gestionar ganchos'' está marcado.
- GitHub Pull Request Builder: para ''URL de la API del servidor GitHub'' use la misma url que se especifica en la sección Servidor Github. Deje ''Secreto compartido'' en blanco. Para las credenciales use la credencial ''nombre de usuario-contraseña''. Pruebas de credenciales para asegurar su funcionamiento. En mi configuración, se marcó ''Auto-administrar webhooks''.
- Pipeline Job
- Crea un nuevo elemento usando la opción ''Pipeline''. Nota: este es el trabajo de vainilla Pipeline, no Multibranch Pipeline.
- Sección general: Marque ''Proyecto Github'' - URL del proyecto: Ingrese su url de github repo
- Construir disparadores: verifique ''GitHub Pull Request Builder''
- Para la opción de ''Credenciales de la API de GitHub'', seleccione la opción que configuró para el generador de solicitudes de extracción de GitHub en la pantalla ''Administrar Jenkins - Configurar sistema''
- Para la lista de administradores: añada su nombre de usuario
- Verifique Usar ganchos de github para activar la construcción
- Tubería:
- Seleccione ''Pipeline Script from SCM''. Tenga en cuenta que esto supone que la carpeta raíz de su repositorio contendrá un ''Archivo Jenkins''
- SCM: seleccione ''Git''
- Repositorios - ingrese el detalle del repositorio. Para las credenciales, use las credenciales basadas en ''nombre de usuario y contraseña''.
- Haga clic en Avanzado y agregue refspec como
+refs/pull/*:refs/remotes/origin/pr/*
refs+refs/pull/*:refs/remotes/origin/pr/*
- Rama - debería ser
${sha1}
- Ruta de Script: por defecto a Jenkinsfile , dejar como está.
- Pago ligero: desmarque esto ( https://github.com/jenkinsci/ghprb-plugin/issues/507 )
Eso es. Estas listo. La creación de una RP en la rama maestra de su repositorio ahora debe activar su trabajo Jenkins Pipeline
Algunas observaciones
- El reenvío de la carga útil de webhook de un PR desde github no activa el canal, sino que abre un nuevo PR o incluso vuelve a abrir un PR cerrado en github, activa el trabajo del ducto
- En la Configuración de trabajos de canalización, si elige “Secuencia de comandos de canalización” y pega el script de canalización allí, el trabajo no se activa.
La forma más sencilla de utilizar Pipeline con las solicitudes de extracción de GitHub es colocar el script en su repositorio con el nombre de Jenkinsfile
y luego instalar el complemento GitHub Branch Source . Documentation