Вытащить на сервер удаленно из 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.

1 ответ

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

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

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

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

Другие вопросы по тегам