125 lines
5.6 KiB
YAML
125 lines
5.6 KiB
YAML
work_item: ORCH-058
|
||
description: >
|
||
Провенанс staging-образа перед BUILD-ONCE retag в прод. Тесты покрывают инвариант
|
||
INV-FRESH: соответствие промоутируемого образа провалидированному коммиту, fail-fast
|
||
и fail-closed при рассинхроне, условность self-hosting, never-raise, неизменность
|
||
контрактов. Часть кейсов помечена strategy-зависимыми (A=пересборка, B=fail-fast по
|
||
провенансу) — финальный набор подтверждает архитектор в ADR; пишутся тесты для
|
||
выбранной стратегии.
|
||
tests:
|
||
- id: TC-01
|
||
type: unit
|
||
description: >
|
||
Pure provenance-verdict: SHA образа == ожидаемый SHA -> свежий (PASS).
|
||
Совпадающие revision дают вердикт "соответствует".
|
||
module: tests/test_image_freshness.py
|
||
expected: PASS
|
||
|
||
- id: TC-02
|
||
type: unit
|
||
description: >
|
||
Pure provenance-verdict: SHA образа != ожидаемый SHA -> НЕ свежий ->
|
||
вердикт несоответствия (вход для fail-fast).
|
||
module: tests/test_image_freshness.py
|
||
expected: PASS
|
||
|
||
- id: TC-03
|
||
type: unit
|
||
description: >
|
||
Fail-closed: пустой/отсутствующий лейбл образа ИЛИ пустой ожидаемый SHA ->
|
||
трактуется как несоответствие (никогда не "свежий по умолчанию").
|
||
module: tests/test_image_freshness.py
|
||
expected: PASS
|
||
|
||
- id: TC-04
|
||
type: unit
|
||
description: >
|
||
never-raise: provenance-helper при docker/ssh/inspect ошибке или отсутствующем
|
||
worktree возвращает безопасный вердикт (несоответствие), не пробрасывает исключение.
|
||
module: tests/test_image_freshness.py
|
||
expected: PASS
|
||
|
||
- id: TC-05
|
||
type: unit
|
||
description: >
|
||
Условность: для не-self репозитория проверка свежести = no-op (True/"N/A");
|
||
для orchestrator (или репо из image_freshness_repos) — реальна.
|
||
module: tests/test_image_freshness.py
|
||
expected: PASS
|
||
|
||
- id: TC-06
|
||
type: unit
|
||
description: >
|
||
[Стратегия B] build_deploy_command пробрасывает EXPECTED_REVISION=<sha>
|
||
в remote-команду хука рядом с SOURCE_IMAGE; формат env корректен (shlex-quote).
|
||
module: tests/test_deploy_build_once.py
|
||
expected: PASS
|
||
|
||
- id: TC-07
|
||
type: unit
|
||
description: >
|
||
[Стратегия B] Хук содержит ветку fail-fast: при заданном EXPECTED_REVISION и
|
||
несовпадении revision лейбла SOURCE_IMAGE -> exit 1 ПЕРЕД docker tag; при пустом
|
||
EXPECTED_REVISION -> обратносовместимое поведение (без проверки). Статическая
|
||
проверка текста scripts/orchestrator-deploy-hook.sh (паттерн test_deploy_build_once).
|
||
module: tests/test_deploy_hook_provenance.py
|
||
expected: PASS
|
||
|
||
- id: TC-08
|
||
type: unit
|
||
description: >
|
||
[Стратегия B] Dockerfile объявляет ARG GIT_SHA и LABEL
|
||
org.opencontainers.image.revision=$GIT_SHA (статическая проверка текста Dockerfile).
|
||
module: tests/test_deploy_hook_provenance.py
|
||
expected: PASS
|
||
|
||
- id: TC-09
|
||
type: unit
|
||
description: >
|
||
Маппинг контракта: exit 1 хука (fail-fast по провенансу) ->
|
||
map_exit_code_to_status == "FAILED" (контракт ORCH-36 не изменён).
|
||
module: tests/test_deploy_hook_mapping.py
|
||
expected: PASS
|
||
|
||
- id: TC-10
|
||
type: integration
|
||
description: >
|
||
Stale-образ -> fail-fast end-to-end: на ребре deploy-staging->deploy при
|
||
несоответствии образа Phase B/хук дают FAILED -> advance_stage откатывает на
|
||
development (БАГ-8), прод не "зелёный". Прод-рестарт замокан.
|
||
module: tests/test_stage_engine.py
|
||
expected: PASS
|
||
|
||
- id: TC-11
|
||
type: integration
|
||
description: >
|
||
Свежий образ -> happy path: соответствие revision -> деплой доходит до SUCCESS и
|
||
deploy->done; механизм свежести не блокирует валидный деплой (anti-deadlock, AC-6).
|
||
Host-процесс/хук замокан.
|
||
module: tests/test_stage_engine.py
|
||
expected: PASS
|
||
|
||
- id: TC-12
|
||
type: unit
|
||
description: >
|
||
[Если выбран gate-side] check_staging_image_fresh зарегистрирован в QG_CHECKS;
|
||
snapshot-тест реестра обновлён и зелёный.
|
||
module: tests/test_qg_registry_snapshot.py
|
||
expected: PASS
|
||
|
||
- id: TC-13
|
||
type: unit
|
||
description: >
|
||
Конфигурация: новые настройки (image_freshness_enabled / image_freshness_repos)
|
||
читаются с префиксом ORCH_ и имеют дефолты; kill-switch off -> прежнее поведение.
|
||
module: tests/test_config.py
|
||
expected: PASS
|
||
|
||
- id: TC-14
|
||
type: unit
|
||
description: >
|
||
Регрессия контрактов: STAGE_TRANSITIONS (набор стадий) и exit-code-контракт хука
|
||
(0/1/2) не изменены существующими правками.
|
||
module: tests/test_stages.py
|
||
expected: PASS
|