diff --git a/apps/api/src/services/_archived/ARCHIVE_LOG.md b/apps/api/src/services/_archived/ARCHIVE_LOG.md new file mode 100644 index 00000000..47a210e3 --- /dev/null +++ b/apps/api/src/services/_archived/ARCHIVE_LOG.md @@ -0,0 +1,41 @@ +# Archive Log + +> Phase 16 封存紀錄 - 專業團隊不輕易刪除,改採封存策略 + +## 封存規則 + +1. 新代碼穩定運行 **48 小時** 後,才能封存舊代碼 +2. 封存檔案加上 `_v1` 後綴 +3. **90 天後** 無問題才真正刪除 +4. 所有封存必須記錄在此檔案 + +--- + +## 待封存清單 (Phase 16 R2) + +| 檔案 | 行數 | 替代方案 | 預計封存日期 | +|------|------|----------|--------------| +| incident_memory.py | ~483 | lewooogo_brain.adapters.incident_memory | 48hr 驗證後 | +| incident_engine.py | ~657 | lewooogo_brain.engines.incident_engine | 48hr 驗證後 | + +--- + +## 已封存 + +目前無封存檔案。 + + diff --git a/scripts/setup-runner-2.sh b/scripts/setup-runner-2.sh new file mode 100644 index 00000000..476273ca --- /dev/null +++ b/scripts/setup-runner-2.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# ============================================================================= +# AWOOOI 第二個 Runner 安裝腳本 +# ============================================================================= +# 用途: 在 192.168.0.110 安裝第二個 self-hosted Runner (冗餘) +# +# 前置條件: +# 1. 先到 GitHub 獲取 Runner Token: +# https://github.com/owenhytsai/awoooi/settings/actions/runners/new +# +# 執行方式: +# ssh 192.168.0.110 +# RUNNER_TOKEN="" bash setup-runner-2.sh +# ============================================================================= + +set -e + +# 配置 +RUNNER_NAME="awoooi-110-2" +RUNNER_DIR="/home/wooo/actions-runner-awoooi-2" +RUNNER_URL="https://github.com/owenhytsai/awoooi" +RUNNER_LABELS="self-hosted,harbor,k8s" +RUNNER_VERSION="2.321.0" + +echo "=== AWOOOI Runner 2 安裝 ===" +echo "名稱: ${RUNNER_NAME}" +echo "目錄: ${RUNNER_DIR}" +echo "" + +# 檢查 Token +if [ -z "${RUNNER_TOKEN}" ]; then + echo "❌ 錯誤: 請設定 RUNNER_TOKEN 環境變數" + echo "" + echo "獲取步驟:" + echo "1. 前往 https://github.com/owenhytsai/awoooi/settings/actions/runners/new" + echo "2. 複製 Token (以 A 開頭的字串)" + echo "3. 執行: RUNNER_TOKEN=\"\" bash $0" + exit 1 +fi + +# 創建目錄 +mkdir -p "${RUNNER_DIR}" +cd "${RUNNER_DIR}" + +# 下載 Runner (如果不存在) +if [ ! -f "./config.sh" ]; then + echo "📥 下載 Runner ${RUNNER_VERSION}..." + curl -o actions-runner-linux-x64.tar.gz -L \ + "https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz" + tar xzf ./actions-runner-linux-x64.tar.gz + rm -f ./actions-runner-linux-x64.tar.gz +fi + +# 配置 Runner +echo "⚙️ 配置 Runner..." +./config.sh \ + --url "${RUNNER_URL}" \ + --token "${RUNNER_TOKEN}" \ + --name "${RUNNER_NAME}" \ + --labels "${RUNNER_LABELS}" \ + --unattended \ + --replace + +# 安裝為 Service +echo "🔧 安裝 systemd service..." +sudo ./svc.sh install + +# 配置 Watchdog +SERVICE_NAME="actions.runner.owenhytsai-awoooi.${RUNNER_NAME}" +OVERRIDE_DIR="/etc/systemd/system/${SERVICE_NAME}.service.d" + +sudo mkdir -p "${OVERRIDE_DIR}" +sudo tee "${OVERRIDE_DIR}/watchdog.conf" <<'EOF' +[Service] +WatchdogSec=300 +Restart=always +RestartSec=10 +StartLimitIntervalSec=3600 +StartLimitBurst=5 +EOF + +sudo systemctl daemon-reload + +# 啟動 Runner +echo "🚀 啟動 Runner..." +sudo ./svc.sh start + +# 驗證 +echo "" +echo "=== 驗證 ===" +sudo ./svc.sh status + +echo "" +echo "✅ Runner 2 安裝完成!" +echo "" +echo "📊 目前 AWOOOI Runners:" +systemctl list-units --type=service | grep "actions.runner.owenhytsai-awoooi" || echo "無" diff --git a/scripts/setup-runner-watchdog.sh b/scripts/setup-runner-watchdog.sh new file mode 100644 index 00000000..e00100fd --- /dev/null +++ b/scripts/setup-runner-watchdog.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# ============================================================================= +# Runner Watchdog 配置腳本 +# ============================================================================= +# 用途: 配置 systemd watchdog,Runner 卡住 5 分鐘自動重啟 +# 執行: ssh 192.168.0.110 "bash -s" < scripts/setup-runner-watchdog.sh +# ============================================================================= + +set -e + +SERVICE_NAME="actions.runner.owenhytsai-awoooi.awoooi-110" +OVERRIDE_DIR="/etc/systemd/system/${SERVICE_NAME}.service.d" + +echo "=== Runner Watchdog 配置 ===" +echo "Service: ${SERVICE_NAME}" +echo "" + +# 創建 override 目錄 +sudo mkdir -p "${OVERRIDE_DIR}" + +# 創建 watchdog 配置 +sudo tee "${OVERRIDE_DIR}/watchdog.conf" <<'EOF' +[Service] +# Phase 16: Runner 穩定性改善 +# 2026-03-26 統帥裁示: 徹底解決卡住問題 + +# Runner 卡住 5 分鐘自動重啟 +WatchdogSec=300 + +# 永遠重啟 +Restart=always +RestartSec=10 + +# 重啟次數限制 (1小時內最多重啟5次,防止無限重啟迴圈) +StartLimitIntervalSec=3600 +StartLimitBurst=5 +EOF + +# 重載 systemd +sudo systemctl daemon-reload + +# 驗證配置 +echo "" +echo "=== 驗證配置 ===" +systemctl show "${SERVICE_NAME}" | grep -E "(WatchdogUSec|Restart=|RestartUSec)" + +echo "" +echo "✅ Watchdog 配置完成!" +echo "" +echo "📝 注意: 配置已載入,但 Runner 未重啟 (避免中斷當前 job)" +echo " 如需立即生效: sudo systemctl restart ${SERVICE_NAME}"