# GITEA NODE ACTION 工作流說明草稿

更新時間：2026/07/11 18:54:51

## 總覽

此專案目前包含兩個 workflow：

- `CI`：處理 pull request 期間的版本計算、釋出與 AI 程式碼審查。
- `CD`：處理推送到 `master` 分支後的部署相關檢查與資訊輸出。

## Workflow 明細

### CI

- 檔案位置：`.gitea/workflows/ci.yaml`
- 用途：在 pull request 事件中計算版本，必要時建立 release，並在 beta 情境下執行 AI 程式碼審查。
- 觸發條件：`pull_request`，事件類型為 `opened` 與 `synchronize`。
- 主要輸入 / 環境參數：
  - `gitea.base_ref`：用來判斷是否為 `develop`，進而決定 `IS_BETA`。
  - `vars.ACTION_CALCULATE_VERSION`：提供 `calculate-version` action 的版本。
  - `vars.ACTION_GITEA_RELEASE_VERSION`：提供 release action 的版本。
  - `secrets.LLM_OAUTH`：設定 LLM CLI 的 OAuth。
  - `secrets.TOKEN`：提供 AI 程式碼審查 action 存取 Gitea API。
  - `vars.LLM_NAME`：指定審查使用的模型名稱。
- 重要注意事項：
  - `test` job 只會在 `IS_BETA == true` 時執行，也就是 pull request 目標分支為 `develop` 時。
  - `Publishing Release` 會使用 `VERSION` 與 `gitea.sha` 建立 release 與 tag。
  - 若變數或 secret 未設定，對應步驟會失敗，需人工確認部署前置條件。

### CD

- 檔案位置：`.gitea/workflows/master.yaml`
- 用途：在 `master` 分支推送後輸出 Gitea context、檢查提交標籤，作為後續部署流程的基礎。
- 觸發條件：`push` 到 `master` 分支。
- 主要輸入 / 環境參數：
  - `gitea` 事件內容：轉成 `GITEA_CONTEXT` 後交給 `jq` 顯示。
  - `gitea.event.commits[1].id`：作為 `COMMIT_SHA`，用來查詢 commit tag。
  - `vars.ACTION_CHECKOUT_VERSION`：提供 `actions/checkout` 的版本。
  - `GITEA_OUTPUT`：寫入 `git describe --contains` 的結果。
- 重要注意事項：
  - `COMMIT_SHA` 取用 commits 陣列的第 2 筆資料，若 push 事件實際只有 1 筆 commit，需人工確認是否會發生索引風險。
  - `Get Commit Tag` 依賴完整的 git 歷史與 tags，因此 checkout 已設定 `fetch-depth: 0` 與 `fetch-tags: true`。
  - `Show Gitea Context` 會輸出完整事件內容，若包含敏感資訊，需注意執行環境的日誌保存策略。

## 備註

- 本檔為草稿版本，僅整理 workflow 行為與設定重點，不修改任何 workflow 實際邏輯。
- 若後續要覆蓋正式檔，請先確認 `ci.yaml` 與 `master.yaml` 的變數與 secret 已在目標環境中正確配置。
