docs: 新增 ADR-010 Gitea CI/CD Pipeline,更新 CLAUDE.md

- ADR-010:記錄 ewoooc Gitea repo 建立、cd.yaml 設計、runner user-level 踩坑、rsync 缺失修復
- CLAUDE.md:新增 CI/CD 表格(repo URL、pipeline 模式、runner、Telegram 通知)
- docs/adr/README.md:加入 ADR-010 索引

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ogt
2026-04-19 11:21:53 +08:00
parent abefca99e5
commit 62d8504d8f
3 changed files with 77 additions and 1 deletions

View File

@@ -18,11 +18,25 @@
# 本地開發
source venv/bin/activate && python app.py
# 部署 → 188via 110 跳板
# 部署(標準)→ push 即自動部署Gitea Actions
git push origin main
# 手動部署 → 188via 110 跳板,緊急用)
scp -o ProxyJump=wooo@192.168.0.110 <file> ollama@192.168.0.188:/home/ollama/momo-pro/
ssh -J wooo@192.168.0.110 ollama@192.168.0.188 "docker restart momo-pro-system"
```
## CI/CD
| 項目 | 說明 |
|------|------|
| Gitea Repo | `http://192.168.0.110:3001/wooo/ewoooc` (Public) |
| CD Pipeline | `.gitea/workflows/cd.yaml` |
| 部署模式 | syncPython 變動 ~30s/ rebuildDockerfile 變動) |
| 健康檢查 | `https://mo.wooo.work/health` |
| Runner | `wooo-runner`user-level服務所有 wooo/* repo |
| 通知 | Telegram部署開始/成功/失敗) |
| 參考 | ADR-010 |
## 文檔索引
| 類型 | 路徑 |
|------|------|

View File

@@ -0,0 +1,61 @@
# ADR-010: EwoooC Gitea CI/CD Pipeline 建立
- **Status**: Accepted
- **Date**: 2026-04-19
- **Deciders**: 統帥
## Context
EwoooCMOMO Pro System原本沒有自動化部署流程每次改版都需要手動 scp + docker restart。其他產品線AWOOOI 等)已跑在 Gitea Actions統帥決定 EwoooC 也對齊相同模式。
## Decision
在 Gitea 建立 `wooo/ewoooc` repoPublic並在 `.gitea/workflows/cd.yaml` 實作完整 CD pipeline。
### Pipeline 架構
```
push main → 偵測變更類型 → sync 或 rebuild → 健康檢查 → Telegram 通知
```
| 模式 | 觸發條件 | 動作 | 耗時 |
|------|---------|------|------|
| `sync` | Python 檔案變動(最常見) | rsync → docker restart | ~30s |
| `rebuild` | Dockerfile / requirements.txt / docker-compose.yml 變動 | rsync + docker compose build + up -d | ~3-5min |
### 關鍵設計
- `concurrency.cancel-in-progress: true` — 新 push 取消舊排隊 job
- `fetch-depth: 2` — 支援 `git diff HEAD~1 HEAD` 偵測變更類型
- `rsync --exclude` — 排除 data/, logs/, .env, *.db 等敏感/大型檔案
- 健康檢查:`https://mo.wooo.work/health`,最多重試 5 次 × 10s
- Telegram HTML 格式通知(部署開始 / 成功 / 失敗)
### Runner 設定(踩坑紀錄)
`gitea-runner` 容器的 `GITEA_RUNNER_REGISTRATION_TOKEN` 是 AWOOOI repo-level token每次重啟都重新用那個 token 註冊,導致 ewoooc pipeline 一直在 `queued`
**修復方式**:重建容器,改用 user-level token`/api/v1/user/actions/runners/registration-token`runner 即可服務 `wooo/*` 所有 repo。
### CI Image 缺少 rsync
`192.168.0.110:5000/awoooi/ci-runner:act-22.04` 未預裝 rsync需在 workflow 加裝:
```yaml
- name: 安裝 rsync / ssh
run: apt-get update -qq && apt-get install -y -qq rsync openssh-client
```
## Alternatives Considered
- **繼續手動部署**:不可擴展,容易遺漏步驟
- **GitHub Actions公有雲**:內網 188 無法直接被 GitHub runner 存取
- **Drone CI / Jenkins**:已有 Gitea Actions引入新工具增加維運複雜度
## Consequences
- ✅ push main 後自動部署,~30s 可驗sync 模式)
- ✅ Telegram 即時通知部署狀態
- ✅ Runner 現在 user-level所有 `wooo/*` repo 共用
- ⚠️ capacity=2已在 config.yaml 設定),可並發 AWOOOI + EwoooC 各一個 job
- ⚠️ CI image 若需其他工具,需更新 apt-get install 清單或重建 image

View File

@@ -31,6 +31,7 @@
| [007](ADR-007-ai-learning-dual-write.md) | AI 學習雙寫規範DB + KM 同步寫入) | Accepted | 2026-04-18 |
| [008](ADR-008-actual-runtime-on-188.md) | 正式運行環境確認 — 188 Docker Compose(非 110 K3s) | Accepted | 2026-04-18 |
| [009](ADR-009-embedding-retry-queue-persistence.md) | Embedding Retry Queue 持久化DB-backed | Accepted | 2026-04-19 |
| [010](ADR-010-gitea-cicd-pipeline.md) | EwoooC Gitea CI/CD PipelineGitea Actions + Docker Compose | Accepted | 2026-04-19 |
## 規範