Skip to main content

πŸš€ EAS Workflows Setup Checklist (LEGACY)

Legacy

This checklist applies to an older EAS Workflows-based pipeline. The current pipeline is documented in deployment/mobile-deployment-guide.

πŸ“‹ Overview​

This checklist will guide you through setting up the hybrid GitHub Actions + EAS Workflows deployment system for AttuneLogic Mobile.

Estimated Time

30-45 minutes for complete setup


βœ… Prerequisites​

Before you begin, ensure you have:

  • Expo account with EAS access
  • GitHub repository admin access
  • Apple Developer account (for iOS)
  • Google Play Developer account (for Android)
  • Slack workspace (optional, for notifications)

πŸ”§ Step 1: EAS Configuration​

1.1 Create EAS Workflow Files​

Files are already created at:

  • .eas/workflows/deploy-beta.yml βœ…
  • .eas/workflows/deploy-alpha.yml βœ…
  • .eas/workflows/deploy-production.yml βœ…

1.2 Update eas.json​

File has been optimized with:

  • Resource classes configured for each profile
  • Android: AAB for alpha/production, APK for beta
  • Submit configurations for TestFlight and Play Store
  • Environment variables for each profile

Verify:

cat eas.json | jq '.build'

1.3 Connect GitHub Repository​

  1. Go to https://expo.dev/accounts/[your-account]/settings/github
  2. Click "Install GitHub App"
  3. Select attunelogic-mobile repository
  4. Authorize the connection

πŸ” Step 2: GitHub Secrets Configuration​

