Статусы в GitLab, GitHub и Bitbucket: мини-словарь для DevOps
Pending, running, success, failed, skipped, canceled, required checks и commit status: что означают статусы CI и почему MR/PR иногда красный не там, где вы ожидали.
Статус CI кажется простой вещью: зелёный — можно мержить, красный — нельзя. На практике GitLab, GitHub и Bitbucket показывают несколько видов статусов, и они не всегда означают одно и то же.
Эта статья для тех, кто уже видел красные MR/PR, но ещё путается между pipeline status, commit status, check run и required checks.
Коротко: статус говорит что, но не почему
Pipeline status показывает состояние набора job. Commit status привязан к конкретному SHA. Check run в GitHub может содержать annotations и summary. Required check — правило branch protection: без него нельзя мержить.
Статус отвечает на вопрос «можно ли двигаться дальше». Причину падения всё равно придётся искать в логе.
Основные статусы
pending/ queued — job ждёт runner.running— команды выполняются.success— job завершился с exit code 0.failed— job завершился ошибкой.skipped— job не запускался по rules/conditions.canceled— job отменили вручную или новым pipeline.manual— job ждёт ручного запуска.
Для новичка важно: skipped не равно success, а manual не всегда блокирует merge.
Почему MR/PR красный, если pipeline зелёный
Частые причины:
- required check ждёт другой job name;
- статус привязан к старому commit SHA;
- matrix job упал в одной ячейке;
- optional job не блокирует pipeline, но блокирует branch protection;
- внешний CI отправил commit status позже GitLab/GitHub pipeline.
Что смотреть первым
- SHA, к которому привязан статус.
- Имя required check в настройках branch protection.
- Отличается ли PR/MR pipeline от push pipeline.
- Есть ли skipped/manual job среди required.
- Не пришёл ли внешний статус из Jenkins/TeamCity/Bitbucket позже.
Где тут Exlogare
Статус говорит «сломалось». Exlogare добавляет «почему»: получает лог failed job и возвращает RCA в MR/PR. Если вы публикуете статусы обратно в VCS, посмотрите документацию по feedback status checks.
Читайте также
- GitLab CI:
rules,workflowи почему job не запустился - Монорепозиторий: один pipeline, много пакетов — как читать CI-лог
Чеклист
- Проверяйте status на конкретном SHA.
- Сверяйте имя required check.
- Не путайте skipped/manual/success.
- Для matrix смотрите конкретную ячейку.
- Для красного статуса добавляйте RCA рядом с MR/PR.