feat(codex): 新增 Codex CLI composite action #1

Merged
admin merged 15 commits from ai-review-resolve/develop-20260629-115924 into develop 2026-06-29 06:17:23 +00:00
Member

變更摘要

將原本的「Composite Action 範本」改造為實際可用的 Codex CLI composite action,並調整 CI workflow 以驗證該 action,最後補上 README 使用說明。

重點檔案

  • action.yml:由通用範本改為 Codex CLI action。
    • 輸入改為 prompt(提示詞,選填)與 oauth(base64 編碼的 OAuth token,必填)。
    • 新增「安裝工具」step:npm install -g @openai/codex,將 OAuth token 解碼寫入 $HOME/.codex/auth.json 並設定權限 700/600
    • 新增「執行工具」step:讀取 vars.CODEX_MODEL,執行 codex exec --model "$MODEL" "$PROMPT",並以 heredoc 方式將輸出寫入 steps.codex.outputs.text
  • .gitea/workflows/ci.yaml:CI 由原本的 AI code review 改為兩個任務:
    • release-tag-version:呼叫 release-tag-version action 以 beta 模式計算版本號。
    • codex:依計算出的版本號呼叫本 action,並比對輸出是否符合 vars.CODEX_EMAIL
  • README.md(新增):說明 action 用途、專案列表、使用範例與前置條件。

影響範圍

  • 此 action 的對外介面(inputs/outputs)變更:移除舊的 text 輸入,新增 promptoauth;輸出維持 text 但來源改為 codex step。
  • CI 流程改為實際執行 Codex CLI 的整合測試。

風險與注意事項

  • oauth 為必填且屬機密,需由呼叫端以 secrets 提供;token 會寫入 runner 的 $HOME/.codex/auth.json
  • 執行需具備 vars.CODEX_MODEL,缺少時 action 會主動報錯並結束。
  • runner 必須能透過 npm 安裝 @openai/codex
