Build & Deployment
CI/CD infrastructure across all platforms — automated builds, environment management, app store publishing, and cross-repo dependency cascading. You get deployment pipelines from day one.
Platform Overview
| Flutter | Angular | React (Web) | React Native | |
|---|---|---|---|---|
| CI/CD Tool | GitHub Actions | Google Cloud Build + GitHub Actions | GitHub Actions | GitHub Actions (EAS Build) |
| Deployment Target | TestFlight + Google Play | Firebase Hosting | GCP Cloud Run | TestFlight + Google Play |
| Environments | 5 (dev, ci, qa, demo, prod) | 6 (dev, ci, qa, demo, stage, prod) | 4 (dev, ci, qa, prod) | 4 (dev, ci, qa, prod) |
| Package Publishing | Git refs (Melos) | GitHub Packages (npm) | GitHub Packages (npm) | GitHub Packages (npm) |
| Preview Deploys | — | Per-branch Firebase previews | PR-based Storybook previews | — |
| OTA Updates | — | — | — | Expo Updates |
Flutter
GitHub Actions with workflow_dispatch triggers accepting branch, environment, and platform toggles.
| Stage | What’s Automated |
|---|---|
| Setup | Branch/environment resolution, Flutter version from FVM, env var loading |
| iOS | Codemagic CLI signing, auto-increment build number (latest TestFlight + 1), flutter build ipa, publish to TestFlight |
| Android | Keystore decoding from secrets, auto-increment build number (latest Play Store + 1), flutter build appbundle, publish to Google Play (internal track) |
| Notifications | Rich Slack notification with per-platform status and store links |
5-environment flavor system with full isolation — each environment gets separate Firebase projects, env files, Android flavors, iOS build schemes, and app bundle IDs. A script-based dependency switcher toggles ~22 SDK package references between local paths and git branch refs.
Angular
Google Cloud Build for app deployment + GitHub Actions for SDK publishing and automation.
SDK pipeline (sdks-angular):
| Workflow | What It Does |
|---|---|
| Release Please | Automated semver from conventional commits, per-package release PRs |
| Publish | Nx parallel builds → publish @engineering11/*-web to GitHub Packages |
| Auto-Update | repository_dispatch triggers downstream repo update PRs |
| AI Review | e11automaton/pr-agent for automated PR review |
App pipeline (your product app):
Cloud Build on N1_HIGHCPU_32 machines:
- Install dependencies (private registry from GCP Secret Manager)
- Build
shared-lib - Version stamp and build all 3 apps in parallel
- Upload source maps to Rollbar
- Deploy to Firebase Hosting
6 environments with compile-time environment.ts file replacements per build config. Branch-to-environment mapping: develop → CI, qa/* → QA, release/* → Stage, production/* → Production.
Cross-repo cascade: When SDKs publish, multi-repo-update-orchestrator dispatches events to downstream repos, which auto-create PRs with updated SDK versions.
React (Web)
GitHub Actions with 11 workflows covering build, test, lint, deploy, and publish.
| Workflow | Trigger | What It Does |
|---|---|---|
apps-dev.yml | Push to main | Auto-deploy dev environment |
cloud-run-deploy.yml | Called by app workflows | Docker → GCP Artifact Registry → Cloud Run |
storybook-deploy.yml | PR / push to main | Firebase Hosting (preview channels for PRs) |
test.yml | PR / push | Vitest + Firestore emulator |
release.yml | Push to main | Changesets → version → publish to GitHub Packages |
lint-and-format.yml | PR / push | ESLint + Prettier checks |
Build tooling: tsup for CJS + ESM output, Turborepo for dependency-aware task graph with caching, TypeScript strict mode with ES2022 target.
React Native
EAS Build via GitHub Actions with managed build profiles.
| Profile | Output | Target |
|---|---|---|
dev | APK | Local testing |
ci | APK | CI validation |
qa | APK | QA testing |
prod | AAB + IPA | Google Play + App Store (auto-submit) |
OTA Updates: Expo Updates configured with appVersion runtime versioning — ship bug fixes without app store review.
Environments: APP_ENV build arg with per-environment Firebase configs in configs/{dev,qa,ci,prod}/.
Package Publishing
All TypeScript/JavaScript platforms publish Foundation packages to GitHub Packages (npm.pkg.github.com/engineering11/):
- Angular: Release Please for automated semver + changelog from conventional commits
- React/RN: Changesets for version management and publishing
- Post-publish: Triggers update orchestrator to auto-create PRs in downstream repos
Flutter uses git ref-based dependencies managed by Melos, switching between local paths and branch refs per environment.
Next Steps
- Platforms — Platform-specific capability deep-dives
- Architecture — How the layered architecture works
- Component Libraries — UI component inventories per platform
- Frontend SDKs — Foundation SDK packages per platform