Назад | Перейти на главную страницу

Использование sudo в хуке Git для установки разрешений после развертывания

Я запускаю несколько сайтов на Ubuntu и настраиваю новый рабочий процесс развертывания следующим образом (в примере используется промежуточная среда):

На моей машине разработчика я делаю git push staging который отправляет в пустой репозиторий и запускает post-receive крючок, который выполняет следующие действия:

Вышеуказанное работает нормально, за исключением части настройки разрешений.

Поскольку мне нужно использовать sudo сделать chgrp и chown, Я попытался добавить в /etc/sudoers:

myusername ALL=(ALL:ALL) NOPASSWD: /path/to/post_deploy.sh

Но при выполнении git push Я получаю такую ​​ошибку:

remote: sudo: no tty present and no askpass program specified

Если я сбегу post_deploy.sh прямо с развернутого сервера у меня проблем нет.

Как я могу запустить post_deploy.sh скрипт из хука git? Я не против ввести дополнительный пароль, но, судя по тому, что я прочитал, askpass не для командной строки (я прав?).

Это проблема с файлом / etc / sudoers, в котором есть следующая запись:

Defaults requiretty

Подробно в ЭТА ПОЧТА

Есть два варианта, закомментируйте Defaults requiretty настройки из / etc / sudoers или используйте выделение псевдо-tty (-t) аргумент в пользу ssh.

Попробуйте сделать следующее в своем сценарии после получения:

ssh -t 127.0.0.1 "sudo chown user /path/to/pushfile"

Хотя вам придется ssh предварительно настроенные общие ключи и запускайте его один раз вручную, чтобы добавить запись к известным хостам (или найдите аргумент, чтобы игнорировать это).