develop
master
將 Release Cleanup action 由原本的 bash(curl + jq)docker action,改寫為 Node 主程式 + 容器化,並補上完整文件。清理邏輯維持等價:
curl
jq
-beta.
KEEP_COUNT
GITEA_TOKEN
inputs.keep_count
GITEA_SERVER_URL
GITEA_REPOSITORY
alpine
node:lts-alpine
fetch
app/index.js
app/package.json
engines.node >=18
entrypoint.sh
exec node /app/index.js
Dockerfile
node
ARG NODE_VERSION
action.yaml
keep_count
README.md
sort(...).reverse()
jq sort_by | reverse
refactor/nodejs-rewrite-20260626-103443
docker build
docker run
將 action 由 bash(curl/jq) 改寫為 Node 主程式 app/index.js(沿用原清理邏輯: 正式版與 beta 版各自保留 KEEP_COUNT 筆、刪除多餘 release 與未綁定 release 的 tag), entrypoint.sh 改為輸出橫幅後 exec node 主程式,Dockerfile 改用 node alpine 六步結構, 並補上 app/package.json 與 action.yaml 輸入說明。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
新增根目錄 README,含行為總覽、action 輸入與環境變數、workflow 使用範例、 專案列表與各 function 的功能列表與使用範例(連結至 Gitea 來源行)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
變更摘要
將 Release Cleanup action 由原本的 bash(
curl+jq)docker action,改寫為 Node 主程式 + 容器化,並補上完整文件。清理邏輯維持等價:-beta.)各自保留最新KEEP_COUNT筆,刪除其餘 release。GITEA_TOKEN為空時以匿名身分呼叫;參數不合法或分頁取得失敗則以 exit code 1 結束;單筆刪除失敗只記錄錯誤、不中斷。影響範圍
inputs.keep_count、環境變數GITEA_SERVER_URL/GITEA_REPOSITORY/GITEA_TOKEN、清理行為)維持不變。alpine+curl/jq改為node:lts-alpine+ 原生fetch(需 Node 18+)。重點檔案/模組
app/index.js(新增):Node 主程式,含參數檢查、分頁抓取、release/tag 清理流程,並補上繁中 JSDoc。app/package.json(新增):專案 metadata,宣告engines.node >=18,無第三方相依。entrypoint.sh:改為輸出名稱/用途/更新時間橫幅後exec node /app/index.js,逐行註解。Dockerfile:改用nodealpine 六步結構(ARG NODE_VERSION),逐行註解。action.yaml:補上keep_count輸入說明。README.md(新增):行為總覽、輸入與環境變數、workflow 使用範例、專案列表與各 function 使用範例。風險/注意事項
sort(...).reverse(),與原 bashjq sort_by | reverse行為對齊(保守保留,未改為單次降冪以避免相同建立時間的排序穩定性差異)。refactor/nodejs-rewrite-20260626-103443為更完整的 Node 改寫(含共用工具與測試);本 PR 為較精簡的容器化版本,合併前請評估兩者取捨。docker build/docker run,僅做語法驗證;建議合併前於 CI 或本機驗證映像可正常建置與啟動。