From bcdf3d55c4f7d823a921eda415d0147de6ece15e Mon Sep 17 00:00:00 2001 From: freetlab Date: Fri, 4 Sep 2026 14:30:59 +0200 Subject: [PATCH] ci: publicar los builds de main donde el portal sabe leerlos Desde el 29-08 ningun build de main volvio a aparecer en builds.freetimelab.es, y nada avisaba: el job salia verde porque el scp subia correctamente, solo que a una ruta que el indexador no lee. El portal indexa DOS niveles, //. La solucion anterior metia la rama como TERCER nivel (pluriwave/main/v1.3.3/), asi que sus ficheros quedaban fuera del indice: 39 versiones listadas, ninguna con "main", ninguna con los codigos 158, 159 ni 160. Encima el echo del propio paso tenia "pluriwave" escrito a fuego y anunciaba la carpeta antigua, congelada desde el +157, que es justo donde se miraba al no encontrar nada. Ahora la rama va en el NOMBRE DE LA APP, que es lo que el portal si entiende. PRO conserva la entrada limpia "pluriwave" y main tiene la suya, igual que ya conviven radar-foral y radar-foral-android. Se cumple el objetivo original -- que el build de desarrollo no aparezca como ultima version de release -- sin romper el indexado. La ruta impresa se deriva de la misma variable, para que no puedan volver a desincronizarse. Se alinea tambien el arreglo del secreto de Google Play que ya esta en PRO: el paso se omite con un aviso en vez de hacer `exit 1`, y el mensaje de Telegram deja de afirmar que se publico algo que no se publico. main nunca ejecuta esos pasos, pero mantener un unico workflow evita conflictos en cada trasvase entre ramas. --- .gitea/workflows/build.yml | 62 +++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 11 deletions(-) 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