chore: Runner 穩定性 + 封存目錄結構
Runner 穩定性: - 新增 setup-runner-watchdog.sh (5分鐘 Watchdog) - 新增 setup-runner-2.sh (第二個 Runner 安裝) 封存策略: - 建立 _archived/ 目錄結構 - 新增 ARCHIVE_LOG.md 封存紀錄模板 統帥裁示: 不要只是臨時解決,要徹底解決! Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
41
apps/api/src/services/_archived/ARCHIVE_LOG.md
Normal file
41
apps/api/src/services/_archived/ARCHIVE_LOG.md
Normal file
@@ -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 驗證後 |
|
||||
|
||||
---
|
||||
|
||||
## 已封存
|
||||
|
||||
目前無封存檔案。
|
||||
|
||||
<!--
|
||||
## 範例格式
|
||||
|
||||
### incident_memory_v1.py
|
||||
|
||||
| 欄位 | 值 |
|
||||
|------|-----|
|
||||
| 封存日期 | 2026-XX-XX |
|
||||
| 封存原因 | Phase 16 絞殺者模式,改用 lewooogo-brain |
|
||||
| 原始位置 | apps/api/src/services/incident_memory.py |
|
||||
| 替代方案 | lewooogo_brain.adapters.incident_memory |
|
||||
| 回復指令 | `git checkout a202a26 -- apps/api/src/services/incident_memory.py` |
|
||||
| 48hr 驗證通過 | 2026-XX-XX |
|
||||
| 最終刪除日期 | 2026-XX-XX (封存後 90 天) |
|
||||
-->
|
||||
97
scripts/setup-runner-2.sh
Normal file
97
scripts/setup-runner-2.sh
Normal file
@@ -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="<your-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=\"<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 "無"
|
||||
51
scripts/setup-runner-watchdog.sh
Normal file
51
scripts/setup-runner-watchdog.sh
Normal file
@@ -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}"
|
||||
Reference in New Issue
Block a user