Files
lamp/.agents/skills/expo-deployment/references/workflows.md
Seven 8963f777ee Add PostCSS configuration and skills lock file
- Created a new PostCSS configuration file to integrate Tailwind CSS.
- Added a skills lock file containing various Expo skills with their respective source and computed hashes.
2026-03-09 06:41:01 +07:00

3.0 KiB

EAS Workflows

Automate builds, submissions, and deployments with EAS Workflows.

Web Deployment

Deploy web apps on push to main:

.eas/workflows/deploy.yml

name: Deploy

on:
  push:
    branches:
      - main

# https://docs.expo.dev/eas/workflows/syntax/#deploy
jobs:
  deploy_web:
    type: deploy
    params:
      prod: true

PR Previews

Web PR Previews

name: Web PR Preview

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  preview:
    type: deploy
    params:
      prod: false

Native PR Previews with EAS Updates

Deploy OTA updates for pull requests:

name: PR Preview

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  publish:
    type: update
    params:
      branch: "pr-${{ github.event.pull_request.number }}"
      message: "PR #${{ github.event.pull_request.number }}"

Production Release

Complete release workflow for both platforms:

name: Release

on:
  push:
    tags: ['v*']

jobs:
  build-ios:
    type: build
    params:
      platform: ios
      profile: production

  build-android:
    type: build
    params:
      platform: android
      profile: production

  submit-ios:
    type: submit
    needs: [build-ios]
    params:
      platform: ios
      profile: production

  submit-android:
    type: submit
    needs: [build-android]
    params:
      platform: android
      profile: production

Build on Push

Trigger builds when pushing to specific branches:

name: Build

on:
  push:
    branches:
      - main
      - release/*

jobs:
  build:
    type: build
    params:
      platform: all
      profile: production

Conditional Jobs

Run jobs based on conditions:

name: Conditional Release

on:
  push:
    branches: [main]

jobs:
  check-changes:
    type: run
    params:
      command: |
        if git diff --name-only HEAD~1 | grep -q "^src/"; then
          echo "has_changes=true" >> $GITHUB_OUTPUT
        fi

  build:
    type: build
    needs: [check-changes]
    if: needs.check-changes.outputs.has_changes == 'true'
    params:
      platform: all
      profile: production

Workflow Syntax Reference

Triggers

on:
  push:
    branches: [main, develop]
    tags: ['v*']
  pull_request:
    types: [opened, synchronize, reopened]
  schedule:
    - cron: '0 0 * * *'  # Daily at midnight
  workflow_dispatch:  # Manual trigger

Job Types

Type Purpose
build Create app builds
submit Submit to app stores
update Publish OTA updates
deploy Deploy web apps
run Execute custom commands

Job Dependencies

jobs:
  first:
    type: build
    params:
      platform: ios

  second:
    type: submit
    needs: [first]  # Runs after 'first' completes
    params:
      platform: ios

Tips

  • Use workflow_dispatch for manual production releases
  • Combine PR previews with GitHub status checks
  • Use tags for versioned releases
  • Keep sensitive values in EAS Secrets, not workflow files