OASIS_MOBILE/.gitea/workflows/apk.yml
oasis-bot b3172ed1c3 android: release --public, version de package.json y libnode comprimida
Lo del 10 de octubre que sigue valiendo sobre la base 1.3.3:
- con un tag v* el workflow publica la APK; a mano sigue en borrador
- el workflow trae el APK oficial de la misma version: de ahi salen
  node_modules y libnode.so (prepare.sh ya lo usaba, pero el runner no lo tenia)
- versionName sale de package.json en vez de ir escrito a mano
- libnode.so comprimida, como en la oficial (unos 35 MB menos por descarga)
- release.sh: JAVA_HOME en el PATH, no deja salir una release debuggable,
  exige CHANGE_WIFI_MULTICAST_STATE y avisa si la APK pasa de 80 MB

Se queda fuera la poda de prepare.sh y la sha256 de la APK 1.2.5: ahora el
node_modules viene ya podado del APK oficial.
2026-10-19 02:00:40 +02:00

68 lines
2.4 KiB
YAML

# Construye la APK y la publica en las releases.
#
# Con un tag v* se publica directamente: crear el tag ya es la decision de sacar
# version, y es la que enlaza el README (releases/latest). Lanzada a mano desde
# la interfaz se queda en borrador, para revisarla antes.
#
# 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: Traer el APK oficial de la misma version (node_modules y libnode.so)
run: |
v=$(node -p "require('./src/server/package.json').version")
curl -sfL -o /tmp/oasis-base.apk \
"https://github.com/epsylon/oasis/releases/download/oasis-android-v$v/oasis-v$v.apk"
echo "OASIS_APK_BASE=/tmp/oasis-base.apk" >> "$GITHUB_ENV"
- 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
if [ "${{ github.ref_type }}" = "tag" ]; then
./scripts/release.sh --release --publish --public
else
./scripts/release.sh --release --publish
fi
- name: Borrar el almacen de claves
if: always()
run: rm -f /tmp/oasis.jks /tmp/oasis-base.apk