@neothesilent

Как выполнить тесты используя Docker socket binding?

Всем привет!

Есть 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?
  • Вопрос задан
  • 380 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы