feat: 實作 Clean Old Release action #2

Merged
admin merged 2 commits from develop into master 2026-07-17 01:00:20 +00:00
Member

變更摘要

將原本的 Gitea Docker 範本 action 改造為「Clean Old Release」:依建立時間將 release 分為正式版與 beta 版(tag 名稱含 beta),各自保留最新指定筆數,其餘舊 release 連同對應 git tag 一併刪除。本 PR 將 develop 上已驗證的變更併入 master。

影響範圍

  • action.yml:名稱改為 Clean Old Release,新增 keep_count(預設 5)與 keep_count_beta(預設 10)兩個 inputs,image 引用改為小寫 dockerfile
  • src/index.js:以 Node.js 實作主流程——讀取輸入 → 逐頁查詢 release → 依 tag 是否含 beta 分群 → 依建立時間挑出待刪 → 逐筆刪除 release 與對應 tag → 總結。單筆刪除失敗會繼續處理其餘,最後以非零 exit code 結束;tag 為 404 視為已刪除。
  • src/logger.js(新增):共用 logger,統一訊息格式 [yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息(Asia/Taipei 時區,等級 INF/WRN/ERR/TRC/DBG)。
  • dockerfile:改為多階段建置(NODE_VERSION=latest / NODE_RUNTIME=slim)以縮小映像,並補上逐行註解。
  • entrypoint.sh:輸出啟動訊息(名稱/用途/更新時間)後 exec 啟動 node 主程式;保留可執行權限。
  • readme.md:重建為專案列表、Action 使用方式、功能列表與使用範例。
  • .gitea/scoped_workflows/ci.yaml:移除範本殘留的 CI workflow。

風險與注意事項

  • 此 action 會實際刪除遠端 release 與 git tag,屬不可逆操作;套用前建議先確認保留筆數。
  • 需 runner 注入 GITHUB_REPOSITORYGITHUB_API_URL(或 GITHUB_SERVER_URL)與 GITHUB_TOKENGITEA_TOKEN(須具刪除 release/tag 權限)。
  • 併入 master 屬正式版發布,建議合併前先以 docker build 於本機實際建置一次確認映像可用(先前因 Docker daemon 未啟動尚未驗證)。
## 變更摘要 將原本的 Gitea Docker 範本 action 改造為「Clean Old Release」:依建立時間將 release 分為正式版與 beta 版(tag 名稱含 `beta`),各自保留最新指定筆數,其餘舊 release 連同對應 git tag 一併刪除。本 PR 將 develop 上已驗證的變更併入 master。 ## 影響範圍 - **`action.yml`**:名稱改為 Clean Old Release,新增 `keep_count`(預設 5)與 `keep_count_beta`(預設 10)兩個 inputs,`image` 引用改為小寫 `dockerfile`。 - **`src/index.js`**:以 Node.js 實作主流程——讀取輸入 → 逐頁查詢 release → 依 tag 是否含 beta 分群 → 依建立時間挑出待刪 → 逐筆刪除 release 與對應 tag → 總結。單筆刪除失敗會繼續處理其餘,最後以非零 exit code 結束;tag 為 404 視為已刪除。 - **`src/logger.js`**(新增):共用 logger,統一訊息格式 `[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息`(Asia/Taipei 時區,等級 INF/WRN/ERR/TRC/DBG)。 - **`dockerfile`**:改為多階段建置(`NODE_VERSION=latest` / `NODE_RUNTIME=slim`)以縮小映像,並補上逐行註解。 - **`entrypoint.sh`**:輸出啟動訊息(名稱/用途/更新時間)後 `exec` 啟動 node 主程式;保留可執行權限。 - **`readme.md`**:重建為專案列表、Action 使用方式、功能列表與使用範例。 - **`.gitea/scoped_workflows/ci.yaml`**:移除範本殘留的 CI workflow。 ## 風險與注意事項 - 此 action 會實際刪除遠端 release 與 git tag,屬不可逆操作;套用前建議先確認保留筆數。 - 需 runner 注入 `GITHUB_REPOSITORY`、`GITHUB_API_URL`(或 `GITHUB_SERVER_URL`)與 `GITHUB_TOKEN`/`GITEA_TOKEN`(須具刪除 release/tag 權限)。 - 併入 master 屬正式版發布,建議合併前先以 `docker build` 於本機實際建置一次確認映像可用(先前因 Docker daemon 未啟動尚未驗證)。
jiantw83 added 2 commits 2026-07-17 00:59:42 +00:00
feat: 實作 Clean Old Release action
docker-actions/template: CI / BUILD (pull_request) Successful in 5s
597fa4119b
- 依建立時間將 release 分為正式版與 beta 版(tag 含 beta),各自保留最新指定筆數(keep_count 預設 5、keep_count_beta 預設 10),其餘舊 release 連同對應 git tag 一併刪除
- Node.js 主程式置於 src/(index.js 主流程、logger.js 統一訊息格式 [yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息)
- 多階段建置 dockerfile(NODE_VERSION=latest / NODE_RUNTIME=slim),entrypoint.sh 輸出啟動訊息後 exec 主程式
- 補齊全部 JSDoc 與指令檔逐行註解,重建 readme.md
- 移除範本的 .gitea/scoped_workflows/ci.yaml

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reviewed-on: #1
admin approved these changes 2026-07-17 01:00:17 +00:00
admin merged commit 579cad5169 into master 2026-07-17 01:00:20 +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: docker-actions/clean-old-release#2