chore(release): improve upload script with retries, directory check, and fallback to scp
This commit is contained in:
@@ -155,5 +155,26 @@ jobs:
|
|||||||
USER: ${{ secrets.HETZNER_USER }}
|
USER: ${{ secrets.HETZNER_USER }}
|
||||||
PASS: ${{ secrets.HETZNER_PASS }}
|
PASS: ${{ secrets.HETZNER_PASS }}
|
||||||
run: |
|
run: |
|
||||||
# Use rsync to efficiently upload only the changed files (the new APK and updated index files)
|
set -euo pipefail
|
||||||
sshpass -p "$PASS" rsync -avz -e "ssh -o StrictHostKeyChecking=no" fdroid/repo/ $USER@$HOST:dev/fdroid/repo/
|
REMOTE_REPO_DIR="dev/fdroid/repo"
|
||||||
|
SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=20 -o ServerAliveInterval=30 -o ServerAliveCountMax=5"
|
||||||
|
|
||||||
|
# Ensure target directory exists before upload.
|
||||||
|
sshpass -p "$PASS" ssh $SSH_OPTS "$USER@$HOST" "mkdir -p '$REMOTE_REPO_DIR'"
|
||||||
|
|
||||||
|
if sshpass -p "$PASS" ssh $SSH_OPTS "$USER@$HOST" "command -v rsync >/dev/null 2>&1"; then
|
||||||
|
ATTEMPT=1
|
||||||
|
until [ "$ATTEMPT" -gt 3 ]; do
|
||||||
|
echo "Rsync upload attempt $ATTEMPT/3"
|
||||||
|
if sshpass -p "$PASS" rsync -avz --timeout=60 -e "ssh $SSH_OPTS" fdroid/repo/ "$USER@$HOST:$REMOTE_REPO_DIR/"; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
sleep $((ATTEMPT * 5))
|
||||||
|
ATTEMPT=$((ATTEMPT + 1))
|
||||||
|
done
|
||||||
|
echo "Rsync failed after retries, falling back to scp"
|
||||||
|
else
|
||||||
|
echo "Remote rsync not found, using scp fallback"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sshpass -p "$PASS" scp $SSH_OPTS -r fdroid/repo/. "$USER@$HOST:$REMOTE_REPO_DIR/"
|
||||||
|
|||||||
Reference in New Issue
Block a user