Всем привет!
Есть Gitlab CI и Gitlab CI Multi Runners. Сейчас настроено так, что тесты выполняются через shell executor на самой машине, где установлен Gitlab CI Multi Runner, тесты выполняются для веб сайта в корне репозитория.
Я пробовал все варианты
docs.gitlab.com/ce/ci/docker/using_docker_build.html кроме, dind, и рабочий только, используя docker private registry, те надо сначало собрать образ через Dockerfile затем запушить его в регистр и использовать этот образ при сборке. Пример:
image: my-registry:5000/my-image:latest
before_script:
- yum -y update
- composer self-update
job:
script:
- composer install
- npm install
- ./node_modules/.bin/bower install
- ./php_packages/squizlabs/php_codesniffer/scripts/phpcs ...
- ./php_packages/sebastian/phpcpd/phpcpd ...
- npm test
Конкуретные билды тоже работают в таком ключе, если настроить concurrency. Но есть другой способ, используя docker socket bind:
image: docker:latest
before_script:
- docker info
build:
stage: build
script:
- docker build -t my-docker-image .
- docker run my-docker-image /script/to/run/tests
Я хотел его применить, так как пересобирать образ через Dockerfile перед билдом правильнее, чем использовать образ из регистра, который нужно вручную обновлять каждый раз, но при использовании docker socket bind я не могу понять как выполнить тесты, используя docker run my-docker-image /script/to/run/tests , так как тесты нужно выполнять в корне репозитория , а его просто нет в этом контейнере. Те я могу вынести тесты в отдельный скрипт но мне нужно их запускать в корне репозитория.
Какой метод наиболее правильный для выполнения тестов в корне репозитория, используя параллельные билды и docker executor? Можно ли как то выполнить мои тесты для репозитория используя docker socket bind?