@Sazoks

Как работает GitLab Runner?

Добрый день. Я студент первого курса. У меня есть проект на python (Flask).
Я настроил CI и сейчас пытаюсь настроить CD. Поднял на виртуальной машине убунту, установил докер (пока в нем проект не разворачивал). Ради теста решил просто запустить проект на убунте. Клонировал проект с репозитория, создал виртуальное окружение, скачал все зависимости, запустил проект. Работает.
Проблема в том, что я, видимо, не понимаю, как работает runner у gitlab'a. Потому что все команды, которые я прописывал вручную и которые привели меня к успеху, не работают, если их прописать в .yml-файле!
Я думал, что раннер, который так же установлен на сервере (на виртуалке), просто запускает команды в текущей системе из .yml-файла. Но это, видимо, не так.
У меня просто не получается реализовать CD, и я очень прошу вас помочь, так как пытаюсь разобраться во всем этом уже две недели...
Заранее всем огромное спасибо!

P.S. Прошу прощение за такое многословие, просто голова совсем уже не варит. Если не трудно, ткните носом, как это вообще работает и как в моем случае реализовать непрерывное развертывание.
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Sazoks Автор вопроса
В общем. Я разобрался со всем и все заработало.
1) Да, как я и говорил, раннер выполняет команды на установленной машине. Но! В моес случае то и требовалось, и чтобы это получить нужно было указать исполнитель shell. Т.е. если указать docker, то, судя по логам, будет запускается докер контейнер и команды будут исполняться в нем.
2) Я заметил очень странно поведение, что иногда запускался мой раннер с моим исполнителем, а иногда вообще какой-то другой с исполнителем docker+machine. Помогло отключение дефолтных раннеров (их там 15 штук).
3) У меня сервер запущен на убунту под обычным пользователем. И выполнение некоторых команд требовало использование sudo, а при использовании sudo запрашивается пароль. Можно отключить запрос пароля для пользователя gitlab-runner, отредактировав sudo через sudo visudo. В самый конец это команды нужно прописать %username% ALL=(ALL:ALL) NOPASSWD: ALL, где %username%, в моем случае, - это gitlab-runner.

Все эти действия привели меня к тому, что теперь команды, прописанные в .gitlab-ci.yml, выполняются на моем ubuntu-сервере, где развернут докер (дальше буду разбираться с ним) и будет поднят мой сервис.

Надеюсь, кому-то пригодится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы