release.sh hace el ciclo entero y siempre igual, se lance a mano o desde un runner: empaqueta el backend, compila, verifica y publica la release en gitea. Las verificaciones no son decorativas, son las que han cazado fallos reales en esta rama: una APK puede compilar, instalar y arrancar sin el backend dentro, o haber perdido los permisos de camara y quedarse sin videollamadas. Se comprueba que estan el backend y libnode.so, los dos permisos, y la firma. El versionCode sale del numero de commits, que sube solo; el versionName, de package.json, que es de donde lo saca tambien el backend, para que la version que muestra la aplicacion no pueda discrepar de la de la APK. Los dos se pasan por entorno a Gradle en vez de editarlos a mano. La release se crea como borrador a proposito: publicar una APK firmada sin que nadie la mire no deberia poder pasar por descuido. El workflow de gitea no se dispara con cada commit (la APK son mas de 100 MB) y necesita un runner con el SDK de Android; queda documentado en su cabecera.
53 lines
1.7 KiB
YAML
53 lines
1.7 KiB
YAML
# Construye la APK y la deja publicada como borrador en las releases.
|
|
#
|
|
# NO se dispara sola con cada commit: la APK son mas de 100 MB y el backend tarda
|
|
# en empaquetarse. Se lanza a mano desde la interfaz de gitea, o al crear un tag.
|
|
#
|
|
# El runner necesita: JDK 17 con compilador, el SDK de Android (plataforma 35 y
|
|
# build-tools), node, zip y unzip. Un runner pelado NO vale.
|
|
#
|
|
# Secretos que hay que dar de alta en el repositorio:
|
|
# OASIS_KEYSTORE_B64 el almacen de claves en base64
|
|
# OASIS_KEYSTORE_PASS su contraseña
|
|
# OASIS_KEY_ALIAS el alias (por defecto "oasis")
|
|
#
|
|
# El token para publicar lo pone gitea solo en GITEA_TOKEN.
|
|
|
|
name: APK
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # release.sh cuenta commits para el versionCode
|
|
|
|
- name: Restaurar el almacen de claves
|
|
run: |
|
|
echo "${{ secrets.OASIS_KEYSTORE_B64 }}" | base64 -d > /tmp/oasis.jks
|
|
chmod 600 /tmp/oasis.jks
|
|
|
|
- name: Construir, verificar y publicar
|
|
env:
|
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64
|
|
ANDROID_HOME: /opt/android-sdk
|
|
OASIS_KEYSTORE: /tmp/oasis.jks
|
|
OASIS_KEYSTORE_PASS: ${{ secrets.OASIS_KEYSTORE_PASS }}
|
|
OASIS_KEY_ALIAS: ${{ secrets.OASIS_KEY_ALIAS }}
|
|
OASIS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
OASIS_GITEA_URL: ${{ github.server_url }}
|
|
OASIS_GITEA_REPO: ${{ github.repository }}
|
|
run: |
|
|
cd android
|
|
./scripts/release.sh --release --publish
|
|
|
|
- name: Borrar el almacen de claves
|
|
if: always()
|
|
run: rm -f /tmp/oasis.jks
|