2.8 KiB
2.8 KiB
CLEANUP OLD NUGET
清理 Gitea NuGet 套件舊版本的 Docker Action。
功能
- 依序嘗試取得 Gitea API token。
- 預設每個套件保留最新
2個版本。 - 直接刪除超出保留數量的舊版本。
- 只處理你指定的 NuGet 套件名稱,可一次指定多個。
- 輸出可搜尋的 log,包含 API status、request id 與 summary。
- 每頁預設抓取 100 筆版本,可用
PAGE_LIMIT調整。
Token 來源順序
Action 會依序嘗試以下來源:
inputs.RUNNER_TOKENsecrets.GITEA_TOKENsecrets.RUNNER_TOKEN
若三者都沒有值,Action 會以非零 exit code 結束。
Inputs
| 名稱 | 類型 | 預設值 | 說明 |
|---|---|---|---|
RUNNER_TOKEN |
string | - | Gitea API token,優先順序最高 |
KEEP_COUNT |
integer string | 2 |
每個套件要保留的最新版本數,必須是整數且 >= 0 |
PACKAGE_NAMES |
string | - | 要清理的 NuGet 套件名稱,逗號分隔,可一次指定多個 |
Log 行為
執行時會輸出這類資訊:
Trying token from ...Using token from ...keep_count=...package_names=...GET /api/v1/... -> 200 OKCandidate to delete: ...Deleted package ... -> 204 No ContentSummary: packages=... versions=... kept=... candidates=... deleted=... errors=...
Workflow 範例
jobs:
cleanup:
runs-on: ubuntu
steps:
- uses: https://gitea.jsc.idv.tw/jiantw83/cleanup-nuget@${{ vars.ACTION_CLEANUP_NUGET_VERSION }}
with:
RUNNER_TOKEN: ${{ secrets.GITEA_TOKEN }}
KEEP_COUNT: 2
PACKAGE_NAMES: package-a,package-b
相關檔案
- Action 定義:
action.yaml - 執行腳本:
entrypoint.sh
專案範圍
- 不需要新增
.gitea/workflows/ci.yaml - 不需要新增
tests/* - 除非另外明確要求,請不要再補這兩類檔案
Review Exclusions
以下審查意見屬於刻意排除,不再以測試或 CI 的形式處理:
entrypoint.sh:10-15trimentrypoint.sh:16-18url_encodeentrypoint.sh:30-59resolve_package_namesentrypoint.sh:61-76parse_repo_contextentrypoint.sh:35-51resolve_keep_countentrypoint.sh:78-120api_requestentrypoint.sh:122-181fetch_package_versionsentrypoint.sh:183-241collect_package_candidatesentrypoint.sh:243-286process_candidatesentrypoint.sh(整體)新增測試程式碼與測試框架entrypoint.sh(整體)端對端測試entrypoint.sh:7結構化 loggingentrypoint.sh:105驗證GITEA_SERVER_URLentrypoint.sh:125-126,241暫存檔重用與 I/O 微調entrypoint.sh:149流式 JSON 合併entrypoint.sh:204,215排序與日誌分離建議entrypoint.sh:243-286重複url_encode進一步最佳化entrypoint.sh:183-241改回掃描 owner 全量套件的 N+1 API 建議