gitlab-ci-local: прогон пайплайна до push
CI/CD · Локальная проверка
Добавлено 2026-10-29.
Проблема
Каждая правка .gitlab-ci.yml — отдельный коммит «fix ci», ожидание раннера и снова ошибка. Actionlint проверяет только GitHub Actions.
Решение
Запускать job'ы GitLab CI локально через shell- или docker-executor. Поддерживаются include, needs, inputs и CI components. Финальная проверка всё равно остаётся в GitLab: серверные переменные и защищённые ветки локально не воспроизводятся.
Пример
gitlab-ci-local --list # какие job'ы попадут в пайплайн
gitlab-ci-local build-site # запустить один job по имени
gitlab-ci-local --needs deploy # job вместе с зависимостями из needs
Переменные CI для локального запуска — в .gitlab-ci-local-variables.yml в корне проекта. Файл добавить в .gitignore: в нём могут оказаться секреты.
Особенности:
- в изолированные job'ы попадают только файлы, добавленные в Git — сначала
git add; - shell-executor пишет артефакты в рабочий каталог; ближе к раннеру —
--shell-isolation.
Когда применять
Перед каждым push с изменениями .gitlab-ci.yml или скриптов пайплайна.
Источник
Как применить у себя
- Установить и прогнать
--listна пайплайне devops-kb. - Запустить сборку сайта локально через docker-executor.
- Сломать job намеренно и убедиться, что ошибка видна локально.
- Отметить «Изучено», когда локальный прогон стал привычкой перед push.