feat: Cap.B pulido — semáforo/alarma de marcas cerradas (ClosedBrands… #44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build & publish Android APK | |
| # Cada push a main (que toque código de la app) → APK release firmado + version.json | |
| # subidos al bucket público `apps` de Supabase. Las tablets se actualizan solas | |
| # (ver src/native/appUpdate.ts + UpdateGate). Cero Android Studio, cero cables. | |
| # | |
| # Política de forzado (mandatory): por defecto FALSE → la actualización se ofrece | |
| # pero no bloquea (se aplica en reposo/reinicio, sin interrumpir el servicio de | |
| # cocina). Solo es OBLIGATORIA si el mensaje del commit contiene el marcador | |
| # [force-update] — reservado a cambios que rompen compatibilidad. Ver UpdateGate. | |
| on: | |
| push: | |
| branches: [main] | |
| paths-ignore: | |
| - 'docs/**' | |
| - '**/*.md' | |
| - 'supabase/**' | |
| workflow_dispatch: | |
| jobs: | |
| build-apk: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '21' | |
| - name: Install deps | |
| run: npm ci | |
| - name: Build web bundle | |
| run: npm run build | |
| env: | |
| VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }} | |
| VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }} | |
| VITE_APP_URL: ${{ secrets.VITE_APP_URL }} | |
| VITE_MAPBOX_TOKEN: ${{ secrets.VITE_MAPBOX_TOKEN }} | |
| VITE_STRIPE_PUBLISHABLE_KEY: ${{ secrets.VITE_STRIPE_PUBLISHABLE_KEY }} | |
| - name: Capacitor sync (android) | |
| run: npx cap sync android | |
| - name: Decode signing keystore | |
| run: echo "${{ secrets.FOLVY_KEYSTORE_B64 }}" | base64 -d > android/app/folvy-release.jks | |
| - name: Build signed release APK | |
| working-directory: android | |
| run: ./gradlew assembleRelease --no-daemon | |
| env: | |
| FOLVY_KEYSTORE_FILE: folvy-release.jks | |
| FOLVY_KEYSTORE_PWD: ${{ secrets.FOLVY_KEYSTORE_PWD }} | |
| FOLVY_KEY_ALIAS: ${{ secrets.FOLVY_KEY_ALIAS }} | |
| FOLVY_KEY_PWD: ${{ secrets.FOLVY_KEY_PWD }} | |
| FOLVY_VERSION_CODE: ${{ github.run_number }} | |
| - name: Prepare version.json | |
| run: | | |
| VC="${{ github.run_number }}" | |
| # mandatory=false salvo que el commit HEAD lleve [force-update]. Se lee con | |
| # git (funciona igual en push y en workflow_dispatch, sin depender de la | |
| # forma del evento). | |
| MSG="$(git log -1 --pretty=%B)" | |
| if printf '%s' "$MSG" | grep -qF '[force-update]'; then | |
| MANDATORY=true | |
| else | |
| MANDATORY=false | |
| fi | |
| cat > version.json <<EOF | |
| { "versionCode": ${VC}, "versionName": "1.0.${VC}", "apkUrl": "${{ secrets.VITE_SUPABASE_URL }}/storage/v1/object/public/apps/folvy.apk", "mandatory": ${MANDATORY} } | |
| EOF | |
| echo "mandatory=${MANDATORY} (commit: ${MSG%%$'\n'*})" | |
| echo "version.json:" && cat version.json | |
| - name: Upload APK + version.json to Supabase Storage (bucket apps, upsert) | |
| env: | |
| SB_URL: ${{ secrets.VITE_SUPABASE_URL }} | |
| SB_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }} | |
| run: | | |
| APK="android/app/build/outputs/apk/release/app-release.apk" | |
| test -f "$APK" || { echo "APK no encontrado en $APK"; exit 1; } | |
| echo "Subiendo folvy.apk ($(du -h "$APK" | cut -f1))…" | |
| curl -sSf -X POST "$SB_URL/storage/v1/object/apps/folvy.apk" \ | |
| -H "Authorization: Bearer $SB_KEY" \ | |
| -H "x-upsert: true" \ | |
| -H "Content-Type: application/vnd.android.package-archive" \ | |
| --data-binary "@$APK" | |
| echo "Subiendo version.json…" | |
| curl -sSf -X POST "$SB_URL/storage/v1/object/apps/version.json" \ | |
| -H "Authorization: Bearer $SB_KEY" \ | |
| -H "x-upsert: true" \ | |
| -H "Content-Type: application/json" \ | |
| --data-binary "@version.json" | |
| echo "OK · versionCode=${{ github.run_number }}" |