2025-12-01 15:14:56 +08:00
2025-09-18 14:28:37 +08:00
2025-09-18 14:28:37 +08:00

Cleanup Old Releases Action

這是一個自動清理舊版本 releases 的 GitHub Action可以保留指定數量的最新版本刪除多餘的舊版本。

功能特色

  • 🗑️ 自動清理舊版本 releases
  • 🔢 可配置保留的版本數量
  • 🔍 支援模擬執行模式
  • 📊 詳細的執行報告
  • 🛡️ 安全的錯誤處理

輸入參數

參數名稱 必要 預設值 描述
gitea-server - Gitea 伺服器 URL
repository - 儲存庫名稱 (格式: owner/repo)
token - Gitea API Token
keep-count 2 保留的最新版本數量
dry-run false 是否為模擬執行 (只顯示會刪除的版本,不實際刪除)

輸出參數

參數名稱 描述
deleted-count 已刪除的版本數量
deleted-releases 已刪除的版本列表 (JSON 格式)

使用範例

基本用法 (保留最新2個版本)

- name: 清理舊版本
  uses: ./.gitea/actions/cleanup-releases
  with:
    gitea-server: ${{ gitea.server_url }}
    repository: ${{ gitea.repository }}
    token: ${{ secrets.GITEA_TOKEN }}

自定義保留數量

- name: 清理舊版本 (保留最新5個)
  uses: ./.gitea/actions/cleanup-releases
  with:
    gitea-server: ${{ gitea.server_url }}
    repository: ${{ gitea.repository }}
    token: ${{ secrets.GITEA_TOKEN }}
    keep-count: '5'

模擬執行模式

- name: 檢查要清理的版本
  id: check-cleanup
  uses: ./.gitea/actions/cleanup-releases
  with:
    gitea-server: ${{ gitea.server_url }}
    repository: ${{ gitea.repository }}
    token: ${{ secrets.GITEA_TOKEN }}
    keep-count: '3'
    dry-run: 'true'

- name: 顯示模擬結果
  run: |
    echo "模擬執行會刪除 ${{ steps.check-cleanup.outputs.deleted-count }} 個版本"

使用輸出結果

- name: 清理舊版本
  id: cleanup
  uses: ./.gitea/actions/cleanup-releases
  with:
    gitea-server: ${{ gitea.server_url }}
    repository: ${{ gitea.repository }}
    token: ${{ secrets.GITEA_TOKEN }}
    keep-count: '2'

- name: 報告清理結果
  run: |
    echo "清理完成,刪除了 ${{ steps.cleanup.outputs.deleted-count }} 個舊版本"
    echo "刪除的版本詳情: ${{ steps.cleanup.outputs.deleted-releases }}"

運作邏輯

  1. 獲取版本列表:從 Gitea API 獲取所有 releases按創建時間排序
  2. 計算刪除範圍:保留最新的 keep-count 個版本,標記其餘版本為待刪除
  3. 執行清理
    • 模擬模式:只顯示會刪除的版本,不實際執行
    • 正常模式:逐一刪除標記的版本
  4. 回報結果:提供刪除數量和詳細列表

安全特性

  • 防護機制:如果總版本數 ≤ 保留數量,則不執行任何刪除
  • 錯誤處理API 請求失敗時會顯示錯誤訊息並停止執行
  • 模擬模式:可以先模擬執行,確認要刪除的版本無誤
  • 詳細日誌:每個步驟都有清楚的日誌輸出

注意事項

  • 需要有 GITEA_TOKEN secret 且具備刪除 releases 的權限
  • 刪除操作是不可逆的,建議先使用模擬模式確認
  • Action 按照創建時間排序,保留最新的版本
  • 建議在 release 創建之後執行此 action

錯誤處理

  • 如果無法連接到 Gitea APIaction 會失敗並顯示錯誤訊息
  • 如果某個版本刪除失敗,會記錄錯誤但繼續處理其他版本
  • 如果 token 權限不足,會顯示相應的 HTTP 錯誤狀態
Description
清除舊的發布
Readme 106 KiB
master Latest
2025-12-01 07:15:13 +00:00
Languages
Shell 100%