64 lines
4.0 KiB
YAML
64 lines
4.0 KiB
YAML
# =============================================================================
|
||
# 檔案用途(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-review:job 的識別 id(在 needs、輸出引用等地方會用到此 id)。
|
||
ai-code-review:
|
||
# name:job 的顯示名稱,會出現在 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 }}
|