fix(ci): preserve controlled cd drain lane
All checks were successful
Code Review / ai-code-review (push) Successful in 16s

This commit is contained in:
Your Name
2026-06-28 14:27:25 +08:00
parent 558480a6e6
commit 3c495bb472
4 changed files with 591 additions and 4 deletions

View File

@@ -48509,3 +48509,14 @@ production browser smoke:
- 沒有重啟 Docker / Nginx / firewall / K3s / DB。
- 沒有 force push、沒有讀 secret 明文、沒有讀 raw sessions / SQLite / auth / `.env`
- 110 runner / cd-lane 自動恢復仍 blocked下一步是 runner 搬遷或硬限流後再另開 controlled apply。
## 2026-06-28 — 14:25 110 controlled drain enforcer source 化與 GitHub runner freeze
**背景**`cd.yaml #3811` / `code-review.yaml #3812` 重新排隊後110 live `awoooi-runner-failclosed-enforcer` 仍以舊 live-only 腳本把 `awoooi-cd-lane-drain.service` 當成必殺 fail-closed 目標,導致 controlled drain 被 SIGKILL / mask同時舊 GitHub Actions runner 服務仍 active與 2026-06-28 GitHub freeze 衝突。
**變更**
- Source新增 `scripts/reboot-recovery/awoooi-enforce-runner-failclosed-110.sh`,將 live-only enforcer 納入 repolegacy / direct / Gitea generic runner 與 `actions.runner.*` 一律停用,只有 `awoooi-cd-lane-drain.service` 在 sentinel、`capacity=1`、AWOOOI labels、ELF binary、systemd CPU / memory / tasks limits、root restore-source `0` 成立時保留為 `controlled_open`
- Source新增 `ops/runner/awoooi-cd-lane-drain.service`,固定 `capacity=1` 專用 drain lane 的 systemd 限流與 rollback unit 來源。
- Source`scripts/reboot-recovery/p3-controlled-release-gate.sh``actions.runner.*` 判讀改成 GitHub disabled/fail-closedactive GitHub runner 不再因有 CPU / memory guardrail 就算 pass。
- Live 110安裝 repo 版 enforcer從既有 quarantine opaque binary 恢復 `awoooi_cd_lane_controlled`,重開 `awoooi-cd-lane-drain.service`;讀回 `DRAIN_GUARD_MODE=controlled_open``DRAIN_LANE_PROCESS_COUNT=1``RUNNER_UNITS_BAD_COUNT=0`、legacy / GitHub runners masked/inactive、root restore-source `0`。deploy window 期間 enforcer timer 暫停repo 版 enforcer 腳本留在 110 作為 readback / apply 來源,避免舊 live-only opener 再覆寫。
**邊界**:未讀 raw sessions、SQLite、auth、`.env`、runner token 或 `.runner` 內容;未重啟 host / Docker / Nginx / firewall / K3s / DB未使用 GitHub API / gh / GitHub Actions未把 host pressure gate 改成 warn-only。