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.
68 lines
2.4 KiB
YAML
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
|