Содержание
Когда вы работаете с Git-репозиторием, ваш проект может активно изменяться многими людьми. Некоторым из них нельзя доверять, поскольку они могут быть новыми сотрудниками или что-то в этом роде. В этом случае, если им нужно выполнить git pull на сервере, чтобы обновить изменения коммита на вашем производственном сервере, вы можете не захотеть, чтобы все знали пароль хранилища. Еще один случай, когда вы не хотите предоставлять пароль хранилища каждый раз, когда вы делаете git pull
или же git clone
Автоматизированы развертывания.
Вот почему в Gitlab существует функция «ключи развертывания». Ключом развертывания является SSH-ключ, который хранится на вашем сервере и предоставляет доступ к одному репозиторию Gitlab. Этот ключ прикрепляется непосредственно к хранилищу, а не к личной учетной записи пользователя. В этой статье мы покажем вам шаг за шагом, как вы можете автоматизировать процесс развертывания вашего проекта, размещенного на Gitlab.
1. Найдите или создайте ключ SSH для вашего сервера
Первое, что вам нужно сделать, это проверить, есть ли на вашем сервере открытый ключ, созданный в .ssh
каталог пользователя на сервере, поэтому запустите сеанс SSH на вашем сервере и введите следующую команду:
cat ~/.ssh/id_rsa.pub
Это будет автоматически искать в папке вашего пользователя, который в нашем случае /home/vagrant/.ssh
, если вывод команды показывает строку, начинающуюся с ssh-rsa, то у вас уже есть ключ SSH, который вы можете использовать для добавления в свой репозиторий, поэтому Вы можете перейти к шагу 2. Если вместо этого вы получите вывод: cat: ~ / .ssh / id_rsa.pub: такого файла или каталога нет, то сначала вам нужно будет создать ключ SSH. Вы можете создать ключ SSH в Ubuntu через SSH с помощью следующей команды (сначала перейдите в каталог .ssh и введите:)
ssh-keygen -t rsa
Чтобы упростить процесс, мы не будем добавлять ключевую фразу для ключа SSH, поэтому, как уже упоминалось в мастере создания, просто нажмите ввод, чтобы не использовать ключевую фразу:
Как показано на рисунке, у нас нет id_rsa
а также id_rsa.pub
файл в нашем .ssh
каталог. Этот ключ работает как «проход», который позволяет клонировать / извлекать ваш проект на текущем сервере, пока на этом этапе он ничего не делает, поэтому вам нужно будет выполнить другие шаги.
2. Настройте SSH-клиент, чтобы найти ваш частный SSH GitLab на сервере
В качестве следующего шага вы должны установить, что при клонировании из Gitlab ключ развертывания должен использоваться в качестве аутентификации вместо имени пользователя и пароля. Для этого вам необходимо убедиться, что ssh-agent
включается с помощью следующей команды:
eval $(ssh-agent -s)
Затем вы можете продолжить добавлять свой ключ в реестр SSH, используя следующую команду:
# Add your private key
ssh-add ~/.ssh/id_rsa
Чтобы сохранить эти настройки, вам нужно сохранить их в файле конфигурации. Обычно на клиентах OpenSSH вы можете настроить это в ~/.ssh/config
файл. Если файл не существует, вы можете создать его:
# Go to SSH directory
cd ~/.ssh/
# Create the config file
# alternatively create the file using SFTP
# or in the way you want, we are using touch
touch config
И зарегистрируйте свой ключ в файле. В этом уроке мы добавляем один ключ SSH с веб-сайта Gitlab (не являющаяся самостоятельной версией), поэтому содержимое нашего файла конфигурации будет:
# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa
Поскольку у вас может быть несколько проектов на одном сервере или в проекте, который использует разные репозитории, которые необходимо обновить, вы можете без проблем реализовать несколько ключей SSH в одном файле, следуя обозначениям:
# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename-01
# Private GitLab server
Host gitlab.mycompany.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename
3. Добавьте ключ сервера в качестве ключа развертывания в конфигурации репозитория.
Теперь вам нужен открытый ключ вашего сервера (созданный на шаге 1), на этом шаге вы говорите Gitlab: «Эй, если кто-то использует этот SSH-ключ для клонирования, позвольте ему это сделать». Вы можете получить содержимое открытого файла с помощью текстового редактора через SFTP или просто распечатав вывод файла с помощью SSH, используя следующую команду:
cat ~/.ssh/id_rsa.pub
Это вывело бы в нашем случае содержимое открытого ключа:
Сохраните эту длинную строку в буфере обмена, так как она понадобится вам для вставки в Gitlab. В качестве следующего доступа к настройкам вашего репозитория в Gitlab, в нашем случае, так как мы используем несамостоятельную версию Gitlab, конфигурация для ключей развертывания находится в https://gitlab.com///settings/repository
, Меню для добавления нового ключа развертывания выглядит следующим образом:
Здесь вам нужно будет только добавить содержимое id_rsa.pub
файл, укажите заголовок и решите, может ли сервер использоваться для передачи изменений или нет (обычно не проверяется, поскольку это производственный процесс). После того, как ключ добавлен в ваш репозиторий, вы сможете теперь клонировать / извлекать свой репозиторий на сервере развертывания.
4. Клонировать и вытащить репозиторий для тестирования
В качестве последнего шага, чтобы проверить, все ли прошло правильно, вы можете клонировать свой репозиторий, чтобы увидеть, запрашиваются ли учетные данные репозитория или нет, в случае если, пожалуйста, прочитайте учебник еще раз и проверьте, что вы сделали неправильно. В противном случае вы сможете клонировать свой проект с помощью следующей команды:
Заметка
Не забудьте клонировать через SSH, а не HTTPS, в противном случае вас могут попросить ввести учетные данные.
git clone git@gitlab.com:username/repositoryname.git
# Or once the project is clone, pull changes
git pull origin master
Сделав это, вы, возможно, заметили, что вам не нужно было вводить ни имя пользователя Gitlab, ни пароль благодаря ключу развертывания!