Часто задаваемые вопросы (FAQ) по CI/CD
Info
В этом разделе рассматриваем популярные вопросы о CI/CD на GitVerse.
Как включить/выключить CI/CD?
Для включения/выключения CI/CD перейдите в профиль вашего репозитория и выполните следующие шаги:
-
Выберите вкладку Настройки.
-
Выберите Репозиторий.
-
Включите тумблер CI/CD.
-
Выберите приоритет для пути для конфигурационных файлов workflow.
Info
Если у вас только одна директория с конфигурационными файлами workflow, то раннеры будут выполнять их независимо от выбранной здесь опции.
- Нажмите Обновить.
После включения CI/CD GitVerse начнет автоматически сканировать каталог .gitverse/workflows/ вашего репозитория и запускать workflow при срабатывании триггеров.
Где посмотреть все настройки для раннера?
Все доступные настройки можно посмотреть, запустив раннер с флагом-параметром generate-config:
./act_runner generate-configЭта команда выведет полный шаблон конфигурационного файла (config.yaml) с комментариями к каждой опции. Используйте его как основу для настройки пользовательского раннера.
Можно ли управлять параллелизмом задач, обрабатываемых раннером?
Да, runner может выполнять несколько задач одновременно. Параметр capacity в конфигурации определяет максимальное количество параллельных задач.
- Запустите runner с флагом-параметром
generate-config:
./act_runner generate-config > config.yaml- В секции
runnerсозданного конфигурационного файла в параметреcapacityукажите максимальное количество job, которые раннер может выполнять параллельно:
runner:
capacity: 4-
Запустите раннерр с созданным
config.yaml.Если используете приложение:
./act_runner daemon --config config.yamlЕсли используете docker-контейнер:
docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PWD/config.yaml:/config.yaml \
-e CONFIG_FILE=/config.yaml \
-e RUNNER_REGISTRATION_TOKEN=<registration_token> \
-e RUNNER_NAME=<runner_name> \
--name my_runner \
-d gitverse.ru/gitverse/act-runner:latestВ этом примере <registration_token> — это токен регистрации раннера, который можно получить в настройках репозитория, а <runner_name> — имя раннер для идентификации.
Можно ли использовать свой образ Docker для запуска задач?
Да, вы можете запускать задачи на своем Docker-образе с собственной средой, инструментами и зависимостями. Для этого в конфигурации job укажите параметр container.
Пример workflow с кастомным образом Docker:
jobs:
lint:
runs-on: self-hosted
container:
image: my-registry.example.com/project/my-custom-image:latestВ этом примере job выполняется в контейнере на основе образа my-custom-image:latest, загруженного из частного реестра my-registry.example.com. Если реестр требует аутентификации, используйте секреты DOCKER_USERNAME и DOCKER_PASSWORD.
Как собрать Docker-образ на облачном раннере?
Облачный раннер в GitVerse не имеет доступа к Docker Daemon, поэтому стандартная команда docker build не работает. Для сборки Docker-образов на облачном раннере используйте kaniko.
Kaniko — это инструмент, который собирает Docker-образы без Docker Daemon. Kaniko читает Dockerfile и собирает образ, используя только файловую систему контейнера. Это делает его идеальным для CI/CD pipeline (конвейера) на облачном раннере.
Подробнее о настройке kaniko читайте в разделе Облачный раннер: сборка Docker-образов.
Можно ли иметь раннеры с одинаковыми метками?
Да, можно. Вы можете зарегистрировать несколько раннер с одинаковыми label. Задачи будут распределяться между доступными раннерами с соответствующей меткой по мере их появления в очереди.
Это полезно для масштабирования CI/CD: когда количество задач превышает возможности одного раннера, дополнительные раннеры с той же меткой берут задачи в работу автоматически. Убедитесь, что у всех раннеров одинаковые метки, если вы хотите, чтобы они обрабатывали одни и те же job.
Где получить токен для доступа к хранилищу GitVerse?
Токен (personal access token, личный токен доступа) можно сгенерировать в настройках профиля пользователя на вкладке «Управление токенами».
После генерации токена сохраните его — он отображается только один раз. Используйте токен как секрет в workflow для аутентификации при доступе к частным репозиториям или при публикации пакетов.
Какой синтаксис у workflow? Совместим ли он с GitHub Actions?
Синтаксис YAML-файлов CI/CD в GitVerse в целом совместим с GitHub Actions. Вы можете использовать существующие workflow (включая большинство действий из Marketplace) практически без изменений.
Основные отличия от GitHub Actions:
- каталог workflow в GitVerse:
.gitverse/workflows/(вместо.github/workflows/); - доступные раннеры и их метки могут отличаться;
- некоторые GitHub-specific действия могут требовать адаптации для GitVerse.
Если у вас уже есть workflow из GitHub, начните с копирования файлов в каталог .gitverse/workflows/ и проверьте, что все действия работают корректно.
Доступен ли CI/CD для зеркальных репозиториев?
Если ваш репозиторий импортирован в GitVerse как зеркало, то для него CI/CD недоступен.
Зеркальные репозитории предназначены только для синхронизации кода из внешнего источника и не поддерживают workflow, раннеры и другие CI/CD функции. Если вам нужен CI/CD, создайте обычный репозиторий или форк вместо зеркального.
Почему раннер не берет задания в работу?
Если задача висит в статусе «В ожидании», а затем помечается «Отменено», это означает, что не найден подходящий раннер. Проверьте следующие параметры:
-
Параметр
runs-onв workflow: убедитесь, что метка раннера указана корректно. Например,runs-on: self-hostedтребует, чтобы хотя бы один пользовательский раннер с меткойself-hostedбыл подключен и активен. -
Статус раннера: проверьте, что раннер подключен к GitVerse и имеет статус «Активен». Если раннер отключен или не отвечает, job не будет назначена.
-
Лимиты облачного раннера: если вы используете облачный раннер, проверьте лимиты использования. Возможно, исчерпан лимит сборочного времени или квоты на количество параллельных job.
-
Параметр
capacityраннера: убедитесь, что параметрcapacityв конфигурации runner позволяет выполнять новые job. Если все слоты заняты, job будет ждать.
Ошибка 401 при скачивании Docker-образа при запуске runner
Ошибка 401 (Unauthorized) при скачивании Docker-образа обычно связана с неверной аутентификацией в частном реестре Docker.
Убедитесь, что в секретах или переменных заданы оба параметра: DOCKER_USERNAME и DOCKER_PASSWORD (и что они корректны). Часто ошибка 401 возникает, если вместо пары логин/пароль указано что-то неверно, одно из полей пусто или дублируется.
Проверьте:
DOCKER_USERNAMEсодержит имя пользователя в реестре;DOCKER_PASSWORDсодержит пароль или token доступа;- оба параметра установлены на том же уровне (репозиторий или организация), где выполняется workflow.
Устранение других ошибок
Если вы столкнулись с проблемой в работе CI/CD или платформы в целом, при обращении в службу поддержки может потребоваться записать HAR-файл (HTTP Archive):
- Как создать и сохранить HAR-файл — пошаговые инструкции по записи HAR-файлов для Chrome, Edge, Firefox, Safari и других браузеров.
HAR-файлы помогают нашей службе поддержки диагностировать проблемы с сетевыми запросами, отлаживать ситуации с некорректной работой страниц или анализировать ошибки, возникающие при взаимодействии с платформой GitVerse (например, проблемы с webhook, интеграциями или отображением данных в интерфейсе CI/CD).