diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 03fa571..f695bb5 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -124,11 +124,17 @@ jobs: PASS: ${{ secrets.HETZNER_PASS }} run: | mkdir -p fdroid - cd fdroid - - # Try to download the existing repo/ folder from Hetzner to keep older versions and the keystore - # If it fails (first time), we just initialize a new one - sshpass -p "$PASS" scp -o StrictHostKeyChecking=no -r $USER@$HOST:dev/fdroid/repo . || fdroid init + + # Ensure remote path exists (sftp mkdir, ignoring errors if already present). + sshpass -p "$PASS" sftp -o StrictHostKeyChecking=no "$USER@$HOST" <<'SFTP' + -mkdir dev + -mkdir dev/fdroid + -mkdir dev/fdroid/repo + SFTP + + # Try to download the existing repo/ folder from Hetzner to keep older versions and the keystore. + # If it fails (first time), initialize a new local repo. + sshpass -p "$PASS" scp -o StrictHostKeyChecking=no -r "$USER@$HOST:dev/fdroid/repo" fdroid/ || (cd fdroid && fdroid init) - name: Copy new APK to repo run: | @@ -157,12 +163,15 @@ jobs: run: | set -euo pipefail REMOTE_REPO_DIR="dev/fdroid/repo" - SCP_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=20" + SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=20" - # 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 + # Create remote directory tree via SFTP batch (no exec channel needed). + # Leading '-' on each mkdir means "ignore error if already exists". + sshpass -p "$PASS" sftp $SSH_OPTS "$USER@$HOST" <<'SFTP' + -mkdir dev + -mkdir dev/fdroid + -mkdir dev/fdroid/repo + SFTP - # 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/" + # Upload all files from fdroid/repo into the remote directory. + sshpass -p "$PASS" scp $SSH_OPTS -r fdroid/repo/. "$USER@$HOST:$REMOTE_REPO_DIR/"