Files
codex/README.md
T
jiantw83 15dc62d929
CI / Release Tag Version (pull_request) Successful in 4s
CI / Codex (pull_request) Successful in 14s
chore(Dockerfile): 建置時驗證 Codex 帳號電子郵件
2026-06-29 10:13:58 +00:00

90 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Codex CLI Composite Action
提供一個 Gitea/GitHub Actions composite action,用於安裝 Codex CLI、寫入 OAuth token、執行指定提示詞,並將 CLI 輸出寫入 action output;另提供透過 `codex app-server` 取得目前登入帳號 email 的 Node.js helper。
> 更新時間:2026/06/29 14:18:26
## 專案列表
### 專案描述
| 專案名稱 | 專案描述 |
| --- | --- |
| [codex](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/) | 提供 Codex CLI composite action(安裝 `@openai/codex`、寫入 OAuth token、執行提示詞並輸出文字),並提供透過 `codex app-server` JSON-RPC `account/read` 取得目前登入帳號 email 的 Node.js helper。 |
### 參考專案
| 專案名稱 | 參考專案列表 |
| --- | --- |
| [codex](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/) | 無 |
### NuGet 套件
| 專案名稱 | NuGet 套件列表 |
| --- | --- |
| [codex](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/) | 無 |
## 功能列表
### codex
| 功能名稱 | 功能描述 |
| --- | --- |
| [app/codex_account.js](https://gitea.jsc.idv.tw/composite-actions/codex/src/branch/develop/app/codex_account.js#L1) | [透過 codex app-server 的 JSON-RPC `account/read` 取得目前登入帳號的 email,取不到或逾時輸出空字串。](#appcodex_accountjs) |
## 使用範例
<a id="appcodex_accountjs"></a>
### app/codex_account.js
透過 `codex app-server` 的 JSON-RPC `account/read` 取得目前登入帳號的 email。腳本會啟動 `codex app-server` 子行程,依序送出 `initialize` / `initialized` / `account/read` 三筆 JSON-RPC 訊息,使用 Node.js 標準函式庫讀取回應中 `result.account.email` 並輸出到 stdout;讀到 EOF、JSON 解析失敗或超過逾時都會停止,取不到時輸出空字串。
前置條件:
- `codex` CLI 已安裝(例如本 action 的安裝步驟已執行)。
- Node.js 已安裝。
- `$HOME/.codex/auth.json` 已寫入有效的 OAuth token。
典型呼叫方式:
```bash
# 取得目前登入帳號 email;預設等待 25 秒
node app/codex_account.js
# 自訂等待 app-server 回應的逾時秒數
node app/codex_account.js 10
```
預期結果:
- 成功時輸出登入帳號的 email 字串。
- 未登入、回應缺漏或逾時時輸出空字串。
此模組亦可直接以指令執行,會將 email 印到 stdout(取不到時印空字串):
```bash
node app/codex_account.js
```
## Docker
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile,會安裝 Node.js/npm 與 `@openai/codex`
```bash
DOCKER_BUILDKIT=1 docker build \
--secret id=codex_auth,src=/home/coder/jiantw83/Docker/gitea/codex/housefun.dev.01@gmail.com \
--build-arg EXPECTED_CODEX_EMAIL='temp@gmail.com' \
-t codex-account .
docker run --rm -v "$HOME/.codex:/root/.codex:ro" codex-account
```
建置階段會透過 BuildKit secret 暫時掛載 OAuth token,執行 `verify-codex-email` 檢查 `codex-account` 取得的 email 是否等於 `EXPECTED_CODEX_EMAIL`。預設值為 `temp@gmail.com`;不相符時 `docker build` 會失敗,且 token 不會保留在 image layer。
容器啟動後預設執行 `codex-account`
```bash
docker run --rm \
-v "$HOME/.codex:/root/.codex:ro" \
codex-account
```