Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ae8127d5c2 | |||
| 0d7cdd65ca | |||
| 9df8b8dcaa | |||
| 99ae6a157b | |||
| 4a6a3c159d | |||
| 3bd0ecaa98 | |||
| 8cbe2e3e4d | |||
|
|
146283281b | ||
| 075bc62138 | |||
|
|
9cf1a7a974 | ||
| 4a2c9d6064 | |||
|
|
f6d27ed523 | ||
| 17721ae9d0 | |||
| 9929c05469 | |||
| a078f2d984 | |||
| 9068f5e5b6 | |||
| e40a7adad6 | |||
| 214ec5f7bd | |||
| 829c119657 | |||
| 2ac7efe907 | |||
| 74e3e758c9 | |||
| 3e32b71abe | |||
| a8eaa2a293 | |||
| f6925cc5e7 | |||
| 2daf39673a | |||
| f3afba6e49 | |||
| c5b69ac380 | |||
| 963fa24ce0 | |||
| 93402e99ee | |||
| ac72d18016 | |||
| 70cac9e740 |
@@ -11,17 +11,17 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: 計算版本號
|
- name: 計算版本號
|
||||||
id: version
|
id: version
|
||||||
uses: https://gitea.jsc.idv.tw/jiantw83/calculate-version-action@v${{ vars.CALCULATE_VERSION }}
|
uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }}
|
||||||
with:
|
with:
|
||||||
gitea-server: ${{ gitea.server_url }}
|
gitea-server: ${{ gitea.server_url }}
|
||||||
repository: ${{ gitea.repository }}
|
repository: ${{ gitea.repository }}
|
||||||
token: ${{ secrets.GITEA_TOKEN }}
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
- name: 發布專案
|
- name: 發布專案
|
||||||
uses: akkuman/gitea-release-action@v1
|
uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }}
|
||||||
with:
|
with:
|
||||||
tag_name: "v${{ steps.version.outputs.VERSION }}"
|
tag_name: "v${{ steps.version.outputs.VERSION }}"
|
||||||
- name: 清理舊版本 (保留最新2個)
|
- name: 清理舊版本 (保留最新2個)
|
||||||
uses: https://gitea.jsc.idv.tw/jiantw83/cleanup-release-action@v${{ vars.CLEANUP_RELEASE_VERSION }}
|
uses: https://gitea.jsc.idv.tw/actions/cleanup-release@${{ vars.ACTION_CLEANUP_RELEASE_VERSION }}
|
||||||
with:
|
with:
|
||||||
gitea-server: ${{ gitea.server_url }}
|
gitea-server: ${{ gitea.server_url }}
|
||||||
repository: ${{ gitea.repository }}
|
repository: ${{ gitea.repository }}
|
||||||
|
|||||||
@@ -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,11 +87,10 @@ 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}" \
|
||||||
-X DELETE "$GITEA_SERVER/api/v1/packages/$OWNER/container/$PACKAGE_NAME/$VERSION_ID?token=$TOKEN" \
|
-X DELETE "$GITEA_SERVER/api/v1/packages/$OWNER/container/$PACKAGE_NAME/$VERSION_NAME?token=$TOKEN" \
|
||||||
-H "Accept: application/json")
|
-H "Accept: application/json")
|
||||||
|
|
||||||
DELETE_HTTP_STATUS=$(echo "$DELETE_RESPONSE" | grep -o "HTTP_STATUS:[0-9]*" | cut -d: -f2)
|
DELETE_HTTP_STATUS=$(echo "$DELETE_RESPONSE" | grep -o "HTTP_STATUS:[0-9]*" | cut -d: -f2)
|
||||||
@@ -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 "========================================="
|
||||||
|
|||||||
@@ -89,10 +89,18 @@ echo "$TO_DELETE" | jq -c '.[]' | while IFS= read -r release; do
|
|||||||
echo "✅ 成功刪除發佈: $RELEASE_TAG ($RELEASE_NAME)"
|
echo "✅ 成功刪除發佈: $RELEASE_TAG ($RELEASE_NAME)"
|
||||||
else
|
else
|
||||||
echo "❌ 刪除失敗發佈: $RELEASE_TAG ($RELEASE_NAME), HTTP 狀態: $HTTP_STATUS"
|
echo "❌ 刪除失敗發佈: $RELEASE_TAG ($RELEASE_NAME), HTTP 狀態: $HTTP_STATUS"
|
||||||
|
FAILED_COUNT=$((FAILED_COUNT + 1))
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# 檢查是否有刪除失敗的情況
|
||||||
|
if [[ $FAILED_COUNT -gt 0 ]]; then
|
||||||
|
echo ""
|
||||||
|
echo "❌ 錯誤:有 $FAILED_COUNT 個發佈刪除失敗"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# 輸出最終結果
|
# 輸出最終結果
|
||||||
if [[ "$DRY_RUN" == "true" ]]; then
|
if [[ "$DRY_RUN" == "true" ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in New Issue
Block a user