Files
devops/fdroid-publish

fdroid-publish — публикация APK в F-Droid

Подписывает APK (v1+v2, keystore из переменных Gitea) и публикует в F-Droid репозиторий, затем пересобирает индекс (fdroid update).

Использование

В workflow проекта (по образцу build-docker / helm-publish):

- 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)