Docker


Наші тестові раннери розгортаються як Docker-образи.

Прочитаймо загальну інформацію про Docker в інструментарії, щоб ознайомитися з тим, як вони працюють.

Інтеграція

Коли ми запускаємо тестовий раннер, щоб перевірити рішення, ми виконуємо команду Docker, яка має такий вигляд:

docker run \
        --rm \
        --network none \
        --mount type=bind,src="${solution_dir}",dst=/solution \
        --mount type=bind,src="${output_dir}",dst=/output \
        --tmpfs /tmp:rw \
        "exercism/${track_slug}-test-runner" \
        "${exercise_slug}" "/solution" "/output"

Як бачимо, ми передаємо образу Docker три аргументи:

  1. Слаг вправи
  2. Шлях до каталогу рішення
  3. Шлях до каталогу виводу

Домовленості

Усі наші тестові раннери використовують у своїй реалізації такі домовленості:

  • Файл Dockerfile лежить у кореневому каталозі репозиторію.
  • Робочий каталог має бути /opt/test-runner.
  • Точка входу - /opt/test-runner/bin/run.sh
  • Скрипт /opt/test-runner/bin/run.sh приймає 3 аргументи:
    1. Слаг вправи
    2. Шлях до каталогу рішення
    3. Шлях до каталогу виводу

Щоб дізнатися більше, див. Інтерфейс.

Note

Нові репозиторії тестових раннерів типово використовують ці домовленості.