78 lines
3.7 KiB
YAML
78 lines
3.7 KiB
YAML
# =============================================================================
|
||
# 用途:PR(非 master 分支、opened/synchronize)觸發的 CI。
|
||
# 流程:先用 release-tag-version composite action 算出 beta 版本號,再用該版本號
|
||
# 叫 codex composite action 執行(未帶 prompt,走取登入 email 分支),
|
||
# 最後以「檢查輸出」step 驗證輸出的登入帳號 email 是否等於 vars.CODEX_EMAIL。
|
||
# 更新日期:2026/06/29 14:18:26
|
||
# =============================================================================
|
||
|
||
# workflow 顯示名稱,於 Gitea Actions 列表中辨識此工作流程。
|
||
name: CI
|
||
|
||
# 觸發條件設定區塊。
|
||
on:
|
||
# 針對 pull_request 事件觸發。
|
||
pull_request:
|
||
# 略過目標分支為 master 的 PR(亦即只在「非 master 分支」的 PR 上跑),
|
||
# 避免對 master 的合併 PR 重複執行 CI。
|
||
branches-ignore:
|
||
- master
|
||
# 僅在 PR 被開啟(opened)或有新 commit 推入(synchronize)時觸發,
|
||
# 其他事件(如 reopened、labeled)不觸發以節省資源。
|
||
types: [opened, synchronize]
|
||
|
||
# 工作(jobs)定義區塊。
|
||
jobs:
|
||
# 第一個 job:計算 beta 版本號,供後續 codex job 取用。
|
||
release-tag-version:
|
||
# job 顯示名稱。
|
||
name: Release Tag Version
|
||
# 指定執行的 runner 標籤(ubuntu)。
|
||
runs-on: ubuntu
|
||
# 對外輸出值,讓相依此 job 的其他 job 可引用。
|
||
outputs:
|
||
# 將 release-tag-version step 算出的 version 輸出,鍵名為 version。
|
||
version: ${{ steps.release-tag-version.outputs.version }}
|
||
# 步驟清單。
|
||
steps:
|
||
# 呼叫 release-tag-version composite action 計算版本號。
|
||
- name: 計算版本號
|
||
# 此 step 的 id,供 outputs 透過 steps.release-tag-version 引用其輸出。
|
||
id: release-tag-version
|
||
# 使用外部 composite action;版本由 repo 變數 ACTION_RELEASE_TAG_VERSION 決定,
|
||
# 便於集中管理所引用 action 的版本。
|
||
uses: https://gitea.jsc.idv.tw/composite-actions/release-tag-version@${{ vars.ACTION_RELEASE_TAG_VERSION }}
|
||
with:
|
||
# 指定產生 beta 版本號(而非正式版),用於 CI 測試情境。
|
||
is_beta: 'true'
|
||
|
||
# 第二個 job:用前一 job 算出的版本號叫 codex action,再驗證其輸出。
|
||
codex:
|
||
# job 顯示名稱。
|
||
name: Codex
|
||
# 指定執行的 runner 標籤(ubuntu)。
|
||
runs-on: ubuntu
|
||
# 相依 release-tag-version job,需等其成功後才執行,
|
||
# 以取得其輸出的版本號。
|
||
needs: release-tag-version
|
||
# 步驟清單。
|
||
steps:
|
||
# 步驟一:呼叫 codex composite action(未帶 prompt,走「取登入 email」分支)。
|
||
- name: 測試工具
|
||
# 此 step 的 id,供後續「檢查輸出」step 引用其 outputs.text。
|
||
id: codex
|
||
# 使用 codex composite action;版本標籤由前一 job 輸出的 version 組成
|
||
# (前綴 v),確保測試所用 codex action 與本次算出的 beta 版本一致。
|
||
uses: https://gitea.jsc.idv.tw/composite-actions/codex@v${{ needs.release-tag-version.outputs.version }}
|
||
with:
|
||
# 由 secrets 注入 codex 登入用 OAuth 憑證,避免明文外洩。
|
||
# 注意:未提供 prompt,codex action 會回傳目前登入帳號的 email。
|
||
oauth: ${{ secrets.CODEX_OAUTH }}
|
||
# 步驟二:驗證登入身分。
|
||
- name: 檢查輸出
|
||
# 當 codex 輸出的登入 email 與 repo 變數 CODEX_EMAIL 不符時條件成立,
|
||
# 代表登入帳號不是預期帳號。
|
||
if: ${{ steps.codex.outputs.text != vars.CODEX_EMAIL }}
|
||
# 條件成立即以非零狀態碼退出,使 CI 失敗(擋下非預期登入帳號)。
|
||
run: exit 1
|