2.1 Get Expo Access Token​

  1. Visit: https://expo.dev/accounts/[your-account]/settings/access-tokens
  2. Click "Create token"
  3. Name: github-actions-mobile
  4. Scopes: Select all permissions
  5. Copy the token (you won't see it again!)

2.2 Add Secrets to GitHub​

Go to: https://github.com/[org]/attunelogic-mobile/settings/secrets/actions

Add the following secrets:

  • EXPO_TOKEN = [your expo access token]
  • EXPO_ACCOUNT = [your expo account slug, e.g., "ferda-tech"]
  • SLACK_WEBHOOK_URL = [your slack webhook] (optional)

Verify:

# Check secrets are visible in GitHub UI (values won't be shown)

2.3 Verify GitHub Token Permissions​

The GITHUB_TOKEN is automatically provided, but verify permissions:

  1. Go to Settings β†’ Actions β†’ General
  2. Workflow permissions: Select "Read and write permissions"
  3. Enable: "Allow GitHub Actions to create and approve pull requests"

πŸ“± Step 3: EAS Build Configuration​

3.1 Configure iOS Credentials​

# Run locally to set up iOS credentials
eas credentials --platform ios
  • Select project
  • Choose "Set up" for each profile (beta, alpha, production)
  • Follow prompts to configure:
    • Apple Team ID
    • App Store Connect API Key
    • Distribution certificates
    • Provisioning profiles

3.2 Configure Android Credentials​

# Run locally to set up Android credentials
eas credentials --platform android
  • Upload keystore or let EAS generate one
  • Configure Google Play Service Account
  • Set up for each profile (beta, alpha, production)

3.3 Verify Credentials​

# Check credentials are configured
eas credentials --platform ios
eas credentials --platform android

πŸ—οΈ Step 4: Initial Builds​

4.1 Create Initial Beta Build​

This creates the first native build that subsequent repacks can use:

# Create initial iOS beta build
eas build --platform ios --profile beta

# Create initial Android beta build
eas build --platform android --profile beta
  • iOS beta build completed
  • Android beta build completed
  • Note the build IDs for reference

4.2 Create Initial Alpha Build​

# Create initial iOS alpha build
eas build --platform ios --profile alpha

# Create initial Android alpha build
eas build --platform android --profile alpha
  • iOS alpha build completed
  • Android alpha build completed

4.3 Submit Initial Alpha Builds​

# Submit iOS to TestFlight
eas submit --platform ios --profile alpha --latest

# Submit Android to Play Internal Testing
eas submit --platform android --profile alpha --latest
  • iOS submitted to TestFlight
  • Android submitted to Play Internal Testing

πŸ”„ Step 5: Workflow Testing​

5.1 Test Beta Workflow​

  1. Create test branch:

    git checkout -b feature/test-eas-workflows
    git commit --allow-empty -m "test: EAS workflows setup"
    git push origin feature/test-eas-workflows
  2. Verify GitHub Actions creates PR to beta

  3. Merge the PR

  4. Verify EAS Workflow triggers

  5. Check EAS dashboard for workflow execution

  6. Confirm Slack notification (if configured)

  7. Verify PR created to alpha

5.2 Test Fingerprinting​

  1. Make JS-only change:

    # Edit a React component (no native changes)
    git commit -m "feat: test repack optimization"
    git push
  2. Merge through beta

  3. Verify EAS Workflow uses repack (should be fast!)

  4. Check build logs show "Repack" instead of "Build"

5.3 Test Native Build​

  1. Make native change or use flag:

    git commit --allow-empty -m "test: force native build [build]"
    git push
  2. Merge through beta

  3. Verify EAS Workflow triggers full build

  4. Check build takes longer (~15-30 min)


πŸ“Š Step 6: Monitoring Setup​

6.1 Bookmark Key URLs​

  • GitHub Actions: https://github.com/[org]/attunelogic-mobile/actions
  • EAS Workflows: https://expo.dev/accounts/[account]/projects/attunelogic-mobile/workflows
  • EAS Builds: https://expo.dev/accounts/[account]/projects/attunelogic-mobile/builds
  • EAS Updates: https://expo.dev/accounts/[account]/projects/attunelogic-mobile/updates
  • TestFlight: https://appstoreconnect.apple.com
  • Play Console: https://play.google.com/console

6.2 Configure Slack Notifications (Optional)​

  1. Create Slack incoming webhook
  2. Add to GitHub secrets as SLACK_WEBHOOK_URL
  3. Test notification by triggering a deployment

πŸ“ Step 7: Documentation & Team Onboarding​

7.1 Review Documentation​

Ensure team reviews:

7.2 Team Training​

Conduct training session covering:

  • New deployment flow (GitHub β†’ EAS)
  • How fingerprinting works
  • When repack vs build happens
  • How to monitor deployments
  • Emergency procedures

7.3 Update Team Processes​

  • Update deployment runbook
  • Add EAS dashboard access for team
  • Document emergency rollback procedures
  • Set up on-call rotation (if applicable)

πŸ§ͺ Step 8: End-to-End Validation​

8.1 Full Pipeline Test​

Run a feature through the entire pipeline:

  1. Create feature branch

    git checkout -b feature/e2e-test
  2. Make a change

    # Add a simple UI change
    git commit -m "feat: e2e pipeline test"
    git push
  3. Verify progression:

    • PR created to beta
    • Merge and deploy to beta (via EAS Workflow)
    • PR created to alpha
    • Merge and deploy to alpha (via EAS Workflow)
    • TestFlight/Play submission
    • PR created to main
    • (Optional) Deploy to production
  4. Verify user experience:

    • Install beta build
    • Receive OTA update
    • Check TestFlight build
    • Verify Play Console listing

8.2 Rollback Test​

Test rollback procedure:

  1. Identify previous update
  2. Run rollback:
    eas update:republish \
    --group [previous-update-group-id] \
    --branch beta
  3. Verify users receive rollback

βœ… Completion Checklist​

Infrastructure​

  • EAS Workflows files created
  • GitHub Actions workflow configured
  • eas.json optimized
  • GitHub repository connected to EAS

Credentials​

  • EXPO_TOKEN configured
  • EXPO_ACCOUNT configured
  • iOS credentials set up
  • Android credentials set up
  • SLACK_WEBHOOK_URL configured (optional)

Initial Builds​

  • Beta iOS build created
  • Beta Android build created
  • Alpha iOS build created and submitted
  • Alpha Android build created and submitted

Testing​

  • Beta workflow tested
  • Fingerprinting/repack tested
  • Native build tested
  • Alpha workflow tested
  • Full pipeline tested
  • Rollback procedure tested

Documentation​

  • Team reviewed documentation
  • Training session conducted
  • Processes updated
  • Monitoring URLs bookmarked

πŸŽ‰ You're Done!​

Your mobile deployment pipeline is now fully configured with:

βœ… GitHub Actions for PR orchestration
βœ… EAS Workflows for intelligent build optimization
βœ… Automatic fingerprinting and repack
βœ… TestFlight/Play Store automation
βœ… Monitoring via GitHub and EAS dashboards
βœ… Team documentation and training


πŸ†˜ Troubleshooting​

Common Setup Issues​

IssueSolution
EAS Workflow not triggeringVerify EXPO_TOKEN and EXPO_ACCOUNT secrets
Build failingCheck credentials: eas credentials --platform [ios|android]
GitHub PR not createdVerify GitHub token has write permissions
TestFlight submission failsCheck App Store Connect API key in EAS
Fingerprint always differentVerify no native dependencies changed between builds

Need Help?​

  1. Check EAS Workflows Guide
  2. Review the current mobile deployment guide
  3. Check EAS Dashboard logs
  4. Contact #mobile-team on Slack

πŸ“š Next Steps​

After setup, consider:

  1. Set up automated E2E tests with Maestro
  2. Configure staged rollouts in Play Console
  3. Set up error monitoring (Sentry)
  4. Create custom Slack notifications
  5. Document environment-specific testing procedures

πŸ”„ Maintenance​

Monthly​

  • Review EAS Workflow execution times
  • Check build success rates
  • Review OTA update adoption rates
  • Audit credentials expiration dates

Quarterly​

  • Review and update documentation
  • Conduct team training refresh
  • Optimize workflow configurations
  • Review and adjust resource classes

πŸ“ Notes​

Setup Date: _______________

Team Members Trained:

  • _______________
  • _______________
  • _______________

Initial Build IDs:

  • Beta iOS: _______________
  • Beta Android: _______________
  • Alpha iOS: _______________
  • Alpha Android: _______________

Expo Account: _______________

Additional Notes:








Congratulations on setting up a production-ready mobile CI/CD pipeline! πŸš€