Bitbucket сервер webhook, чтобы Дженкинс не публиковал после обновления из хранилища
Недавно мы обновили Atlassian Stash 2.x до Atlassian Bitbucket Server 4.6.1. Многие хуки после фиксации просто перестали работать, потому что их плагины не были обновлены, но одна из них, Bitbucket Server Webhook для Jenkins, не запускается после фиксации. Хук срабатывает, когда я нажимаю кнопку "Триггер Дженкинс" в окне конфигурации, но он не срабатывает после того, как новый коммит нажат.
1 ответ
Я должен был покопаться. Сначала я включил журнал отладки BitbucketServer через пользовательский интерфейс. В тот момент я увидел некоторые ошибки в журналах, которые указывали на статью о том, что git hooks не запускаются.
Оттуда я начал искать в своем каталоге bitbucket_home отсутствующие сценарии и их права доступа к файлам. Хотя я не нашел сценарий 20_bitbucket_callback, я нашел сценарий 20_stash_callback в том же каталоге!
В статье предлагалось проверить права доступа к файлам на сервере, так я и сделал.
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"
И вот, все сценарии имеют разрешения 644 или "Чтение / запись для root, только для чтения для всех остальных". Я изменил это с небольшим 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 {} \;
Я все еще не видел, как мой Дженкинс строит огонь, когда мне пришло в голову, что мне может понадобиться переименовать скрипт обратного вызова в тот, который описан в документации.
sudo -u someuser find . -name 20_stash_callback -type f -exec rename 20_stash_callback 20_bitbucket_callback {} \;
После этого мой крючок сработал! И было много радости.
Обратите внимание, что someuser
Используемая выше учетная запись - это локальный пользователь, под которым работает наш экземпляр stash. Убедитесь, что изменили это для своих нужд, если вы используете вышеупомянутые сценарии.