Interview frequency: …
Short answer
Create a workflow that checks code quality and static analysis (lint, typecheck, unit tests), then invokes EAS CLI or Gradle/Fastlane to build and distribute packages automatically when changes are merged into the main branch.
Explanation
CI/CD ensures that code that breaks the native build is not merged. The pipeline includes installing dependencies with caching, running Jest tests, validating TypeScript, then calling eas-cli with an EXPO_TOKEN to build production packages and upload them automatically to app stores.
Code example
name: CI/CD Pipeline
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20, cache: 'npm' }
- run: npm ci
- run: npm run lint
- run: npm test
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- run: eas build --platform all --profile production --non-interactiveCommon mistakes
- Trying to build native iOS projects on Ubuntu GitHub Actions runners instead of macos-runner hosts or using cloud EAS.