POST gancho en Bitbucket

¿Cómo usar la URL POST en bitbucket en Jenkins privado?

He estado teniendo problemas con bitbucket y su post commit.

Descripción:

http://username:password@myjenkins.instance/job/myproject/build?token=mytoken

Tengo una instancia de jenkins que me gustaría activar para impulsar ciertos repositorys. Como a los jenkins se puede acceder desde fuera (la networking mundial), está protegido a través del sistema típico de usuario / contraseña.

Cuando trabajo con Github, puedo definir el nombre de usuario y la contraseña directamente en la URL. Al consultar los loggings de nginx, está claro que github puede convertir esa url para iniciar session en el usuario. Bitbucket no lo es.

Aquí hay algunos loggings nginx que muestran el problema.

Registros de publicaciones Bitbucket:

 - - "POST /job/myproject/build?token=mytoken HTTP/1.1" 403 216 "-" "Bitbucket.org" 

La parte interesante es el error 403. Acceso rechazado

Los mismos loggings para el gancho del poste de Github :

 - github - "POST /job/myproject/build?token=mytoken HTTP/1.1" 302 0 "-" "-" 

Como muestran los loggings, github es el nombre del usuario que creé con los buenos derechos para lanzar comstackciones.

¿Qué puedo hacer para habilitar el anzuelo de la publicación?

Si desea hacer que BitBucket active una ejecución de trabajo de Jenkins después de una confirmación en su repository, tiene dos opciones:

  • Use el gancho POST
  • Usa el gancho de Jenkins

Ambos usan la API de Jenkins para activar el trabajo.

Para el enlace POST, básicamente necesitas build la URL así:

 https://USER:APITOKEN@JENKINS_URL/job/JOBNAME/build?token=TOKEN 

dónde:

  • USUARIO : es el usuario de Jenkins que activará el trabajo
  • APITOKEN : es un token asociado a ese usuario para permitir el uso de la API, puede getlo desde la página de configuration del usuario en Jenkins
  • JENKINS_URL : la URL de tu server jenkins
  • JOBNAME : el nombre del trabajo
  • TOKEN : el token asociado al trabajo, debe agregarlo en la página de configuration del trabajo (habilitar desencadenantes remotos)

Lo bueno de esto es que puedes verificar si funciona solo usando curl desde la console.

También tenga en count que no hay contraseña en la url, tiene la API TOKEN en su lugar, esto es para evitar publicar su usuario y contraseña. Otra cosa que puede hacer para mejorar la security un poco, si tiene derechos de administrador en el server de Jenkins, cree un nuevo usuario con derechos de acceso para leer y crear trabajos, y úselo solo para esto. Por lo tanto, no tiene que publicar su propio usuario y token, que pueden tener derechos de administrador.

El gancho Jenkins funciona de la misma manera, construyendo la misma URL para usted, pero no tiene la oportunidad de probarla (por ejemplo, usando curl).

Esto se basa en estos documentos:

  • Jenkins Remote Access API (enviar trabajos)
  • Gestión de ganchos Jenkins (revisa los comentarios)
  • Enganchando BitBucket con Jenkins (esto es MUY útil si quieres probar el gancho de Jenkins)

Espero eso ayude.

Ger

Esto no responde realmente a tu pregunta, sino que sugiere otro enfoque. Tanto bitbucket.org como github.com son compatibles con las keys ssh.

Consulte " Configurar SSH para Git "

Es importante configurar ssh-agent (explicado en esa página), ya que sin esto se le pedirá que ingrese una frase de contraseña en lugar de nombre de usuario y contraseña.