Кілька місяців тому це можливо за допомогою gitlab-runner
:
gitlab-runner exec docker my-job-name
Зверніть увагу, що вам потрібні як докер, так і gitlab-runner
встановлений на вашому комп’ютері, щоб це працювало.
Вам також потрібен image
ключ, визначений у вашому .gitlab-ci.yml
файлі. Інакше не вийде.
Ось рядок, який я зараз використовую для локального тестування, використовуючи gitlab-runner
:
gitlab-runner exec docker test --docker-volumes "/home/elboletaire/.ssh/id_rsa:/root/.ssh/id_rsa:ro"
Примітка: Ви можете уникнути додавання а за --docker-volumes
допомогою клавіші, встановленої за замовчуванням у /etc/gitlab-runner/config.toml
. Детальніше див. В офіційній документації . Крім того, використовуйте, gitlab-runner exec docker --help
щоб переглянути всі параметри бігуна на основі докера (наприклад, змінні, томи, мережі тощо).
Через плутанину в коментарях, я вставляю сюди gitlab-runner --help
результат, так що ви бачите, що gitlab-runner може робити збірки локально:
gitlab-runner --help
NAME:
gitlab-runner - a GitLab Runner
USAGE:
gitlab-runner [global options] command [command options] [arguments...]
VERSION:
1.1.0~beta.135.g24365ee (24365ee)
AUTHOR(S):
Kamil Trzciński <ayufan@ayufan.eu>
COMMANDS:
exec execute a build locally
[...]
GLOBAL OPTIONS:
--debug debug mode [$DEBUG]
[...]
Як бачите, exec
команда - execute a build locally
.
Незважаючи на те, що виникла проблема з припиненням поточної gitlab-runner exec
поведінки , її переглянули, і нова версія з розширеними функціями замінить поточну функціональність exec.
Зверніть увагу, що цей процес полягає у використанні власної машини для запуску тестів за допомогою контейнерів докерів. Це не для визначення власних бігунів. Для цього просто перейдіть до налаштувань CI / CD вашого репо та прочитайте там документацію. Якщо ви хочете, щоб ваш бігун був запущений замість того, щоб виконати його з gitlab.com, додайте власний та унікальний тег до вашого бігуна, переконайтеся, що він виконує лише позначені завдання та позначте всі завдання, за які ви хочете, щоб ваш бігун відповідав.