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

Контракт CI/CD

Требования применяются к обязательным GitLab CI/CD pipelines разработки и поставки. Уровни обязательности определены в корневом README.md.

DEP-CI-001. Pipeline точного commit

Уровень: MUST

Применяется к: pipeline merge и release

Каждый job должен получать исходники и зависимости для одного точного commit. Результаты jobs от разных commit не должны объединяться в решение о merge или release.

Обоснование

Решение о готовности имеет смысл только для одного идентифицированного состояния.

Проверка

  • сопоставление commit SHA jobs, отчётов и артефактов;
  • проверка поведения при добавлении нового commit в merge request.

Исключения

Merge result pipeline MAY проверять синтетический merge commit, если именно он является кандидатом на merge.

DEP-CI-002. Воспроизводимая конфигурация pipeline

Уровень: MUST

Применяется к: обязательному pipeline

Конфигурация jobs, scripts и используемые images должны быть версионированы либо ссылаться на неизменяемые версии. Job не должен зависеть от пользовательского shell profile или необъявленного состояния runner.

Обоснование

Скрытое состояние runner делает проверку невоспроизводимой.

Проверка

  • запуск на чистом runner;
  • review версий include, images и scripts.

Исключения

Управляемый runner MAY предоставлять документированный платформенный toolchain с контролируемой версией.

DEP-CI-003. Назначение проверок merge и release

Уровень: MUST

Применяется к: проекту, выпускающему артефакт

В дополнение к назначению merge-проверок по DEV-VER-003 проект должен определить release-проверки для самостоятельного риска упаковки, подписания, публикации или целевой среды, который нельзя подтвердить результатами merge-проверок.

Если merge-проверка уже подтверждает тот же риск для продвигаемого артефакта, release MAY повторно использовать её результат; дублирующая проверка не требуется. Release должен использовать артефакт и результаты обязательных проверок того же commit по DEP-CI-001, DEV-BUILD-004 и DEV-VER-003.

Обоснование

Release-проверки должны соответствовать самостоятельным рискам поставки. Их механическое повторение увеличивает время pipeline, не добавляя нового доказательства качества.

Проверка

  • сопоставление каждой release-проверки с самостоятельным риском;
  • проверка повторного использования результата для того же commit и артефакта;
  • контролируемый отказ применимой merge- или release-проверки.

Исключения

Экстренная поставка выполняется по OPS-INC-003.

DEP-CI-005. Диагностические результаты

Уровень: SHOULD

Применяется к: обязательной автоматизированной проверке

Следует сохранять машинно-читаемый отчёт и достаточную диагностику отказа. Срок хранения должен покрывать ожидаемый период review и расследования.

Обоснование

Доступная диагностика сокращает человеческое время на воспроизведение отказа.

Проверка

  • проверка artifacts и retention;
  • разбор контролируемого отказа без повторного запуска.

Исключения

Отдельный отчёт MAY отсутствовать, если exit code и краткий лог однозначно описывают результат простой проверки.