113 lines
3.8 KiB
YAML
113 lines
3.8 KiB
YAML
# 用途:CI workflow 的 command-file 草稿,保留原始流程並補上逐行說明。
|
|
# 更新時間:2026/07/11 19:00:45
|
|
# workflow 名稱,對應 Gitea UI 中的顯示標題。
|
|
name: CI
|
|
# 定義此 workflow 的觸發事件。
|
|
on:
|
|
# 在 pull request 事件時執行。
|
|
pull_request:
|
|
# 只在建立與同步更新 PR 時觸發。
|
|
types: [opened, synchronize]
|
|
# workflow 內的工作列表。
|
|
jobs:
|
|
# 第一個 job:負責版本計算與 release 發佈。
|
|
build:
|
|
# job 顯示名稱,用來區分執行階段。
|
|
name: 1. BUILD
|
|
# 使用 Ubuntu runner 執行。
|
|
runs-on: ubuntu
|
|
# job 層級環境變數。
|
|
env:
|
|
# 目標分支為 develop 時視為 beta。
|
|
IS_BETA: ${{ gitea.base_ref == 'develop' }}
|
|
# 對外輸出供後續 job 使用。
|
|
outputs:
|
|
# 輸出版本字串。
|
|
version: ${{ env.VERSION }}
|
|
# 輸出是否為 beta。
|
|
is_beta: ${{ env.IS_BETA }}
|
|
# build job 的執行步驟。
|
|
steps:
|
|
# 先依 repo 狀態計算版本號。
|
|
- name: Calculate Version
|
|
# 供後續步驟讀取輸出用的 step id。
|
|
id: calculate-version
|
|
# 使用版本計算 action。
|
|
uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }}
|
|
# 傳入 action 參數。
|
|
with:
|
|
# 告知 action 是否為 beta 分支情境。
|
|
is_beta: ${{ env.IS_BETA }}
|
|
# 依計算出的版本建立 release。
|
|
- name: Publishing Release
|
|
# 使用 release action。
|
|
uses: akkuman/gitea-release-action@${{ vars.ACTION_GITEA_RELEASE_VERSION }}
|
|
# 這個 step 的環境變數。
|
|
env:
|
|
# 取前一步算出的版本號。
|
|
VERSION: ${{ steps.calculate-version.outputs.version }}
|
|
# release action 的參數。
|
|
with:
|
|
# release 名稱。
|
|
name: "${{ gitea.event.repository.name }} v${{ env.VERSION }}"
|
|
# release tag 名稱。
|
|
tag_name: "v${{ env.VERSION }}"
|
|
# 指向目前提交。
|
|
target_commitish: ${{ gitea.sha }}
|
|
# beta 情境時標記為 prerelease。
|
|
prerelease: ${{ env.IS_BETA }}
|
|
# 第二個 job:在 beta 情境執行 AI Code Review。
|
|
test:
|
|
# job 顯示名稱。
|
|
name: 2. TEST
|
|
# 使用 Ubuntu runner。
|
|
runs-on: ubuntu
|
|
# 必須等 build job 完成。
|
|
needs: [build]
|
|
# 只有 beta 情境才執行。
|
|
if: ${{ needs.build.outputs.is_beta == 'true' }}
|
|
# job 層級環境變數。
|
|
env:
|
|
# 使用 build job 輸出的版本號。
|
|
VERSION: ${{ needs.build.outputs.version }}
|
|
# test job 的步驟。
|
|
steps:
|
|
# 安裝或設定 LLM CLI。
|
|
- name: Setup LLM CLI
|
|
# 使用對應的 setup action。
|
|
uses: https://gitea.jsc.idv.tw/actions/setup-${{ vars.ACTION_SETUP_LLM_CLI }}
|
|
# 傳入設定。
|
|
with:
|
|
# LLM CLI 的 OAuth 憑證。
|
|
oauth: ${{ secrets.LLM_OAUTH }}
|
|
# 執行 AI Code Review action。
|
|
- name: Run AI Code Review
|
|
# step id,方便追蹤。
|
|
id: ai-code-review
|
|
# 使用本 repo 發佈的 action。
|
|
uses: https://gitea.jsc.idv.tw/actions/ai-code-review@v${{ env.VERSION }}
|
|
# action 參數。
|
|
with:
|
|
# 存取 Gitea API 的 token。
|
|
token: ${{ secrets.TOKEN }}
|
|
# 指定 LLM 模型名稱。
|
|
model: ${{ vars.LLM_NAME }}
|
|
# 第三個 job:輸出最終版本資訊。
|
|
result:
|
|
# job 顯示名稱。
|
|
name: 3. RESULT
|
|
# 使用 Ubuntu runner。
|
|
runs-on: ubuntu
|
|
# 需等待前兩個 job。
|
|
needs: [build,test]
|
|
# job 層級環境變數。
|
|
env:
|
|
# 延續 build 的版本號。
|
|
VERSION: ${{ needs.build.outputs.version }}
|
|
# result job 的步驟。
|
|
steps:
|
|
# 顯示版本號。
|
|
- name: Show Version
|
|
# 將版本輸出到 log。
|
|
run: echo "$VERSION"
|