Compare commits
15
Commits
5058a5dd4a
..
v0.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6180f765a | ||
|
|
5a4459fb00 | ||
|
|
7224e6dbcf | ||
|
|
5383c6884d | ||
|
|
53b5739e06 | ||
|
|
6491a35da4 | ||
|
|
6bfc2c1940 | ||
|
|
7ec855de3d | ||
|
|
4632a709aa | ||
|
|
ffb0369ee1 | ||
|
|
4bcf4d6473 | ||
|
|
3f99382936 | ||
|
|
e97e862748 | ||
|
|
f23f1674e4 | ||
|
|
3c58fe37e8 |
+14
-16
@@ -3,8 +3,9 @@
|
||||
# 當有 commit push 到 master 分支時觸發,流程分兩個 job 依序執行:
|
||||
# 1. release-tag-version:釋出並標註成品版本,取得版本號。
|
||||
# 2. docker-build-push:依上一步取得的版本號 docker build 映像檔,
|
||||
# 並 push 到 gitea.jsc.idv.tw 倉庫。
|
||||
# 更新日期:2026/06/30 12:00:23
|
||||
# 並 push 到倉庫;倉庫主機由 vars.SERVER_DOMAIN 提供,
|
||||
# 登入帳密由 secrets.USERNAME / secrets.PASSWORD 提供。
|
||||
# 更新日期:2026/06/30 12:24:01
|
||||
# =============================================================================
|
||||
|
||||
# workflow 名稱,會顯示在 Gitea Actions 介面上,方便辨識此流程
|
||||
@@ -48,14 +49,6 @@ jobs:
|
||||
# 宣告此 job 相依於 release-tag-version;
|
||||
# 確保版本號先產生完成才執行,並可透過 needs 取得其 outputs
|
||||
needs: release-tag-version
|
||||
# 此 job 範圍內的環境變數,供下方 steps 的 run 指令使用
|
||||
env:
|
||||
# 目標倉庫主機(Gitea container registry 位址)
|
||||
SERVER: gitea.jsc.idv.tw
|
||||
# 登入倉庫所使用的帳號
|
||||
USERNAME: jiantw83
|
||||
# 登入倉庫所使用的密碼/權杖,從 Gitea secrets 取得,避免明文外洩
|
||||
PASSWORD: ${{ secrets.TOKEN }}
|
||||
# 此 job 的執行步驟清單
|
||||
steps:
|
||||
# 步驟:取出原始碼到 runner 工作目錄,後續 docker build 需要 Dockerfile 等檔案
|
||||
@@ -64,20 +57,25 @@ jobs:
|
||||
uses: actions/checkout@${{ vars.ACTION_CHECKOUT_VERSION }}
|
||||
# 步驟:登入 Docker 倉庫,取得推送映像檔的權限
|
||||
- name: 登入倉庫
|
||||
# 將密碼透過管線餵給 docker login 的 --password-stdin,避免密碼出現在指令參數中
|
||||
run: echo $PASSWORD | docker login $SERVER -u $USERNAME --password-stdin
|
||||
# 登入指令直接以表達式注入認證資訊:
|
||||
# secrets.PASSWORD 為倉庫密碼、vars.SERVER_DOMAIN 為倉庫主機位址、
|
||||
# secrets.USERNAME 為登入帳號;
|
||||
# 密碼透過管線餵給 docker login 的 --password-stdin,
|
||||
# 避免密碼出現在指令參數中而被記錄於 log
|
||||
run: echo ${{ secrets.PASSWORD }} | docker login ${{ vars.SERVER_DOMAIN }} -u ${{ secrets.USERNAME }} --password-stdin
|
||||
# 指定以 bash 執行此指令
|
||||
shell: bash
|
||||
# 步驟:建置 Docker 映像檔
|
||||
- name: 建置映像檔
|
||||
# 以倉庫名稱(gitea.repository)為 image 名稱、上一個 job 產生的 version 為 tag,
|
||||
# image 名稱由 vars.SERVER_DOMAIN(倉庫主機)與 gitea.repository(倉庫名稱)組成、
|
||||
# 以 needs.release-tag-version.outputs.version(上一個 job 產生的版本號)為 tag,
|
||||
# 對當前目錄(.)的 Dockerfile 進行 build
|
||||
run: docker build -t $SERVER/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }} .
|
||||
run: docker build -t ${{ vars.SERVER_DOMAIN }}/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }} .
|
||||
# 指定以 bash 執行此指令
|
||||
shell: bash
|
||||
# 步驟:將建置完成的映像檔推送到倉庫
|
||||
- name: 推送映像檔
|
||||
# push 與上一步相同名稱與 tag 的映像檔到 SERVER 指定的倉庫
|
||||
run: docker push $SERVER/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }}
|
||||
# push 與上一步相同名稱與 tag 的映像檔到 vars.SERVER_DOMAIN 指定的倉庫主機
|
||||
run: docker push ${{ vars.SERVER_DOMAIN }}/${{ gitea.repository }}:${{ needs.release-tag-version.outputs.version }}
|
||||
# 指定以 bash 執行此指令
|
||||
shell: bash
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
# runtime 階段同樣改用較小的 node-slim 基底,只帶入 build 階段安裝好的 codex
|
||||
# 套件與其相依,並額外安裝 ca-certificates 以支援 HTTPS 連線,
|
||||
# 最終映像預設執行 `codex --version`。
|
||||
# 更新日期:2026/06/30 12:00:12
|
||||
# 更新日期:2026/06/30 12:23:42
|
||||
# =============================================================================
|
||||
|
||||
# syntax 指示詞:指定使用 dockerfile:1 前端語法,啟用 BuildKit 進階功能(必須置於檔首第一行有效指令)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# codex
|
||||
|
||||
> 更新時間(Asia/Taipei):2026/06/30 12:04:48
|
||||
> 更新時間(Asia/Taipei):2026/06/30 12:29:20
|
||||
|
||||
以多階段建置(multi-stage build)打包 [@openai/codex](https://www.npmjs.com/package/@openai/codex) CLI 的 Docker 映像檔專案。build 階段於 `node:<版本>-slim` 透過 npm 全域安裝 codex CLI,runtime 階段改用同樣精簡的 `node-slim` 基底,只帶入 codex 套件與其相依,並額外安裝 `ca-certificates` 以支援 HTTPS 連線,最終映像預設執行 `codex --version`。搭配 `.gitea/workflows/cd.yaml`,當 push 到 `master` 分支時,會自動釋出版本號、建置映像檔並推送到 Gitea 倉庫。
|
||||
|
||||
@@ -75,6 +75,16 @@ docker build --build-arg CODEX_PACKAGE=@openai/codex@latest -t codex:latest .
|
||||
`.gitea/workflows/cd.yaml` 定義 CD 流程:當 push 到 `master` 分支時觸發,依序執行兩個 job:
|
||||
|
||||
1. **Release Tag Version**:以共用 composite action 釋出並標註成品版本,輸出 `version`。
|
||||
2. **Docker Build & Push**:checkout 原始碼 → 登入 `gitea.jsc.idv.tw` 倉庫(帳密來自 secrets)→ 以 `gitea.repository` 為映像名稱、上一步 `version` 為 tag 建置並推送映像檔。
|
||||
2. **Docker Build & Push**:checkout 原始碼 → 登入倉庫 → 建置並推送映像檔。
|
||||
|
||||
> 對外契約(CI 倉庫位址 `gitea.jsc.idv.tw`、登入帳號、`secrets.TOKEN`、建置與推送指令)皆沿用原設定,未變更。
|
||||
其中倉庫主機與登入認證皆由 Gitea 的 Actions 變數/密鑰提供:
|
||||
|
||||
| 設定來源 | 用途 |
|
||||
| --- | --- |
|
||||
| `vars.SERVER_DOMAIN` | 倉庫主機位址(image 名稱前綴、`docker login` 目標) |
|
||||
| `secrets.USERNAME` | 登入倉庫的帳號 |
|
||||
| `secrets.PASSWORD` | 登入倉庫的密碼/權杖(以 `--password-stdin` 餵入,避免出現在指令參數) |
|
||||
| `vars.ACTION_RELEASE_TAG_VERSION` | 釘選 release-tag-version composite action 版本 |
|
||||
| `vars.ACTION_CHECKOUT_VERSION` | 釘選 checkout action 版本 |
|
||||
|
||||
> 映像檔最終標籤格式為 `${vars.SERVER_DOMAIN}/${gitea.repository}:${version}`,其中 `version` 來自 Release Tag Version job 的輸出。
|
||||
|
||||
Reference in New Issue
Block a user