Контракт 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 и краткий лог однозначно описывают результат простой проверки.