diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index e3a645b..a3240c7 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -276,10 +276,29 @@ jobs: ETIQUETA="${BRANCH}-v${VERSION}+${BUILD_NUMBER}" APK_NOMBRE="pluriwave-${ETIQUETA}.apk" AAB_NOMBRE="pluriwave-${ETIQUETA}.aab" - # Carpeta por rama: main y PRO ya no se mezclan en el portal, que - # ordena por número de versión y por tanto mostraba el build de - # desarrollo como "última versión" por delante del de release. - DESTINO="/opt/ftl-builds/builds/pluriwave/${BRANCH}/v${VERSION}" + # La rama va en el NOMBRE DE LA APP, no en una subcarpeta. + # + # El objetivo sigue siendo el de siempre: que main y PRO no se mezclen + # en el portal, que ordena por número de versión y mostraba el build + # de desarrollo como "última versión" por delante del de release. + # + # Pero la primera solución metía la rama como TERCER nivel + # (pluriwave/main/v1.3.3/) y el portal indexa solo DOS — + # // —, así que desde el 29-08 ningún build de + # main volvió a aparecer en builds.freetimelab.es aunque el job saliera + # verde: el scp subía bien, a una ruta que el indexador no lee. Nada + # avisaba, y el echo de abajo se comía la rama y mandaba a la carpeta + # antigua, que llevaba congelada desde el +157. + # + # Con la rama en el nombre, PRO conserva la entrada limpia "pluriwave" + # y main tiene la suya, igual que ya conviven radar-foral y + # radar-foral-android. + if [ "$BRANCH" = "PRO" ]; then + APP="pluriwave" + else + APP="pluriwave-$(echo "$BRANCH" | tr '/' '-')" + fi + DESTINO="/opt/ftl-builds/builds/${APP}/v${VERSION}" SSH_KEY="/Users/freetlab/.openclaw/workspace/.secure/zimaboard_ed25519" ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no ShanaiaBot@192.168.0.33 "mkdir -p ${DESTINO}" @@ -289,28 +308,46 @@ jobs: scp -i "$SSH_KEY" -o StrictHostKeyChecking=no \ build/app/outputs/bundle/release/app-release.aab \ "ShanaiaBot@192.168.0.33:${DESTINO}/${AAB_NOMBRE}" - echo "✅ APK: builds.freetimelab.es → pluriwave → v${VERSION} → ${APK_NOMBRE}" - echo "✅ AAB: builds.freetimelab.es → pluriwave → v${VERSION} → ${AAB_NOMBRE}" + # La ruta se imprime desde ${APP}, no a mano: la version anterior tenia + # "pluriwave" escrito a fuego y mandaba a la carpeta equivocada cada + # vez que se compilaba algo que no fuera PRO. + echo "✅ APK: builds.freetimelab.es → ${APP} → v${VERSION} → ${APK_NOMBRE}" + echo "✅ AAB: builds.freetimelab.es → ${APP} → v${VERSION} → ${AAB_NOMBRE}" + # La publicacion automatica en Google Play es OPCIONAL. + # + # Este paso hacia `exit 1` cuando faltaba el secreto, asi que TODA + # compilacion de PRO terminaba en rojo por una funcion que nunca llego a + # activarse: el secreto no se configuro nunca y las subidas a Play se han + # hecho siempre a mano. Un rojo permanente entrena a ignorar los rojos, y + # entonces el dia que falle algo de verdad tampoco se mira. + # + # Ahora se omite con un aviso. El AAB ya esta compilado, firmado y subido + # a ftl-builds por el paso anterior, asi que no se pierde nada. El dia que + # se configure el secreto, los tres pasos se activan solos. - name: Preparar credenciales de Google Play + id: credenciales_play if: ${{ gitea.ref == 'refs/heads/PRO' }} env: GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }} run: | if [ -z "$GOOGLE_PLAY_SERVICE_ACCOUNT_JSON" ]; then - echo "ERROR: falta el secreto GOOGLE_PLAY_SERVICE_ACCOUNT_JSON" - exit 1 + echo "disponible=no" >> "$GITHUB_OUTPUT" + echo "AVISO: falta el secreto GOOGLE_PLAY_SERVICE_ACCOUNT_JSON." + echo "Se omite la publicacion en Google Play; sube el AAB a mano." + exit 0 fi mkdir -p fastlane/credentials printf '%s' "$GOOGLE_PLAY_SERVICE_ACCOUNT_JSON" > fastlane/credentials/google-play-service-account.json + echo "disponible=si" >> "$GITHUB_OUTPUT" - name: Instalar Fastlane - if: ${{ gitea.ref == 'refs/heads/PRO' }} + if: ${{ gitea.ref == 'refs/heads/PRO' && steps.credenciales_play.outputs.disponible == 'si' }} run: | gem list -i fastlane >/dev/null 2>&1 || gem install fastlane --no-document - name: Publicar AAB en Google Play Internal Testing - if: ${{ gitea.ref == 'refs/heads/PRO' }} + if: ${{ gitea.ref == 'refs/heads/PRO' && steps.credenciales_play.outputs.disponible == 'si' }} env: PLAY_JSON_KEY_PATH: fastlane/credentials/google-play-service-account.json PLAY_AAB_PATH: build/app/outputs/bundle/release/app-release.aab @@ -328,8 +365,11 @@ jobs: if [ -z "$BOT_TOKEN" ]; then exit 0; fi if [ "${{ job.status }}" = "success" ]; then MSG="✅ *PluriWave* v${VERSION} · rama ${BRANCH} · ${COMMIT}%0AAPK + AAB generados" - if [ "$BRANCH" = "PRO" ]; then + # Solo se anuncia la subida a Play cuando de verdad ocurrio. + if [ "$BRANCH" = "PRO" ] && [ "${{ steps.credenciales_play.outputs.disponible }}" = "si" ]; then MSG="${MSG}%0APublicado en Google Play · Internal Testing" + elif [ "$BRANCH" = "PRO" ]; then + MSG="${MSG}%0AEn builds.freetimelab.es · sube el AAB a Play a mano" else MSG="${MSG}%0APublicado en builds.freetimelab.es" fi