docs(release-cleanup): 更新 README 功能列表與 Dockerfile 註解排版
README 新增 requireUrl/requireRepository、修正原始碼連結行號與更新時間; Dockerfile 調整註解冒號/括號前的空白(無邏輯變更)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
7c225d4122
commit
a95945262d
+2
-2
@@ -5,10 +5,10 @@
|
|||||||
# 更新日期: 2026/06/26 10:28:36
|
# 更新日期: 2026/06/26 10:28:36
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
# 基底映像:Node.js 20 的 Alpine 版本 (體積小)。
|
# 基底映像: Node.js 20 的 Alpine 版本 (體積小)。
|
||||||
FROM node:20-alpine
|
FROM node:20-alpine
|
||||||
|
|
||||||
# 複製 Node.js 應用程式(不含測試)
|
# 複製 Node.js 應用程式 (不含測試)
|
||||||
# 先單獨複製 package.json,再複製所有 *.js;有利於 Docker layer 快取。
|
# 先單獨複製 package.json,再複製所有 *.js;有利於 Docker layer 快取。
|
||||||
COPY app/package.json /app/package.json
|
COPY app/package.json /app/package.json
|
||||||
COPY app/*.js /app/
|
COPY app/*.js /app/
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
release-cleanup 是一個 Gitea Docker Action,用於自動清理儲存庫中的成品(release)與標籤(tag):刪除超出保留數量的舊版本 release,並移除未被任何 release 指定的孤立 tag。原本以 bash 實作,現已改寫為模組化的 Node.js 程式,進入點仍為 `entrypoint.sh`。
|
release-cleanup 是一個 Gitea Docker Action,用於自動清理儲存庫中的成品(release)與標籤(tag):刪除超出保留數量的舊版本 release,並移除未被任何 release 指定的孤立 tag。原本以 bash 實作,現已改寫為模組化的 Node.js 程式,進入點仍為 `entrypoint.sh`。
|
||||||
|
|
||||||
> 更新時間:2026/06/26 10:40:15
|
> 更新時間:2026/06/26 10:54:59
|
||||||
|
|
||||||
## 專案列表
|
## 專案列表
|
||||||
|
|
||||||
@@ -39,12 +39,14 @@ release-cleanup 是一個 Gitea Docker Action,用於自動清理儲存庫中的
|
|||||||
| [isEmptyOrNull](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L9) | [判斷值是否為空(空字串、null、undefined 或字串 "null")。](#isemptyornull) |
|
| [isEmptyOrNull](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L9) | [判斷值是否為空(空字串、null、undefined 或字串 "null")。](#isemptyornull) |
|
||||||
| [requireValue](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L19) | [要求欄位有值,空值時丟出 Error。](#requirevalue) |
|
| [requireValue](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L19) | [要求欄位有值,空值時丟出 Error。](#requirevalue) |
|
||||||
| [requireInteger](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L32) | [要求欄位為非負整數,否則丟出 Error。](#requireinteger) |
|
| [requireInteger](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L32) | [要求欄位為非負整數,否則丟出 Error。](#requireinteger) |
|
||||||
| [loadConfig](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/config.js#L20) | [從環境變數載入並驗證設定,回傳設定物件。](#loadconfig) |
|
| [requireUrl](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L45) | [要求欄位為合法的 http/https URL。](#requireurl) |
|
||||||
| [GiteaClient](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/gitea-client.js#L8) | [建立帶認證標頭的 Gitea API 客戶端。](#giteaclient) |
|
| [requireRepository](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/validate.js#L64) | [要求欄位為合法的 owner/repo 形式且無路徑穿越。](#requirerepository) |
|
||||||
| [GiteaClient.fetchAllPages](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/gitea-client.js#L31) | [逐頁讀取分頁式清單 API 並合併成單一陣列。](#giteaclientfetchallpages) |
|
| [loadConfig](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/config.js#L26) | [從環境變數載入並驗證設定,回傳設定物件。](#loadconfig) |
|
||||||
| [GiteaClient.deleteResource](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/gitea-client.js#L60) | [對指定資源發出 DELETE 請求並回傳狀態碼。](#giteaclientdeleteresource) |
|
| [GiteaClient](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/gitea-client.js#L11) | [建立帶認證標頭的 Gitea API 客戶端。](#giteaclient) |
|
||||||
|
| [GiteaClient.fetchAllPages](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/gitea-client.js#L34) | [逐頁讀取分頁式清單 API 並合併成單一陣列。](#giteaclientfetchallpages) |
|
||||||
|
| [GiteaClient.deleteResource](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/gitea-client.js#L78) | [對指定資源發出 DELETE 請求並回傳狀態碼。](#giteaclientdeleteresource) |
|
||||||
| [selectReleasesToDelete](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/releases.js#L14) | [依時間排序後回傳超出保留數量的舊 release。](#selectreleasestodelete) |
|
| [selectReleasesToDelete](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/releases.js#L14) | [依時間排序後回傳超出保留數量的舊 release。](#selectreleasestodelete) |
|
||||||
| [cleanupReleases](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/releases.js#L32) | [讀取並刪除超出保留數量的舊版本 release。](#cleanupreleases) |
|
| [cleanupReleases](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/releases.js#L35) | [讀取並刪除超出保留數量的舊版本 release。](#cleanupreleases) |
|
||||||
| [categorizeTags](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/tags.js#L17) | [將 tag 分類為保留、刪除或略過。](#categorizetags) |
|
| [categorizeTags](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/tags.js#L17) | [將 tag 分類為保留、刪除或略過。](#categorizetags) |
|
||||||
| [cleanupOrphanTags](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/tags.js#L42) | [刪除未被任何 release 指定的孤立 tag。](#cleanuporphantags) |
|
| [cleanupOrphanTags](https://gitea.jsc.idv.tw/docker-actions/release-cleanup/src/branch/develop/app/tags.js#L42) | [刪除未被任何 release 指定的孤立 tag。](#cleanuporphantags) |
|
||||||
|
|
||||||
@@ -165,6 +167,31 @@ requireInteger('KEEP_COUNT', 0) // 通過
|
|||||||
requireInteger('KEEP_COUNT', '-1') // 丟出 Error: KEEP_COUNT must be a non-negative integer
|
requireInteger('KEEP_COUNT', '-1') // 丟出 Error: KEEP_COUNT must be a non-negative integer
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<a id="requireurl"></a>
|
||||||
|
### requireUrl
|
||||||
|
|
||||||
|
要求欄位為合法的 http/https URL,避免設定來源指向格式錯誤或非預期協定的伺服器(降低 SSRF 風險)。
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { requireUrl } from './validate.js'
|
||||||
|
|
||||||
|
requireUrl('GITEA_SERVER_URL', 'https://gitea.example.com') // 通過
|
||||||
|
requireUrl('GITEA_SERVER_URL', 'ftp://x') // 丟出 Error: ... must use http or https protocol
|
||||||
|
requireUrl('GITEA_SERVER_URL', 'not a url') // 丟出 Error: ... must be a valid URL
|
||||||
|
```
|
||||||
|
|
||||||
|
<a id="requirerepository"></a>
|
||||||
|
### requireRepository
|
||||||
|
|
||||||
|
要求欄位為合法的 `owner/repo` 形式(僅允許英數字與 `. _ -`、恰好一個 `/`),並拒絕含 `..` 的路徑穿越輸入。
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { requireRepository } from './validate.js'
|
||||||
|
|
||||||
|
requireRepository('GITEA_REPOSITORY', 'owner/repo') // 通過
|
||||||
|
requireRepository('GITEA_REPOSITORY', '../evil') // 丟出 Error: ... owner/repo without path traversal
|
||||||
|
```
|
||||||
|
|
||||||
<a id="loadconfig"></a>
|
<a id="loadconfig"></a>
|
||||||
### loadConfig
|
### loadConfig
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user