Я хочу настроить рабочий процесс развертывания с GitHub на свой сервер Digital Ocean. Для этого мне не нужно входить на сервер и вручную запускать git pull
из репозитория моего сервера.
Мне известны хуки git, и я даже использовал их между моей локальной машиной и моим сервером, но мне нужен был способ развертывания с GitHub на сервер, чтобы я мог гарантировать паритет между репозиторием GitHub и репозиторием сервера.
Документации о том, как это сделать с неподдерживаемой хост-компанией (Digital Ocean), очень мало, поэтому я решил, что один из способов сделать это удаленно - это:
cd /var/www/my-repo && git pull
) через ssh на серверПроблема в том, что, похоже, я могу добраться только до пункта 3. Чтобы клонировать / вытащить репозиторий из GitHub, мне нужно запустить ssh-agent в моей оболочке. Без этого пользователь моего сервера не сможет получить данные с GitHub.
Очевидным решением может быть просто отправить eval `ssh-agent -s`
командовать по проводам вместе с моим cd
и git pull
команды. Однако, немного поэкспериментировав, я понял, что ssh-агенты не были убиты, когда я завершил сеанс оболочки с сервером. Это означало бы, что я буду запускать бездействующие процессы ssh-agent каждый раз, когда я хочу развернуть.
У меня двоякий вопрос:
Мой сервер - это сервер Debian.
В конце концов, я сделал две вещи для успешной аутентификации с помощью GitHub:
1) Создал ключ SSH без парольной фразы и использовал его .pub в качестве ключа развертывания в репозитории GitHub.
2) Убедился, что ключ использовался при подключении, добавив в ~ / .ssh / config:
host github.com
HostName github.com
IdentityFile ~/.ssh/my-rsa
User git