artifacts/scripts/offline-argocd/prune_remote_versions.sh
2025-10-02 20:47:32 +08:00

23 lines
713 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SSH_USER="${RSYNC_SSH_USER:?RSYNC_SSH_USER environment variable is required}"
HOST="${VPS_HOST:?VPS_HOST environment variable is required}"
REMOTE_ROOT="${REMOTE_ROOT:?REMOTE_ROOT environment variable is required}"
ssh -i ~/.ssh/id_rsa "${SSH_USER}@${HOST}" REMOTE_ROOT="${REMOTE_ROOT}" 'bash -s' <<'EOS'
set -euo pipefail
cd "${REMOTE_ROOT}" || exit 0
keep=3
mapfile -t all < <(ls -1 | grep -E "^(offline-argocd-|v[0-9]+\.)" | sort -V -r || true)
if [ "${#all[@]}" -le "$keep" ]; then
echo "Nothing to prune. Count=${#all[@]}"
exit 0
fi
to_delete=("${all[@]:keep}")
echo "Pruning old versions: ${to_delete[*]}"
for d in "${to_delete[@]}"; do
rm -rf -- "$d"
done
EOS