Webhook del server Bitbucket a jenkins no publicado después de la actualización del alijo

Recientemente hemos actualizado Atlassian Stash 2.x a Atlassian Bitbucket Server 4.6.1. Muchos de los enganches post-commit simplemente ya no funcionaron porque sus complementos no se habían actualizado, pero uno, Bitbucket Server Webhook para Jenkins no se activa después de una confirmación. El gancho funciona cuando presiono el button "Trigger Jenkins" en su window de configuration, pero no se activa después de que se empuja una nueva confirmación.

Tuve que cavar un poco. Primero, activé el inicio de session de debugging del Bitbucket Server a través de la interfaz de usuario . En ese momento, vi algunos errores en los loggings que me indicaban un artículo sobre git hooks que no se activan .

A partir de ahí, fui a search en mi directory bitbucket_home las secuencias de commands que faltan y sus permissions de file. Si bien no encontré el script 20_bitbucket_callback, ¡encontré un script 20_stash_callback en el mismo directory!

El artículo sugería verificar sus permissions de files en el server, así que lo hice.

find . -name 20_stash_callback -printf "%p: %u:%g %m\n" find . -name pre-receive -printf "%p: %u:%g %m\n" find . -name post-receive -printf "%p: %u:%g %m\n"

Y he aquí, todos los scripts tenían los permissions 644, o "Read / write for root, read-only for everybody else". Cambié eso con un pequeño find ... -exec .

sudo -u someuser find . -name 20_stash_callback -type f -exec chmod 774 {} \; sudo -u someuser find . -name post-receive -type f -exec chmod 774 {} \; sudo -u someuser find . -name pre-receive -type f -exec chmod 774 {} \;

Todavía no estaba viendo mi build de jenkins, cuando se me ocurrió que podría necesitar cambiar el nombre del script de callback al descrito en la documentation.

 sudo -u someuser find . -name 20_stash_callback -type f -exec rename 20_stash_callback 20_bitbucket_callback {} \; 

¡Después de eso, mi gancho funcionó! Y hubo mucho regocijo.

Tenga en count que la count someuser utilizada anteriormente es el usuario local con el que se ejecuta nuestra instancia de stash. Asegúrese de cambiar eso para sus necesidades si usa las secuencias de commands anteriores.