feat(codex): 新增 Codex CLI composite action #1
@@ -29,7 +29,7 @@ jobs:
|
||||
uses: https://gitea.jsc.idv.tw/composite-actions/codex@v${{ needs.release-tag-version.outputs.version }}
|
||||
with:
|
||||
oauth: ${{ secrets.CODEX_OAUTH }}
|
||||
prompt: "請告訴我目前登入的帳號,只要電子郵件不要其他任何資訊"
|
||||
- name: 檢查輸出
|
||||
if: ${{ steps.codex.outputs.text != vars.CODEX_EMAIL }}
|
||||
prompt: "請自我介紹"
|
||||
- name: 檢查登入帳號
|
||||
if: ${{ steps.codex.outputs.email != vars.CODEX_EMAIL }}
|
||||
run: exit 1
|
||||
|
||||
+16
-1
@@ -13,6 +13,9 @@ outputs:
|
||||
text:
|
||||
description: '輸出的文字'
|
||||
value: ${{ steps.codex.outputs.text }}
|
||||
email:
|
||||
description: '目前登入帳號的電子郵件(取自 OAuth id_token)'
|
||||
value: ${{ steps.codex.outputs.email }}
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
@@ -38,11 +41,23 @@ runs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
text="$(codex exec --skip-git-repo-check --model "$MODEL" "$PROMPT")"
|
||||
text="$(codex exec --skip-git-repo-check -s danger-full-access --model "$MODEL" "$PROMPT")"
|
||||
printf '%s\n' "$text"
|
||||
|
||||
# 從 OAuth id_token(JWT)解出目前登入帳號的 email;正規表示式對冒號後空白容錯
|
||||
auth_file="$HOME/.codex/auth.json"
|
||||
id_token="$(grep -oE -m1 '"id_token"[[:space:]]*:[[:space:]]*"[^"]*"' "$auth_file" | sed -E 's/.*:[[:space:]]*"//; s/"$//' || true)"
|
||||
payload="$(printf '%s' "$id_token" | cut -d. -f2 | tr '_-' '/+')"
|
||||
case $((${#payload} % 4)) in
|
||||
2) payload="${payload}==" ;;
|
||||
3) payload="${payload}=" ;;
|
||||
esac
|
||||
email="$(printf '%s' "$payload" | base64 -d 2>/dev/null | grep -oE -m1 '"email"[[:space:]]*:[[:space:]]*"[^"]*"' | sed -E 's/.*:[[:space:]]*"//; s/"$//' || true)"
|
||||
|
||||
{
|
||||
echo 'text<<CODEX_OUTPUT'
|
||||
printf '%s\n' "$text"
|
||||
echo 'CODEX_OUTPUT'
|
||||
echo "email=$email"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
shell: bash
|
||||
|
||||
Reference in New Issue
Block a user