Add staging OTA publish pipeline#8798
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Preview buildsMobile Dev Tool previewScan the QR with your phone camera, or tap Open in Dev Tool on the device, to open this branch in the installed Dev Tool dev client. ios — Open in Dev Tool Deep linkandroid — Open in Dev Tool Deep linkcommit |
Adds a develop-only GitLab CI build+deploy pair that bundles the staging variant, stages the (unsigned) Expo Updates output, uploads bundle+assets to dev-assets, and prints the native_ota_bundles JSON for the staging GrowthBook flag. Also fixes the staging app's update URL to the renamed /native/ota/manifest endpoint. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The protos job already emits the grpc-web TS stubs to app/proto/gen/ts/proto and the mobile OTA jobs pull that artifact in via needs, so copy the stubs in rather than re-downloading protoc and running ci-build-protos.sh. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
9e3758d to
2d21617
Compare
📝 Release NotesThis PR does not need to be included in release notes. Reason: This PR adds internal CI/CD and staging OTA publishing infrastructure for the mobile app, plus a staging-only update URL fix. It is primarily developer/operations work and does not introduce a user-facing feature or a clearly noticeable improvement for end users in production. 🤖 Bot Debug InformationModel: |


Adds the staging publish pipeline for the self-hosted mobile OTA, mirroring the web build→deploy shape. On merge to
develop, CI bundles the staging variant, stages the (unsigned) Expo Updates output, uploads the bundle + assets to dev-assets, and prints thenative_ota_bundlesJSON to paste into the staging GrowthBook flag. The staging backend (dev-api.couchershq.org/native/ota/manifest) builds the served manifest from that flag, with asset URLs pointing at the uploaded files.Also fixes the staging app's update URL, which still pointed at the old
/mobile/ota/manifestpath after the endpoint was renamed to/native/ota/manifest.Targets the
mobile/feature/prod-otafeature branch (notdevelop).Changes
app/.gitlab-ci.yml— new develop-onlybuild:mobile-ota-staging+deploy:mobile-ota-stagingjobs.app/mobile/scripts/ota-growthbook-flag.mjs— emits thenative_ota_bundlesflag JSON from staged manifests.app/mobile/app.config.js— stagingupdates.url→/native/ota/manifest.Notes / follow-ups
https://<sha>--ota-staging.preview.couchershq.org, expecting the host→prefix lambda to map that to/ota-staging/<sha>/— the lambda needs updating to handle that prefix.tools/ops deploy, down the line.Testing
app/.gitlab-ci.ymlparses (js-yaml).ota-growthbook-flag.mjsagainst sample manifests; output matches the shape the backend servicer reads (id,launch_asset.{key,url},assets).runtime_versionin the flag JSON) matches the installed staging build.For maintainers
This PR was created with the Couchers PR skill.