Files
release-tag-version/.gitea/workflows/ci.yaml
T
2026-06-26 10:51:52 +08:00

64 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# 檔案用途(Purpose):
# 這是一份 Gitea Actions 的 CI workflow 設定檔。
# 它的主要目的是:當開發者在本 repo 對「非 master」分支發起 Pull Request 時,
# 自動觸發一個名為「AI Code Review」的 job,呼叫共用的 composite action
# 「opencode-code-review」對該 PR 的程式碼變更做 AI 自動審查,並把審查意見
# 以留言(comment)方式回貼到該 PR。
#
# 更新日期(Last Updated):2026/06/26 10:14:14 (Asia/Taipei)
# =============================================================================
# workflow 顯示名稱,會出現在 Gitea Actions 的執行清單上,方便辨識這條流程。
name: CI
# on:定義此 workflow 的觸發事件區塊。
on:
# pull_request:當有 Pull Request 相關事件時觸發。
pull_request:
# branches-ignore:被列出的「目標分支(PR base/目的分支)」不會觸發此 workflow。
branches-ignore:
# 忽略目標分支為 master 的 PR;亦即合併進 master 的 PR 不跑此 AI 審查
# (通常 master 視為正式線上分支,審查在更早的開發分支階段完成)。
- master
# types:限定只在 PR 的「opened(首次開啟)」與「synchronize(後續推送新 commit 更新 PR)」
# 這兩種事件時觸發;其他事件(如 closed、reopened、labeled 等)不觸發,避免重複或不必要的審查。
types: [opened, synchronize]
# jobs:定義此 workflow 包含的工作(job)集合。
jobs:
# ai-code-reviewjob 的識別 id(在 needs、輸出引用等地方會用到此 id)。
ai-code-review:
# namejob 的顯示名稱,會出現在 Gitea Actions 介面上。
name: AI Code Review
# runs-on:指定此 job 執行所使用的 runner 標籤;此處為 ubuntu。
# 需人工確認:請確認 Gitea 上確實有註冊標籤為 "ubuntu" 的 runner,否則 job 會排不到機器而卡住。
runs-on: ubuntu
# permissions:設定此 job 內 GITHUB_TOKEN/Gitea token 對 repo 的存取權限範圍。
permissions:
# contents: write —— 對 repo 內容(檔案、commit 等)有寫入權限。
# AI 審查通常只需讀取程式碼;此處給 write,需人工確認是否確有寫入需求(最小權限原則)。
contents: write
# pull-requests: write —— 對 PR 有寫入權限,用於在 PR 上建立 / 更新審查留言。
pull-requests: write
# issues: write —— 對 issue 有寫入權限;Gitea/GitHub 中 PR 留言底層常走 issue comment API,故需此權限。
issues: write
# steps:此 job 依序執行的步驟清單。
steps:
# 第 1 個 step:呼叫外部共用 composite action 執行 AI 程式碼審查。
- name: AI 程式碼審查 by OpenCode
# uses:引用要執行的 composite action 來源與版本。
# 來源:https://gitea.jsc.idv.tw/composite-actions/opencode-code-review
# 版本:@${{ vars.ACTION_OPENCODE_CODE_REVIEW_VERSION }}
# 版本號取自 repo/organization 設定的變數 vars.ACTION_OPENCODE_CODE_REVIEW_VERSION
# 可集中管理升版,不需修改本檔。
# 需人工確認:請確認該 vars 變數已在 Gitea 設定且值有效(例如 v1.0.0 / 分支名 / commit),
# 若變數為空,action 參照會解析失敗導致 step 執行錯誤。
uses: https://gitea.jsc.idv.tw/composite-actions/opencode-code-review@${{ vars.ACTION_OPENCODE_CODE_REVIEW_VERSION }}
# with:傳遞給該 composite action 的輸入參數。
with:
# comment_token:提供給 action 用來回貼審查留言到 PR 的存取權杖(token)。
# 取自 secrets.COMMENT_TOKEN(機密,由 Gitea Secrets 管理,不應寫死在檔案中)。
# 需人工確認:請確認 secrets.COMMENT_TOKEN 已設定,且該 token 具有對本 repo PR/issue 留言的權限。
comment_token: ${{ secrets.COMMENT_TOKEN }}