Ответ
Команды, определённые в файле .gitlab-ci.yml
, выполняются на GitLab Runner'ах.
GitLab Runner — это отдельное приложение (агент), которое запускается на сервере, виртуальной машине, в Docker-контейнере или в кластере Kubernetes. Его задача — получать задания (jobs) от GitLab CI/CD, выполнять их в чистом окружении и отправлять результаты обратно в GitLab.
Процесс работы:
- Разработчик отправляет код в репозиторий GitLab.
- GitLab обнаруживает файл
.gitlab-ci.yml
и создает пайплайн (pipeline) с заданиями (jobs). - GitLab передает эти задания доступным Runner'ам, которые соответствуют указанным тегам (например,
docker
,linux
,macos
). - Runner выполняет шаги, описанные в секции
script
для каждого задания.
Пример .gitlab-ci.yml
:
test_job:
stage: test
# Указываем, что задание должно выполняться на Runner'е с тегом 'docker'
tags:
- docker
script:
- echo "Запускаем тесты..."
- go test ./...
Типы Runner'ов:
- Shared Runners: Общие для всех проектов в инстансе GitLab (управляются администратором GitLab).
- Group Runners: Доступны для всех проектов в определенной группе.
- Specific Runners: Привязаны к конкретным проектам. Дают максимальный контроль над окружением.