Я хочу настроить рабочий процесс развертывания с 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`
по сети вместе с моим компакт-диском. Команды
и git pull
. Однако, немного поэкспериментировав, я понял, что ssh-агенты не были убиты, когда я завершил сеанс оболочки с сервером. Это означало бы, что я буду запускать бездействующие процессы ssh-agent каждый раз, когда я хочу развернуть.
У меня двоякий вопрос:
Мой сервер является сервером Debian.
В конце концов, я сделал две вещи для успешной аутентификации с помощью GitHub:
1) Создал SSH-ключ без парольной фразы и использовал его .pub как Deploy Key в репозитории GitHub.
2) Убедитесь, что ключ использовался при подключении, добавив следующее в ~ / .ssh / config :
host github.com
HostName github.com
IdentityFile ~ / .ssh / my-rsa
Пользователь git