@@ -64,9 +64,9 @@ echo "需要刪除 $DELETE_COUNT 個舊映像"
# 獲取要刪除的版本 (跳過前 keep-count 個)
TO_DELETE = $( echo " $SORTED_VERSIONS " | jq -c " .[ $KEEP_COUNT :][] " )
# 初始化刪除計數器
# 初始化刪除計數器和列表
DELETED_COUNT = 0
FAILED_COUNT = 0
declare -a DELETED_VERSIONS
# 處理每個要刪除的版本
while IFS = read -r version; do
@@ -87,10 +87,11 @@ while IFS= read -r version; do
if [ [ " $DRY_RUN " = = "true" ] ] ; then
echo " 🔍 [模擬執行] 會刪除映像版本: $VERSION_NAME (ID: $VERSION_ID ) "
DELETED_COUNT = $(( DELETED_COUNT + 1 ))
DELETED_VERSIONS += ( " $VERSION_NAME " )
else
# 實際刪除
DELETE_RESPONSE = $( curl -s -w "\nHTTP_STATUS:%{http_code}" \
-X DELETE " $GITEA_SERVER /api/v1/packages/ $OWNER /container/ $PACKAGE_NAME / $VERSION_NAME ?token= $TOKEN " \
-X DELETE " $GITEA_SERVER /api/v1/packages/ $OWNER /container/ $PACKAGE_NAME / $VERSION_ID ?token= $TOKEN " \
-H "Accept: application/json" )
DELETE_HTTP_STATUS = $( echo " $DELETE_RESPONSE " | grep -o "HTTP_STATUS:[0-9]*" | cut -d: -f2)
@@ -98,28 +99,28 @@ while IFS= read -r version; do
if [ [ " $DELETE_HTTP_STATUS " = = "204" ] ] || [ [ " $DELETE_HTTP_STATUS " = = "200" ] ] ; then
echo " ✅ 成功刪除映像版本: $VERSION_NAME (ID: $VERSION_ID ) "
DELETED_COUNT = $(( DELETED_COUNT + 1 ))
DELETED_VERSIONS += ( " $VERSION_NAME " )
else
echo " ❌ 刪除失敗映像版本: $VERSION_NAME (ID: $VERSION_ID ), HTTP狀態: $DELETE_HTTP_STATUS "
FAILED_COUNT = $(( FAILED_COUNT + 1 ))
fi
fi
done <<< " $TO_DELETE "
# 檢查是否有刪除失敗的情況
if [ [ $FAILED_COUNT -gt 0 ] ] ; then
echo ""
echo " ❌ 錯誤:有 $FAILED_COUNT 個映像版本刪除失敗 "
exit 1
fi
# 輸出最終結果
echo ""
echo "========================================="
if [ [ " $DRY_RUN " = = "true" ] ] ; then
echo " 🔍 [模擬執行] 總共會刪除 $DELETED_COUNT 個映像版本 "
echo "✅ 模擬執行完成"
if [ [ ${# DELETED_VERSIONS [@] } -gt 0 ] ] ; then
echo "待刪除版本列表:"
printf ' - %s\n' " ${ DELETED_VERSIONS [@] } "
fi
else
echo " ✅ 清理完成,成功刪除了 $DELETED_COUNT 個映像版本 "
if [ [ ${# DELETED_VERSIONS [@] } -gt 0 ] ] ; then
echo "已刪除版本列表:"
printf ' - %s\n' " ${ DELETED_VERSIONS [@] } "
fi
# 驗證結果
if [ [ $DELETED_COUNT -gt 0 ] ] ; then
@@ -128,7 +129,7 @@ else
VERIFY_JSON = $( curl -s " $GITEA_SERVER /api/v1/packages/ $OWNER /container/ $PACKAGE_NAME ?token= $TOKEN " \
-H "Accept: application/json" )
NEW_TOTAL_COUNT = $( echo " $VERIFY_JSON " | jq 'length' )
echo " 📊 目前剩餘 $NEW_TOTAL_COUNT 個映像版本(預期: $KEEP_COUNT ) "
echo " 目前剩餘 $NEW_TOTAL_COUNT 個映像版本(預期: $KEEP_COUNT ) "
fi
fi
echo "========================================="