Пытаюсь настроить hook, который бы запускал команду git pull для развертывания на тестовом сервере после пуша в репозиторий GitLab. Столкнулся с тем, что команда git pull не выполняется, если запускать ее из shell скрипта средствами php, т.е я использовал следующую конструкцию: exec('sh .hooks/gitlab-webhook-push.sh')
Сама команда exec работает и если я, напр-р, пытаюсь выполнить команду whoami в скрипте gitlab-webhook-push.sh, то все работает. Проблема именно с тем, что не отрабатывает команда git pull. Если выполняю ее из консоли, то все работает. Кто-нибудь сталкивался?
Проблема заключалась именно в том, что скрипт запускался из под www-data и необходимо было генерировать отдельные ключи для ssh для данного пользователя.
У меня настроена запись в лог файл. Если запускаю команду exec('sh .hooks/gitlab-webhook-push.sh', $output) и в gitlab-webhook-push.sh стоит git status, то я вижу, что команда работает, т.к идет запись в лог. Если в скрипте git pull, то в логах пусто и новые коммиты, тоже не добавляются в репозиторий.
Странная история. Я попробовал запустить файл gitlab-webhook-push.php, в котором вызывается команда exec('sh .hooks/gitlab-webhook-push.sh), через консоль, т.е использовал в консоли команду php gitlab-webhook-push.php и у меня все сработало. Если же делаю push или пытаюсь вызвать скрипт через url, то не работает. В логи ничего не пишет.