feat(ci): 限制 CI 僅在 master/develop 的 PR 觸發並修正 test 執行條件為 is_beta == 'true'

This commit is contained in:
Jeffery
2026-07-03 17:52:40 +08:00
parent 83877c5b73
commit 0d6a198233
+20 -5
View File
@@ -1,11 +1,13 @@
# ============================================================================= # =============================================================================
# CI WorkflowGitea Actions # CI WorkflowGitea Actions
# 用途:在 Pull Request 開啟或更新時觸發的持續整合流程,依序執行三個 job: # 用途:在 Pull Request 開啟或更新時觸發的持續整合流程,依序執行三個 job:
# 1. BUILD - 發佈 Gitea Releasebeta 版本號取自 run_number)。 # 1. BUILD - 發佈 Gitea Releasebeta 版本號取自 run_number,並輸出 is_beta
# 2. TEST - checkout 原始碼,執行本 composite actionsetup-codex), # 2. TEST - 依 BUILD 輸出的 is_beta 決定是否執行;checkout 原始碼,執行本
# 再用 codex exec 產生「自我介紹」文字,透過 heredoc 寫入 job output。 # composite actionsetup-codex),再用 codex exec 產生「自我介紹」
# 文字,透過 heredoc 寫入 job output。
# 3. RESULT - 顯示 TEST job 輸出的 message,用於驗證整條流程串接成功。 # 3. RESULT - 顯示 TEST job 輸出的 message,用於驗證整條流程串接成功。
# 更新日期:2026/07/03 11:41:20 # 另外,CI 僅在 base 分支為 master 或 develop 的 Pull Request 觸發。
# 更新日期:2026/07/03 17:43:30
# ============================================================================= # =============================================================================
# workflow 名稱,會顯示在 Gitea Actions 的執行清單中。 # workflow 名稱,會顯示在 Gitea Actions 的執行清單中。
@@ -14,6 +16,12 @@ name: CI
on: on:
# 監聽 Pull Request 事件。 # 監聽 Pull Request 事件。
pull_request: pull_request:
# 限制只有當 PR 的目標(base)分支為 master 或 develop 時才觸發此 CI。
branches:
# 納入的目標分支:master。
- master
# 納入的目標分支:develop。
- develop
# 僅在 PR「開啟」(opened) 或「有新 commit 推送 / 更新」(synchronize) 時觸發, # 僅在 PR「開啟」(opened) 或「有新 commit 推送 / 更新」(synchronize) 時觸發,
# 避免 closed / reopened 等其他事件也啟動整條 CI。 # 避免 closed / reopened 等其他事件也啟動整條 CI。
types: [opened, synchronize] types: [opened, synchronize]
@@ -30,7 +38,12 @@ jobs:
# 版本號規則:固定 0.0.0-beta. 前綴 + Gitea 的執行流水號 run_number # 版本號規則:固定 0.0.0-beta. 前綴 + Gitea 的執行流水號 run_number
# 讓每次 CI 產生遞增且唯一的 beta 版本字串。 # 讓每次 CI 產生遞增且唯一的 beta 版本字串。
VERSION: "0.0.0-beta.${{ gitea.run_number }}" VERSION: "0.0.0-beta.${{ gitea.run_number }}"
# 定義此 job 對外輸出,供後續 job(test)取用其判斷結果。
outputs: outputs:
# 【需人工確認】將環境變數 IS_BETA 暴露為 job 層級的 is_beta 輸出;但本 job 的
# env 只定義了 VERSION、並未定義 IS_BETA,因此 env.IS_BETA 會取到空字串,
# 配合 test 的 if ... == 'true' 判斷,將導致 test job 永遠被略過。
# 此行內容維持原樣不修改,請人工確認是否應補上 IS_BETA 的設定。
is_beta: ${{ env.IS_BETA }} is_beta: ${{ env.IS_BETA }}
# 此 job 的執行步驟。 # 此 job 的執行步驟。
steps: steps:
@@ -58,7 +71,9 @@ jobs:
runs-on: ubuntu runs-on: ubuntu
# 相依關係:需等 build job 成功後才執行。 # 相依關係:需等 build job 成功後才執行。
needs: [build] needs: [build]
if: ${{ needs.build.outputs.is_beta }} # 執行條件:僅當 build job 的 is_beta 輸出等於字串 'true' 時才執行本 test job
# 否則整個 test job 會被略過。
if: ${{ needs.build.outputs.is_beta == 'true' }}
# 定義此 job 對外輸出,供後續 job(result)取用。 # 定義此 job 對外輸出,供後續 job(result)取用。
outputs: outputs:
# 將名為 execute 的步驟輸出的 message,暴露為 job 層級的 message 輸出。 # 將名為 execute 的步驟輸出的 message,暴露為 job 層級的 message 輸出。