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