From 7536f2f75941d105e8f7caa4339966ec080cb0b3 Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 16 Mar 2026 21:38:37 +0100 Subject: [PATCH] chore(release): switch to SCP-only upload, remove rsync dependency --- .gitea/workflows/release.yaml | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index f1b2a36..03fa571 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -114,7 +114,7 @@ jobs: $SUDO apt-get update # sshpass from apt, fdroidserver via pip to get a newer androguard that # can parse modern Flutter/AGP APKs (apt ships fdroidserver 2.2.1 which crashes) - $SUDO apt-get install -y sshpass rsync python3-pip + $SUDO apt-get install -y sshpass python3-pip pip3 install --break-system-packages --upgrade fdroidserver - name: Initialize or fetch F-Droid Repository @@ -157,24 +157,12 @@ jobs: run: | set -euo pipefail REMOTE_REPO_DIR="dev/fdroid/repo" - SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=20 -o ServerAliveInterval=30 -o ServerAliveCountMax=5" + SCP_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=20" - # 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" + # Use SCP/SFTP path only (some hosts deny SSH exec channels required by rsync/ssh). + if sshpass -p "$PASS" scp $SCP_OPTS -r fdroid/repo/. "$USER@$HOST:$REMOTE_REPO_DIR/"; then + exit 0 fi - sshpass -p "$PASS" scp $SSH_OPTS -r fdroid/repo/. "$USER@$HOST:$REMOTE_REPO_DIR/" + # Fallback for older SSH servers that require legacy SCP protocol. + sshpass -p "$PASS" scp -O $SCP_OPTS -r fdroid/repo/. "$USER@$HOST:$REMOTE_REPO_DIR/"