## 變更摘要 將原本的「Composite Action 範本」改造為實際可用的 **Codex CLI composite action**,並調整 CI workflow 以驗證該 action,最後補上 README 使用說明。 ## 重點檔案 - **`action.yml`**:由通用範本改為 Codex CLI action。 - 輸入改為 `prompt`(提示詞,選填)與 `oauth`(base64 編碼的 OAuth token,必填)。 - 新增「安裝工具」step:`npm install -g @openai/codex`,將 OAuth token 解碼寫入 `$HOME/.codex/auth.json` 並設定權限 `700`/`600`。 - 新增「執行工具」step:讀取 `vars.CODEX_MODEL`,執行 `codex exec --model "$MODEL" "$PROMPT"`,並以 heredoc 方式將輸出寫入 `steps.codex.outputs.text`。 - **`.gitea/workflows/ci.yaml`**:CI 由原本的 AI code review 改為兩個任務: - `release-tag-version`:呼叫 release-tag-version action 以 beta 模式計算版本號。 - `codex`:依計算出的版本號呼叫本 action,並比對輸出是否符合 `vars.CODEX_EMAIL`。 - **`README.md`**(新增):說明 action 用途、專案列表、使用範例與前置條件。 ## 影響範圍 - 此 action 的對外介面(inputs/outputs)變更:移除舊的 `text` 輸入,新增 `prompt`、`oauth`;輸出維持 `text` 但來源改為 codex step。 - CI 流程改為實際執行 Codex CLI 的整合測試。 ## 風險與注意事項 - `oauth` 為必填且屬機密,需由呼叫端以 `secrets` 提供;token 會寫入 runner 的 `$HOME/.codex/auth.json`。 - 執行需具備 `vars.CODEX_MODEL`,缺少時 action 會主動報錯並結束。 - runner 必須能透過 npm 安裝 `@openai/codex`。
jiantw83 added 3 commits 2026-06-29 04:00:29 +00:00
jiantw83 added 1 commit 2026-06-29 04:17:06 +00:00
fix(codex): 為 codex exec 加上 --skip-git-repo-check 以略過 git repo 檢查
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Failing after 31s
e4fc162b55
jiantw83 added 1 commit 2026-06-29 04:28:45 +00:00
fix(codex): 修正 runner 沙箱並改以 OAuth id_token 的 email 驗證登入帳號
CI / Release Tag Version (pull_request) Successful in 3s
CI / Codex (pull_request) Successful in 23s
fd59eb2729
codex exec 加上 -s danger-full-access 避免 runner 容器內 bubblewrap 因
無法建立 user namespace 而失敗;action 新增 email output(解析 auth.json
id_token 的 email claim),CI 改用 steps.codex.outputs.email 比對
vars.CODEX_EMAIL,不再依賴模型自行回報帳號。
jiantw83 added 1 commit 2026-06-29 04:35:39 +00:00
fix(codex): 改以 codex exec 真實往返驗證登入,移除直接解析 OAuth token
CI / Release Tag Version (pull_request) Successful in 3s
CI / Codex (pull_request) Successful in 20s
7ee6921c63
不再解析 auth.json 的 id_token 來取得 email(只證明 secret 解得開、
無法確保工具真的登入成功)。改為透過 codex exec 實際呼叫模型:登入無效
或 token 過期時 codex exec 會直接失敗,CI 再以 steps.codex.outputs.text
是否為空做最終把關。action 移除 email output,保留 -s danger-full-access
以避免 runner 容器內 bubblewrap 沙箱失敗。
jiantw83 added 1 commit 2026-06-29 04:48:50 +00:00
fix(codex): 改用 codex app-server account/read 取得登入帳號 email 驗證身分
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Successful in 31s
6e771e2e52
不解析本地 OAuth token,改透過 codex 自身的 app-server JSON-RPC
account/read(即 TUI /status 的 Account 來源)取得登入帳號 email,
新增 email output;CI 以 steps.codex.outputs.email 比對 vars.CODEX_EMAIL
確認是正確帳號。codex exec 仍保留以確保 token 實際有效。
jiantw83 added 1 commit 2026-06-29 04:52:03 +00:00
refactor(codex): 將 app-server 取帳號邏輯抽到 app/codex_account.py
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Successful in 21s
672900762e
把原本內嵌在 action.yml heredoc 的 python 抽成獨立檔 app/codex_account.py,
action 改以 $GITHUB_ACTION_PATH/app/codex_account.py 呼叫,便於閱讀與維護。
jiantw83 added 1 commit 2026-06-29 04:56:02 +00:00
refactor(codex): oauth 改從 secrets 取得、帳號驗證收進 action 內
CI / Release Tag Version (pull_request) Successful in 3s
CI / Codex (pull_request) Failing after 13s
d05610d4e5
oauth 不再經由 inputs 傳入,action 直接讀 secrets.CODEX_OAUTH(與
vars.CODEX_MODEL 相同模式)。登入帳號驗證移入 action:讀 vars.CODEX_EMAIL
與 app-server 取得的 email 比對,不再輸出 email 到 outputs、不在 CI 端比對。
jiantw83 added 1 commit 2026-06-29 05:35:44 +00:00
fix(codex): 改由 job 層 env 從 secrets 注入 CODEX_OAUTH
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Successful in 21s
08890b5b9d
composite action 內無法解析 secrets context(Gitea 與 GitHub 皆然,
vars 可、secrets 不可),導致 OAUTH 為空。改由呼叫端 workflow 在 job 層
以 env: CODEX_OAUTH: ${{ secrets.CODEX_OAUTH }} 注入,action 從繼承的
環境變數讀取並加空值把關;secret 仍源自 secrets、不經 inputs 傳遞。
jiantw83 added 1 commit 2026-06-29 05:42:40 +00:00
fix(codex): oauth 改回經 inputs.oauth 傳入
CI / Release Tag Version (pull_request) Successful in 3s
CI / Codex (pull_request) Successful in 20s
a309afdf58
composite action 讀不到 secrets context,改回由呼叫端以 with: oauth:
${{ secrets.CODEX_OAUTH }} 經 inputs.oauth 傳入;action 從 inputs.oauth
讀取並保留空值把關,移除 job 層 CODEX_OAUTH env。
jiantw83 added 1 commit 2026-06-29 05:58:51 +00:00
refactor(codex): move email validation into main execution step and remove redundant check
CI / Release Tag Version (pull_request) Successful in 3s
CI / Codex (pull_request) Failing after 23s
4077596fcc
jiantw83 added 1 commit 2026-06-29 06:09:32 +00:00
refactor(codex): 移除 action 內登入帳號驗證,改由呼叫端檢查
CI / Release Tag Version (pull_request) Successful in 3s
CI / Codex (pull_request) Successful in 19s
03d082d0f3
jiantw83 added 1 commit 2026-06-29 06:11:10 +00:00
fix(ci): add output check to validate response against expected email
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Failing after 31s
0c8b0ad511
jiantw83 added 1 commit 2026-06-29 06:12:11 +00:00
refactor(codex): remove default prompt from inputs in action.yml
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Successful in 14s
b092376476
admin merged commit 5c5dc2bca4 into develop 2026-06-29 06:17:23 +00:00
admin deleted branch ai-review-resolve/develop-20260629-115924 2026-06-29 06:17:23 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: old-composite-actions/codex#1