mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 23:55:43 +00:00
87 lines
2.6 KiB
YAML
87 lines
2.6 KiB
YAML
name: S3 Archive Cleanup
|
|
|
|
on:
|
|
schedule:
|
|
# Run weekly on Sunday at 05:00 UTC
|
|
- cron: '0 5 * * 0'
|
|
workflow_dispatch: # Allow manual trigger
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
cleanup:
|
|
runs-on: [self-hosted, bazel, halfdan]
|
|
|
|
steps:
|
|
- name: Ensure AWS CLI is available
|
|
run: |
|
|
if ! command -v aws &> /dev/null; then
|
|
brew install awscli
|
|
fi
|
|
|
|
- name: Delete old archived game folders
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.DO_SPACES_ACCESS_KEY }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.DO_SPACES_SECRET_KEY }}
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
S3_ENDPOINT="https://sfo3.digitaloceanspaces.com"
|
|
BUCKET="s3://eagle0/eagle/archived/"
|
|
|
|
# macOS date syntax
|
|
CUTOFF=$(date -v-1m +%s)
|
|
DELETED=0
|
|
SKIPPED=0
|
|
NO_DIR_FILE=0
|
|
|
|
echo "Cutoff date: $(date -r ${CUTOFF} '+%Y-%m-%dT%H:%M:%S')"
|
|
echo ""
|
|
|
|
FOLDERS=$(aws s3 ls "$BUCKET" --endpoint-url "$S3_ENDPOINT" \
|
|
| awk '/PRE/{gsub(/\/$/,"",$2); print $2}')
|
|
|
|
if [ -z "$FOLDERS" ]; then
|
|
echo "No archived folders found."
|
|
exit 0
|
|
fi
|
|
|
|
TOTAL=$(echo "$FOLDERS" | wc -l | tr -d ' ')
|
|
CURRENT=0
|
|
|
|
for game_id in $FOLDERS; do
|
|
CURRENT=$((CURRENT + 1))
|
|
|
|
DIR_INFO=$(aws s3 ls "${BUCKET}${game_id}/directory.e0i" \
|
|
--endpoint-url "$S3_ENDPOINT" 2>/dev/null || true)
|
|
|
|
if [ -z "$DIR_INFO" ]; then
|
|
echo "[$CURRENT/$TOTAL] DELETE $game_id (no directory.e0i)"
|
|
aws s3 rm --recursive "${BUCKET}${game_id}/" \
|
|
--endpoint-url "$S3_ENDPOINT" > /dev/null 2>&1
|
|
DELETED=$((DELETED + 1))
|
|
NO_DIR_FILE=$((NO_DIR_FILE + 1))
|
|
continue
|
|
fi
|
|
|
|
FILE_DATE=$(echo "$DIR_INFO" | awk '{print $1 " " $2}')
|
|
FILE_EPOCH=$(date -j -f '%Y-%m-%d %H:%M:%S' "$FILE_DATE" +%s 2>/dev/null || echo "0")
|
|
|
|
if [ "$FILE_EPOCH" -lt "$CUTOFF" ]; then
|
|
echo "[$CURRENT/$TOTAL] DELETE $game_id (directory.e0i from $FILE_DATE)"
|
|
aws s3 rm --recursive "${BUCKET}${game_id}/" \
|
|
--endpoint-url "$S3_ENDPOINT" > /dev/null 2>&1
|
|
DELETED=$((DELETED + 1))
|
|
else
|
|
echo "[$CURRENT/$TOTAL] KEEP $game_id (directory.e0i from $FILE_DATE)"
|
|
SKIPPED=$((SKIPPED + 1))
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "=== Summary ==="
|
|
echo "Total folders: $TOTAL"
|
|
echo "Deleted: $DELETED"
|
|
echo "Kept (recent): $SKIPPED"
|