Добрый день. Я студент первого курса. У меня есть проект на python (Flask).
Я настроил CI и сейчас пытаюсь настроить CD. Поднял на виртуальной машине убунту, установил докер (пока в нем проект не разворачивал). Ради теста решил просто запустить проект на убунте. Клонировал проект с репозитория, создал виртуальное окружение, скачал все зависимости, запустил проект. Работает.
Проблема в том, что я, видимо, не понимаю, как работает runner у gitlab'a. Потому что все команды, которые я прописывал вручную и которые привели меня к успеху, не работают, если их прописать в .yml-файле!
Я думал, что раннер, который так же установлен на сервере (на виртуалке), просто запускает команды в текущей системе из .yml-файла. Но это, видимо, не так.
У меня просто не получается реализовать CD, и я очень прошу вас помочь, так как пытаюсь разобраться во всем этом уже две недели...
Заранее всем огромное спасибо!
P.S. Прошу прощение за такое многословие, просто голова совсем уже не варит. Если не трудно, ткните носом, как это вообще работает и как в моем случае реализовать непрерывное развертывание.
1. Говорите полное название файлов, а те до конца понятно о каком именно yаml файле речь
2. Раннер-то запускает команды из .gitlab-ci.yml, но запуск зависит от того, что там именно написано
3. Поэтому, покажите .gitlab-ci.yml
4. Раннер зарегистрирован в Гитлабе и виден в списке раннеров проекта?
5. Прочтите документацию еще раз, она довольно понятно написана
В общем. Я разобрался со всем и все заработало.
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-сервере, где развернут докер (дальше буду разбираться с ним) и будет поднят мой сервис.