# fdroid-publish — публикация APK в F-Droid Подписывает APK (v1+v2, keystore из переменных Gitea) и публикует в F-Droid репозиторий, затем пересобирает индекс (`fdroid update`). ## Использование В workflow проекта (по образцу `build-docker` / `helm-publish`): ```yaml - name: Build APK uses: https://git.binom.pw/subochev/devops/build-gradle@main with: target: assembleRelease - name: Publish to F-Droid uses: https://git.binom.pw/subochev/devops/fdroid-publish@main with: apk_path: "app/build/outputs/apk/release/app-release-unsigned.apk" ``` ## Переменные (user-level, Gitea → Settings → Actions → Variables) | Переменная | Назначение | |---|---| | `ANDROID_KEYSTORE_B64` | keystore подписи приложений в base64 | | `ANDROID_KEYSTORE_PASSWORD` | пароль keystore | | `ANDROID_KEY_ALIAS` | алиас ключа (binom) | | `ANDROID_KEY_PASSWORD` | пароль ключа | | `FROID_HOST` | F-Droid LXC (192.168.76.165) | | `FROID_SSH_USER` | root | | `FROID_SSH_KEY` | приватный SSH-ключ CI (ed25519) | ## Что происходит 1. Setup Java 21 2. Декодирует keystore, подписывает APK через uber-apk-signer (v1+v2) 3. `scp` подписанного APK в `/opt/fdroid/repo/` на F-Droid LXC 4. `ssh "cd /opt/fdroid && fdroid update"` — пересборка индекса После этого F-Droid-клиенты на устройствах подтянут обновление автоматически. ## Инфраструктура (см. скилл `fdroid-repo`) - LXC 192.168.76.165: fdroidserver 2.4.2, репозиторий `/opt/fdroid/repo` (единый источник; nginx монтирует его в контейнер) - URL репозитория: `https://fdroid.binom.pw/repo/` - keystore подписи приложений: `/opt/fdroid/android-release.keystore` (alias binom)