Перейти к содержанию

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 или скриптов пайплайна.

Источник

Как применить у себя

  1. Установить и прогнать --list на пайплайне devops-kb.
  2. Запустить сборку сайта локально через docker-executor.
  3. Сломать job намеренно и убедиться, что ошибка видна локально.
  4. Отметить «Изучено», когда локальный прогон стал привычкой перед push.