calculate-version:多階段容器化、log 格式統一與 AI review 修復 #9

Merged
admin merged 7 commits from develop into master 2026-06-30 05:32:33 +00:00
Member

變更摘要

calculate-version action 標準化容器化、統一 log 格式,並修復 AI review findings:

  • 容器化/建置(refactor)Dockerfile 改為最新 node 多階段建置(build node:latest → runtime node:slim)以縮小最終映像;entrypoint.sh 啟動時先輸出 Action 名稱/用途/更新時間橫幅,再 exec node /app/index.js
  • log 格式(feat)loggerinfoerror 統一為 [INF|ERR][台灣時間]: 訊息 格式,並新增台灣時區(Asia/Taipei)時間戳。
  • 安全與除錯修復(fix)loadConfig 新增 GITEA_REPOSITORYowner/repo 格式驗證並阻擋 .. 路徑穿越;release JSON 解析失敗時,錯誤訊息附上截斷的回傳內容以利定位。
  • 測試整併(test):移除根目錄重複的 test/,以 union 方式整併進 app/test/(不丟失覆蓋),並新增 app/test/logger.test.js
  • 文件(docs):補齊各 function JSDoc、指令檔逐行註解,並重建 README.md
  • AI review(chore):3 條 findings 全數修復,findings.json 已清空(無誤報,exclusions.json 不變)。

影響範圍

  • 執行期可見的 log 輸出格式改變infoerror 加上等級與時間戳;entrypoint.sh 新增啟動橫幅);訊息內容與邏輯不變。
  • 容器建置方式改為多階段,但 action 對外的輸入/輸出契約不變。
  • GITEA_REPOSITORY 若非 owner/repo 形式(或含 ..)將拋錯(原本未驗證)。

重點檔案

檔案 變更
Dockerfileentrypoint.sh 多階段容器化、啟動資訊橫幅
app/config.jsapp/releases.js GITEA_REPOSITORY 驗證、解析錯誤訊息帶回傳內容
app/logger.js log 訊息統一為 [等級][時間]: 訊息
app/test/* 測試整併、新增 logger.test.js

風險與注意事項

  • log 格式變更會影響任何解析此 action 輸出的下游流程;屬格式調整,不改變訊息所反映的行為。
  • 容器映像未在本機 docker 驗證(環境未啟用 docker),請於 CI/可用環境確認 docker build 成功啟動。
  • 本機測試 node --test43 passed / 0 failed
## 變更摘要 將 `calculate-version` action 標準化容器化、統一 log 格式,並修復 AI review findings: - **容器化/建置(refactor)**:`Dockerfile` 改為最新 node 多階段建置(build `node:latest` → runtime `node:slim`)以縮小最終映像;`entrypoint.sh` 啟動時先輸出 Action 名稱/用途/更新時間橫幅,再 `exec node /app/index.js`。 - **log 格式(feat)**:`logger` 的 `info`/`error` 統一為 `[INF|ERR][台灣時間]: 訊息` 格式,並新增台灣時區(Asia/Taipei)時間戳。 - **安全與除錯修復(fix)**:`loadConfig` 新增 `GITEA_REPOSITORY` 的 `owner/repo` 格式驗證並阻擋 `..` 路徑穿越;release JSON 解析失敗時,錯誤訊息附上截斷的回傳內容以利定位。 - **測試整併(test)**:移除根目錄重複的 `test/`,以 union 方式整併進 `app/test/`(不丟失覆蓋),並新增 `app/test/logger.test.js`。 - **文件(docs)**:補齊各 function JSDoc、指令檔逐行註解,並重建 `README.md`。 - **AI review(chore)**:3 條 findings 全數修復,`findings.json` 已清空(無誤報,`exclusions.json` 不變)。 ## 影響範圍 - 執行期可見的 **log 輸出格式改變**(`info`/`error` 加上等級與時間戳;`entrypoint.sh` 新增啟動橫幅);訊息內容與邏輯不變。 - 容器**建置方式改為多階段**,但 action 對外的輸入/輸出契約不變。 - `GITEA_REPOSITORY` 若非 `owner/repo` 形式(或含 `..`)將拋錯(原本未驗證)。 ## 重點檔案 | 檔案 | 變更 | | --- | --- | | `Dockerfile`、`entrypoint.sh` | 多階段容器化、啟動資訊橫幅 | | `app/config.js`、`app/releases.js` | `GITEA_REPOSITORY` 驗證、解析錯誤訊息帶回傳內容 | | `app/logger.js` | log 訊息統一為 `[等級][時間]: 訊息` | | `app/test/*` | 測試整併、新增 `logger.test.js` | ## 風險與注意事項 - log 格式變更會影響任何解析此 action 輸出的下游流程;屬格式調整,不改變訊息所反映的行為。 - 容器映像**未在本機 docker 驗證**(環境未啟用 docker),請於 CI/可用環境確認 `docker build` 成功啟動。 - 本機測試 `node --test`:**43 passed / 0 failed**。
jiantw83 added 7 commits 2026-06-30 04:44:21 +00:00
admin approved these changes 2026-06-30 05:32:30 +00:00
admin merged commit 3abc79423f into master 2026-06-30 05:32:33 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: old-docker-actions/calculate-version#9