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:
16
CLAUDE.md
16
CLAUDE.md
@@ -18,11 +18,25 @@
|
||||
# 本地開發
|
||||
source venv/bin/activate && python app.py
|
||||
|
||||
# 部署 → 188(via 110 跳板)
|
||||
# 部署(標準)→ push 即自動部署(Gitea Actions)
|
||||
git push origin main
|
||||
|
||||
# 手動部署 → 188(via 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` |
|
||||
| 部署模式 | sync(Python 變動 ~30s)/ rebuild(Dockerfile 變動) |
|
||||
| 健康檢查 | `https://mo.wooo.work/health` |
|
||||
| Runner | `wooo-runner`(user-level,服務所有 wooo/* repo) |
|
||||
| 通知 | Telegram(部署開始/成功/失敗) |
|
||||
| 參考 | ADR-010 |
|
||||
|
||||
## 文檔索引
|
||||
| 類型 | 路徑 |
|
||||
|------|------|
|
||||
|
||||
61
docs/adr/ADR-010-gitea-cicd-pipeline.md
Normal file
61
docs/adr/ADR-010-gitea-cicd-pipeline.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# ADR-010: EwoooC Gitea CI/CD Pipeline 建立
|
||||
|
||||
- **Status**: Accepted
|
||||
- **Date**: 2026-04-19
|
||||
- **Deciders**: 統帥
|
||||
|
||||
## Context
|
||||
|
||||
EwoooC(MOMO Pro System)原本沒有自動化部署流程,每次改版都需要手動 scp + docker restart。其他產品線(AWOOOI 等)已跑在 Gitea Actions,統帥決定 EwoooC 也對齊相同模式。
|
||||
|
||||
## Decision
|
||||
|
||||
在 Gitea 建立 `wooo/ewoooc` repo(Public),並在 `.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
|
||||
@@ -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 Pipeline(Gitea Actions + Docker Compose) | Accepted | 2026-04-19 |
|
||||
|
||||
## 規範
|
||||
|
||||
|
||||
Reference in New Issue
Block a user