From 6f88631d5c48eccf8b547b844f85a44b28b6af78 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 10 Jan 2025 10:27:41 +0900 Subject: [PATCH] Add workflow to clean old Vita3K releases automatically --- .github/workflows/clean_old_releases.yml | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/clean_old_releases.yml diff --git a/.github/workflows/clean_old_releases.yml b/.github/workflows/clean_old_releases.yml new file mode 100644 index 0000000..9f229b4 --- /dev/null +++ b/.github/workflows/clean_old_releases.yml @@ -0,0 +1,52 @@ +name: Clean Old Vita3K Releases + +on: + schedule: + - cron: '0 0 * * *' # Run daily at midnight + workflow_dispatch: + +jobs: + clean-releases: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Set up Git + run: | + git config user.email "${{ secrets.GIT_MAIL }}" + git config user.name "${{ secrets.GIT_USERNAME }}" + + - name: Clean Old Releases + run: | + # Define the threshold date (15 days ago) + THRESHOLD_DATE=$(date -d "15 days ago" +%Y-%m-%dT%H:%M:%SZ) + + # Get all releases (handle pagination) + ALL_RELEASES=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$GITHUB_REPOSITORY/releases?per_page=100&page=1") + PAGE_COUNT=$(echo "$ALL_RELEASES" | jq '. | length') + + # Get the latest release ID + LATEST_RELEASE=$(echo "$ALL_RELEASES" | jq -r '.[0].id') + + # Loop through pages and get releases older than 1 month (excluding the latest) + for ((i=0; i<$PAGE_COUNT; i++)); do + RELEASE_ID=$(echo "$ALL_RELEASES" | jq -r ".[$i].id") + + # Skip the latest release + if [ "$RELEASE_ID" == "$LATEST_RELEASE" ]; then + continue + fi + + # Check if the release is older than 1 month + OLD_RELEASES=$(echo "$ALL_RELEASES" | jq --arg threshold "$THRESHOLD_DATE" ".[$i] | select(.published_at < \$threshold) | .id") + + # Delete old releases + for release_id in $OLD_RELEASES; do + curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/$release_id" + done + done + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file