From 2a4b14cb43045c133a1d56f3bb5f4ae757d3f22d Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 16 Mar 2026 22:13:32 +0100 Subject: [PATCH] chore(release): improve F-Droid release workflow for repo persistence - Download entire `fdroid/` directory from Hetzner to retain older APKs, repo keystore, and config.yml. - Add steps to ensure repo signing key and icons during initialization. - Adjust SCP upload to include the entire `fdroid/` directory for better state continuity. --- .gitea/workflows/release.yaml | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index f695bb5..9eba674 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -132,9 +132,27 @@ jobs: -mkdir dev/fdroid/repo SFTP - # Try to download the existing repo/ folder from Hetzner to keep older versions and the keystore. + # Try to download the entire fdroid/ directory from Hetzner to keep + # older APKs, the repo keystore, and config.yml across runs. # 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) + sshpass -p "$PASS" scp -o StrictHostKeyChecking=no -r "$USER@$HOST:dev/fdroid/." fdroid/ || (cd fdroid && fdroid init) + + - name: Ensure F-Droid repo signing key and icon + run: | + cd fdroid + + # Ensure repo icon exists (use app launcher icon) + mkdir -p repo/icons + if [ ! -f repo/icons/icon.png ]; then + cp ../android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png repo/icons/icon.png + fi + + # If keystore doesn't exist, create the signing key. + # This only runs on the very first deployment; subsequent runs + # download the keystore from Hetzner via the scp step above. + if [ ! -f keystore.p12 ]; then + fdroid update --create-key + fi - name: Copy new APK to repo run: | @@ -162,7 +180,6 @@ jobs: PASS: ${{ secrets.HETZNER_PASS }} run: | set -euo pipefail - REMOTE_REPO_DIR="dev/fdroid/repo" SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=20" # Create remote directory tree via SFTP batch (no exec channel needed). @@ -173,5 +190,6 @@ jobs: -mkdir dev/fdroid/repo SFTP - # Upload all files from fdroid/repo into the remote directory. - sshpass -p "$PASS" scp $SSH_OPTS -r fdroid/repo/. "$USER@$HOST:$REMOTE_REPO_DIR/" + # Upload the entire fdroid/ directory (repo + keystore + config) + # so the signing key persists across runs. + sshpass -p "$PASS" scp $SSH_OPTS -r fdroid/. "$USER@$HOST:dev/fdroid/"