LINUX.ORG.RU

Настройка Gitlab-Runner в Gitlab

 ,


0

2

Добрый день, подскажите пожалуйста. Настраиваю связку Gitlab Runner (Windows) и Gitlab (Linux) у себя на сервере. Дело дошло до сборки и тут я начал сыпаться в знаниях, а именно проблема в выкачке репозитория на виртуалку сборщик. Не совсем понимаю как это правильно должно происходить

Я так думаю, что во всех проектах на Gitlab должен присутствовать пользователь с такой ролью, которая позволяет смотреть код проекта, например Developer. И в дальнейшем именно от имени этого пользователя у машины сборщика будет обращение к машине репозитарию. Общения сборщика и репозитария так понимаю должно происходить путём SSH, получается допустим создать в gitlab пользователя gitlab-runner-user я должен создать такого же пользователя на машине сборщике. После чего посредством ssh-keygen или какой нибудь GUI-овой программы нужно создать пару приватный и публичных ключей для пользователя gitlab-runner-user. Созданные ключи на сборщике я должен поместить в директорию

C:/Users/gitlab-runner-user/.ssh/id_rsa

Таким образом я получаю два файла id_rsa и id_rsa.pub

После в gitlab-е моему пользователю я должен добавить ключ в профиле, скопировав его содержимое из файла id_rsa.pub

Как мне кажется теперь на сборщике я имею приватный ключ, с помощью которого он должен обращаться к репозитарию, а на репозитарии есть проект, у которого есть пользователь с ролью developer и у которого есть публичный ключ для сравнения с приходящим запросом приватного ключа

Но опять скажу, я в этом плохо разбираюсь и поэтому обращаюсь вам за помощью, может всё выше я полную чушь написал.

На текущий момент скажите пожалуйста, правильно ли ход мысли у меня идёт?

Ответ на: комментарий от menangen

Тогда не совсем понимаю, а каким образом сборщик gitlab-runner при начале сборки, точнее при скачивании сначала репозитария отдаёт ключ?

Если уж совсем точно говорить, то проблема у меня в другом, у меня сборщик корневой репозитарий проекта успешно к себе скачивает, проблема начинается когда в проекте используются сабмодули на другие проекты в этом же репозитарии. В логах начинается писаться о том, что нет доступа к данным репозитариям (Host key validation error)

strelkovandreyv ()
Ответ на: комментарий от strelkovandreyv

Он не ключ отдавать должен, а свой приватный ключ загружать в агент, через который идёт установление SSH. В Линукс это bash (ssh-add команда), а в винде putty, к примеру. Почитай про SSH подробнее, а лучше перейди на HTTPS с сертификатом от LetsEncrypt.

menangen ★★★★★ ()

Вообще для сборщиков лучше использовать deploy keys. Сборщики каждый имеет свой ключ. Публичная часть его прописывается в deploy key проекта (Настройки/Репозитарий/Ключи развертывания(deploy keys)) и сборщик получает доступ к проекту. Нет нужды создавать дополнительных пользователей.

yetanother ()
Ответ на: комментарий от yetanother

Хм, я через PuTTY Key Generator создал пару ключей (типа RSA) без пароля. Сохранил оба в виде файлов id_rsa.pub и id_rsa (приватный) Публичный ключ в админке GitLab добавил в Deploy keys, после чего в нужных проектах активировал их. Приватный ключ в виде файл id_rsa скопировал в папку пользователя.ssh
Также на всякий запустил PAgent где добавил приватный ключ.

Сам gitlabrunner (его служба) настроена на запуск от учётной записи в которую был помещен приватный ключ.

Пошёл запускать сборку проекта, в диспетчере задач видно что gitlab-runner запускается от нужной учётной записи, и соответственно git.exe также запускается от этой учётной записи

Но в логах сборки:

Cloning into 'C:/gitlab-runner/builds/p2zPDx_W/0/strelkov/example_project/ActiveDirectory'...
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'git@gitlab.vz:strelkov/ActiveDirectory.git' into submodule path 'C:/gitlab-runner/builds/p2zPDx_W/0/strelkov/example_project/ActiveDirectory' failed
Failed to clone 'ActiveDirectory'. Retry scheduled
strelkovandreyv ()
Ответ на: комментарий от strelkovandreyv

Из лога видно, что гитлаб не знает этого ключа. Это 100%. Но подробнее я не скажу.

У меня похожее возникает когда я на другой машине пытаюсь склонировать проект, и на этой машине есть другой приватный ключ по умолчанию. Тогда я должен добавить нужный ключ вручную. Я не знаю как на оффтопике это делается, на линуксе я ее решаю добавлением приватного ключа командой:

$ ssh-add ~/.ssh/gitlab_private_id_rsa
Хотя у тебя возможно другая причина. Но факт на лицо, что гитлаб не знает ключ, который используется этой учеткой.

yetanother ()