Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Official Expo AI agent skill for deploying Expo apps to App Store and Google Play.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/workflows.md
1# EAS Workflows23Automate builds, submissions, and deployments with EAS Workflows.45## Web Deployment67Deploy web apps on push to main:89`.eas/workflows/deploy.yml`1011```yaml12name: Deploy1314on:15push:16branches:17- main1819# https://docs.expo.dev/eas/workflows/syntax/#deploy20jobs:21deploy_web:22type: deploy23params:24prod: true25```2627## PR Previews2829### Web PR Previews3031```yaml32name: Web PR Preview3334on:35pull_request:36types: [opened, synchronize]3738jobs:39preview:40type: deploy41params:42prod: false43```4445### Native PR Previews with EAS Updates4647Deploy OTA updates for pull requests:4849```yaml50name: PR Preview5152on:53pull_request:54types: [opened, synchronize]5556jobs:57publish:58type: update59params:60branch: "pr-${{ github.event.pull_request.number }}"61message: "PR #${{ github.event.pull_request.number }}"62```6364## Production Release6566Complete release workflow for both platforms:6768```yaml69name: Release7071on:72push:73tags: ['v*']7475jobs:76build-ios:77type: build78params:79platform: ios80profile: production8182build-android:83type: build84params:85platform: android86profile: production8788submit-ios:89type: submit90needs: [build-ios]91params:92platform: ios93profile: production9495submit-android:96type: submit97needs: [build-android]98params:99platform: android100profile: production101```102103## Build on Push104105Trigger builds when pushing to specific branches:106107```yaml108name: Build109110on:111push:112branches:113- main114- release/*115116jobs:117build:118type: build119params:120platform: all121profile: production122```123124## Conditional Jobs125126Run jobs based on conditions:127128```yaml129name: Conditional Release130131on:132push:133branches: [main]134135jobs:136check-changes:137type: run138params:139command: |140if git diff --name-only HEAD~1 | grep -q "^src/"; then141echo "has_changes=true" >> $GITHUB_OUTPUT142fi143144build:145type: build146needs: [check-changes]147if: needs.check-changes.outputs.has_changes == 'true'148params:149platform: all150profile: production151```152153## Workflow Syntax Reference154155### Triggers156157```yaml158on:159push:160branches: [main, develop]161tags: ['v*']162pull_request:163types: [opened, synchronize, reopened]164schedule:165- cron: '0 0 * * *' # Daily at midnight166workflow_dispatch: # Manual trigger167```168169### Job Types170171| Type | Purpose |172|------|---------|173| `build` | Create app builds |174| `submit` | Submit to app stores |175| `update` | Publish OTA updates |176| `deploy` | Deploy web apps |177| `run` | Execute custom commands |178179### Job Dependencies180181```yaml182jobs:183first:184type: build185params:186platform: ios187188second:189type: submit190needs: [first] # Runs after 'first' completes191params:192platform: ios193```194195## Tips196197- Use `workflow_dispatch` for manual production releases198- Combine PR previews with GitHub status checks199- Use tags for versioned releases200- Keep sensitive values in EAS Secrets, not workflow files201