123 lines
5.0 KiB
YAML
123 lines
5.0 KiB
YAML
work_item: ORCH-036
|
||
title: "Исполняемый самодеплой — стадия deploy дёргает хост-хук (Вариант B)"
|
||
stage: analysis
|
||
notes: >
|
||
Все тесты — на изолированном уровне (unit/integration с моками subprocess/ssh
|
||
и хука). Реальный прод (8500) НЕ трогается. Интеграционные прогоны хука — на
|
||
staging-цели. Хост-хук (bash) проверяется отдельным интеграционным сценарием с
|
||
поддельным health/exit-code; в pytest вызов хука мокается.
|
||
|
||
tests:
|
||
# --- exit-code -> deploy_status mapping (AC-1, AC-3) ---
|
||
- id: TC-01
|
||
type: unit
|
||
description: "Маппинг exit-code хука 0 -> deploy_status: SUCCESS"
|
||
module: tests/test_deploy_hook_mapping.py
|
||
expected: PASS
|
||
- id: TC-02
|
||
type: unit
|
||
description: "Маппинг exit-code хука 1 (rolled back) -> deploy_status: FAILED"
|
||
module: tests/test_deploy_hook_mapping.py
|
||
expected: PASS
|
||
- id: TC-03
|
||
type: unit
|
||
description: "Маппинг exit-code хука 2 (rollback тоже упал) -> deploy_status: FAILED"
|
||
module: tests/test_deploy_hook_mapping.py
|
||
expected: PASS
|
||
|
||
# --- approve gate (AC-5, AC-12) ---
|
||
- id: TC-04
|
||
type: unit
|
||
description: "DEPLOY_REQUIRE_MANUAL_APPROVE дефолт == true в settings"
|
||
module: tests/test_deploy_approve.py
|
||
expected: PASS
|
||
- id: TC-05
|
||
type: integration
|
||
description: "Флаг true и нет 'go' -> прод-хук НЕ вызывается (subprocess/ssh не дёрнут)"
|
||
module: tests/test_deploy_approve.py
|
||
expected: PASS
|
||
- id: TC-06
|
||
type: integration
|
||
description: "Флаг true и есть 'go' -> прод-хук вызывается ровно один раз"
|
||
module: tests/test_deploy_approve.py
|
||
expected: PASS
|
||
|
||
# --- self vs non-self routing (AC-2, AC-11) ---
|
||
- id: TC-07
|
||
type: unit
|
||
description: "is_self_hosting_repo('orchestrator') == True; иной репо -> False (не регрессировал)"
|
||
module: tests/test_deploy_routing.py
|
||
expected: PASS
|
||
- id: TC-08
|
||
type: integration
|
||
description: "self-репо orchestrator: рестарт инициируется detached/host-процессом, не синхронно из агента"
|
||
module: tests/test_deploy_routing.py
|
||
expected: PASS
|
||
- id: TC-09
|
||
type: integration
|
||
description: "не-self репо (enduro-trails): деплой идёт прежним ssh-путём, self-логика не применяется"
|
||
module: tests/test_deploy_routing.py
|
||
expected: PASS
|
||
|
||
# --- rollback on FAILED (AC-4) ---
|
||
- id: TC-10
|
||
type: integration
|
||
description: "deploy_status: FAILED -> откат deploy->development, set_issue_blocked, release merge-lease"
|
||
module: tests/test_deploy_rollback.py
|
||
expected: PASS
|
||
|
||
# --- staging precondition preserved (AC-8) ---
|
||
- id: TC-11
|
||
type: integration
|
||
description: "staging_status: FAILED -> до стадии deploy не доходит (откат на development)"
|
||
module: tests/test_staging_precondition.py
|
||
expected: PASS
|
||
|
||
# --- notifications (AC-6) ---
|
||
- id: TC-12
|
||
type: integration
|
||
description: "Успешный промоут -> и Plane-коммент, и Telegram отправлены"
|
||
module: tests/test_deploy_notifications.py
|
||
expected: PASS
|
||
- id: TC-13
|
||
type: integration
|
||
description: "Откат -> и Plane-коммент, и Telegram отправлены (нет молчаливого деплоя)"
|
||
module: tests/test_deploy_notifications.py
|
||
expected: PASS
|
||
|
||
# --- build-once (AC-7) ---
|
||
- id: TC-14
|
||
type: integration
|
||
description: "Прод-деплой использует образ staging (retag, без build) — нет шага docker build"
|
||
module: tests/test_deploy_build_once.py
|
||
expected: PASS
|
||
|
||
# --- regression: unchanged gate contracts (AC-10) ---
|
||
- id: TC-15
|
||
type: unit
|
||
description: "_parse_deploy_status: SUCCESS->(True), FAILED->(False), нет frontmatter->(False) — контракт цел"
|
||
module: tests/test_qg_checks.py
|
||
expected: PASS
|
||
- id: TC-16
|
||
type: unit
|
||
description: "STAGE_TRANSITIONS deploy->done и agent/qg deploy не изменены"
|
||
module: tests/test_stages.py
|
||
expected: PASS
|
||
- id: TC-17
|
||
type: integration
|
||
description: "terminal-sync deploy->done (set_issue_done + release merge-lease) сохранён"
|
||
module: tests/test_deploy_terminal_sync.py
|
||
expected: PASS
|
||
- id: TC-18
|
||
type: integration
|
||
description: "merge-gate на ребре deploy-staging->deploy не затронут (регресс ORCH-43 зелёный)"
|
||
module: tests/test_merge_gate.py
|
||
expected: PASS
|
||
|
||
# --- auto-rollback hook behavior (AC-9) ---
|
||
- id: TC-19
|
||
type: integration
|
||
description: "Симуляция битого деплоя на staging-цели: health fail -> авто-rollback -> healthy, exit 1, MTTR<60с"
|
||
module: tests/test_deploy_hook_rollback_sim.py
|
||
expected: PASS
|