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