Здравствуйте.
Gitlab-Runner:
1. Debian 10
2. Docker, Docker-Compose
Приложение:
1. Сборка через Make
2. В зависимостях запуск контейнеров
Ситуация:
1. В докере во врема сборки запускаются утилиты которые оперируют в текущей папке приложения, подключенной через volume.
2. Когда это происходит локально на ПК от имени root, все впорядке.
3. Когда запускаю через ci (shell executor) на серваке, клонирование происходит от имени gitlab-runner, а созданные файлы во время запуска контейнера имеют права root.
4. При запуске следующего шага или запуска теста из кэша ранера, артефакты созданные в контейнерах из под root не могут быть использованы ранером из за Permission Denied.
Что пробовал:
1. Давать SU права и доабавлять в группу юзера gitlab-runner.
Каждый раз вываливает системную интеракцию где просит подтвердить пароль при запуске контейнера.
2. Давать права запуска docker от gitlab-runner.
В контенейнере Permission Denied на все команды с примонтированными volume.
3. Запускать образ с юзером gitlab-runner типа
docker run --user $(id a gitlab-runner)
.
Тоже самое что и в предыдущем случаем, нет прав на работу с файлами в примонтированном разделе, тк на хосте они из под root.
Нашел полурабочий костыль для решения:
В CI скрипте в секции pre_clone_script выполнять каждый раз
chown -r gitlab-runner
для каждой папки с который работали контейнеры из под root. Но это супер криво.
Подскажите как быть? Как сделать папки созданные в контейнере доступными из gitlab-runner?
.gitlab-ci.yml
stages:
- build
- test
- compile
- deploy
build:test:
stage: build
script:
- cd $CI_PROJECT_DIR && make && make run
artifacts:
paths:
- node_modules/
- docker/
- public/
Первая из зависимостей Make
docker run --rm --tty -v ${PWD}:/var/www/html node:14-slim \
bash -c "cd /var/www/html && npm install && npm run build"
Прошел некэшированный билд...................
41 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
59 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
docker-compose up -d --force-recreate --remove-orphans
Creating network "default" with driver "bridge"
Creating mysql ...
Creating phpmyadmin ...
Creating php ...
Creating nginx ...
Creating selenium ...
Uploading artifacts for successful job
00:34
Uploading artifacts...
Runtime platform arch=amd64 os=linux pid=4115 revision=e95f89a0 version=13.4.1
vendor/: found 4680 matching files and directories
node_modules/: found 14017 matching files and directories
docker/: found 13 matching files and directories
public/: found 111 matching files and directories
Uploading artifacts as "archive" to coordinator... ok id=799586895 responseStatus=201 Created token=BrjnoUTr
Cleaning up file based variables
00:00
Job succeeded
Тесты после него проваливаютсяRunning with gitlab-runner 13.4.1 (e95f89a0)
on runner runner
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:00
Running on runner...
Getting source from Git repository
00:09
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /home/gitlab-runner/builds/runner/0/user/default/.git/
Checking out dfa9bb99 as master...
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.svg
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.eot
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.woff
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.woff2
warning: failed to remove public/assets/font-awesome/fonts/FontAwesome.otf
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.ttf
warning: failed to remove public/assets/font-awesome/css/font-awesome.min.css
warning: failed to remove public/assets/icheck/skins/square/square.png
warning: failed to remove public/assets/icheck/skins/square/yellow.png
warning: failed to remove public/assets/icheck/skins/square/red@2x.png
................................
Ретрай этого же билдаRunning with gitlab-runner 13.4.1 (e95f89a0)
on runner runner
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:00
Running on runner...
Getting source from Git repository
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /home/gitlab-runner/builds/runner/0/user/default/.git/
Checking out dfa9bb99 as master...
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.svg
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.eot
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.woff
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.woff2
warning: failed to remove public/assets/font-awesome/fonts/FontAwesome.otf
warning: failed to remove public/assets/font-awesome/fonts/fontawesome-webfont.ttf
warning: failed to remove public/assets/font-awesome/css/font-awesome.min.css
warning: failed to remove public/assets/icheck/skins/square/square.png
warning: failed to remove public/assets/icheck/skins/square/yellow.png
.............................
Вот что на ранере происходит с правами
-