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

Получение на сервер удаленно с GitHub, удаленно

Я хочу настроить рабочий процесс развертывания с GitHub на свой сервер Digital Ocean. Для этого мне не нужно входить на сервер и вручную запускать git pull из репозитория моего сервера.

Мне известны хуки git, и я даже использовал их между моей локальной машиной и моим сервером, но мне нужен был способ развертывания с GitHub на сервер, чтобы я мог гарантировать паритет между репозиторием GitHub и репозиторием сервера.

Документации о том, как это сделать с неподдерживаемой хост-компанией (Digital Ocean), очень мало, поэтому я решил, что один из способов сделать это удаленно - это:

  1. Настроить пользователя на моем сервере.
  2. Создайте пару ключей SSH для этого пользователя
  3. Добавьте открытый ключ пользователя как Ключ развертывания в моем репозитории Github
  4. Затем, когда я хотел развернуть с помощью своего локального компьютера, я просто отправлял одну команду bash (что-то вроде cd /var/www/my-repo && git pull) через ssh на сервер

Проблема в том, что, похоже, я могу добраться только до пункта 3. Чтобы клонировать / вытащить репозиторий из GitHub, мне нужно запустить ssh-agent в моей оболочке. Без этого пользователь моего сервера не сможет получить данные с GitHub.

Очевидным решением может быть просто отправить eval `ssh-agent -s` командовать по проводам вместе с моим cd и git pull команды. Однако, немного поэкспериментировав, я понял, что ssh-агенты не были убиты, когда я завершил сеанс оболочки с сервером. Это означало бы, что я буду запускать бездействующие процессы ssh-agent каждый раз, когда я хочу развернуть.

У меня двоякий вопрос:

  1. Это ужасный способ развертывания (для довольно скромного сайта)?
  2. Есть ли хороший чистый сценарий bash, который может запускать и убивать ssh-agent при каждом выполнении?

Мой сервер - это сервер Debian.

В конце концов, я сделал две вещи для успешной аутентификации с помощью GitHub:

1) Создал ключ SSH без парольной фразы и использовал его .pub в качестве ключа развертывания в репозитории GitHub.

2) Убедился, что ключ использовался при подключении, добавив в ~ / .ssh / config:

host github.com HostName github.com IdentityFile ~/.ssh/my-rsa User git