Gitea Workflow 說明文件
更新時間:2026/08/07 13:51:53
總覽
此專案(ai-code-review)目前包含兩個 workflow:
| Workflow 名稱 | 檔案位置 | 觸發條件 | 大致用途 |
|---|---|---|---|
CI |
.gitea/workflows/ci.yaml |
pull_request(opened、synchronize) |
計算版本號、必要時建立 release,並在目標分支為 develop(beta 情境)時執行 AI 程式碼審查(呼叫本專案自身發佈的 ai-code-review action) |
CD |
.gitea/workflows/master.yaml |
push 到 master 分支 |
輸出完整 Gitea event context,並查詢指定 commit 對應的 tag,作為後續部署流程的基礎資訊 |
以下依 workflow 檔案逐一整理細節。
Workflow 明細
CI(.gitea/workflows/ci.yaml)
- workflow 名稱:
CI(Gitea UI 顯示標題) - 檔案位置:
.gitea/workflows/ci.yaml - 用途說明:
buildjob:計算版本號(呼叫calculate-versionaction),並用計算出的版本建立 Gitea release/tag。testjob:僅在buildjob 判定為 beta 情境時執行,呼叫本專案自身發佈的ai-code-reviewaction 對 PR 進行 AI 程式碼審查。resultjob:等待前兩個 job 完成後,將版本號輸出到 log,作為流程結尾的確認步驟。
- 觸發條件:
pull_request事件,且事件類型限定為opened與synchronize(PR 建立與後續推送同步時觸發)。 - 主要輸入 / 環境參數:
gitea.base_ref:用來判斷 PR 目標分支是否為develop,據以設定IS_BETA環境變數。vars.ACTION_CALCULATE_VERSION:calculate-versionaction 的版本(buildjob 使用)。vars.ACTION_GITEA_RELEASE_VERSION:akkuman/gitea-release-action的版本(buildjob 使用)。gitea.event.repository.name、gitea.sha:組成 release 名稱與target_commitish。needs.build.outputs.version、needs.build.outputs.is_beta:test、resultjob 透過 job 輸出取得版本號與 beta 判定結果。
- 重要注意事項:
testjob 的執行條件為needs.build.outputs.is_beta == 'true',即 PR 目標分支(gitea.base_ref)為develop時才會執行 AI 程式碼審查。Publishing Release步驟會用VERSION與gitea.sha建立對應的 release 與 tag(v${{ env.VERSION }}),beta 情境下標記為 prerelease。testjob 的「Run AI Code Review」步驟在ci.yaml中本身未透過with或env傳入任何額外參數;該步驟呼叫的是本專案自身發佈的ai-code-review@v{VERSION}action,實際會用到哪些secrets.*/vars.*(例如 action 內部的 token、CLI Proxy 相關設定)屬於該 action 自身的定義範圍,不在ci.yaml這個 workflow 檔案內顯式宣告,需人工確認該 action 版本實際所需的機密與變數是否已在目標環境設定妥當。- 若
vars.ACTION_CALCULATE_VERSION、vars.ACTION_GITEA_RELEASE_VERSION等變數未設定,對應步驟會失敗,需人工確認部署前置條件是否齊備。
CD(.gitea/workflows/master.yaml)
- workflow 名稱:
CD(Gitea UI 顯示標題) - 檔案位置:
.gitea/workflows/master.yaml - 用途說明:單一
deployjob,在推送到master分支後,輸出完整的 Gitea event context,並取回完整原始碼與 tag 歷史後,查詢指定 commit 對應的 tag,將結果印出。整個 workflow 目前僅做資訊輸出與查詢,未包含實際部署動作。 - 觸發條件:
push事件,且限定分支為master。 - 主要輸入 / 環境參數:
gitea(整個 context,透過toJSON(gitea)轉字串):以GITEA_CONTEXT環境變數輸出並用jq顯示。gitea.event.commits[1].id:作為COMMIT_SHA,用來查詢該 commit 對應的 tag。vars.ACTION_CHECKOUT_VERSION:actions/checkoutaction 的版本。GITEA_OUTPUT:Get Commit Tag步驟將git describe --contains的查詢結果寫入此檔案,供steps.commit.outputs.tag讀取。
- 重要注意事項:
- 需人工確認:
COMMIT_SHA目前固定取用gitea.event.commits陣列的第 2 筆(索引 1,即commits[1])。若一次push事件只包含 1 筆 commit,該索引將不存在,COMMIT_SHA可能為空值,導致後續git describe --contains查詢失敗或行為不符預期;是否需改為取最後一筆(例如commits[-1]或依陣列長度動態取值)需人工確認並評估是否調整(本文件僅整理現況,未變更任何 workflow 實際邏輯)。 Get Commit Tag步驟依賴完整的 git 歷史與 tag 資訊,因此Source Code Checkout已設定fetch-depth: 0與fetch-tags: true,若移除這兩個設定會導致git describe --contains查不到結果。Show Gitea Context會將完整事件內容輸出到 log,若事件內容包含敏感資訊,需注意執行環境的日誌保存與存取權限策略。
- 需人工確認:
備註
- 本文件僅整理
ci.yaml、master.yaml兩個 workflow 檔案目前的行為與參數重點,內容依實際檔案內容彙整,未新增或臆測未在檔案中出現的流程與參數;標註「需人工確認」之處為既有設計中需要人工再次確認的風險點,非文件本身待補內容。 - 若後續要以本文件覆蓋既有說明文件,請先確認
ci.yaml與master.yaml所引用的vars.*、secrets.*已在目標環境(Gitea repo/organization 設定)中正確配置。