Skip to content

refactor: upgrade to Expo SDK 52 #664

refactor: upgrade to Expo SDK 52

refactor: upgrade to Expo SDK 52 #664

Workflow file for this run

name: Runtime
defaults:
run:
working-directory: runtime
concurrency:
group: runtime-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
inputs:
deploy:
description: What environment should be deployed
type: choice
default: no-deploy
options:
- no-deploy
- staging
- production
platform:
description: What platform should be deployed
type: choice
default: all
options:
- all
- web
- native
pull_request:
paths:
- .github/actions/setup-runtime/**
- .github/workflows/runtime.yml
- runtime/**
- .eslint*
- .prettier*
push:
branches: [main]
paths:
- .github/actions/setup-runtime/**
- .github/workflows/runtime.yml
- runtime/**
- .eslint*
- .prettier*
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: πŸ— Setup repository
uses: actions/checkout@v3
- name: πŸ— Setup runtime
uses: ./.github/actions/setup-runtime
- name: 🚨 Lint runtime
run: |
yarn tsc --noEmit
yarn lint --max-warnings 0
- name: πŸ§ͺ Run runtime tests
run: |
yarn test --ci --maxWorkers 1
deploy-staging:
if: ${{ (github.event.inputs.deploy == 'staging' && github.event_name != 'pull_request') || (github.event_name == 'push' && github.ref == 'refs/heads/main') }}
needs: review
runs-on: ubuntu-latest
environment:
name: runtime-staging
url: https://staging.expo.dev/@exponent/snack
env:
EXPO_PROJECT_ID: 2dce2748-c51f-4865-bae0-392af794d60a # Configure the EAS Update project
EXPO_PUBLIC_SNACK_ENV: staging # Configure Snack to use staging endpoints
EXPO_STAGING: 'true' # Configure Expo tooling to use staging endpoints
steps:
- name: πŸ— Setup repository
uses: actions/checkout@v3
- name: πŸ— Setup runtime
uses: ./.github/actions/setup-runtime
- name: 🌐 Deploy web-player
if: ${{ contains('all web', github.event.inputs.platform) }}
run: yarn deploy:web:staging
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SNACK_RUNTIME_AWS_STAGING_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SNACK_RUNTIME_AWS_STAGING_SECRET }}
- name: πŸ“± Deploy native runtime
if: ${{ contains('all native', github.event.inputs.platform) }}
run: yarn deploy:staging
env:
EXPO_TOKEN: ${{ secrets.SNACK_RUNTIME_EXPO_STAGING }}
NODE_OPTIONS: --max-old-space-size=4096
- name: πŸ’¬ Notify Slack
uses: 8398a7/action-slack@v3
if: ${{ always() }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_SNACK }}
with:
channel: '#snack'
status: ${{ job.status }}
author_name: Deploy Runtime to Staging
fields: message,commit,author,job,took
text: "platform: ${{ github.event.inputs.platform }}"
deploy-production:
if: ${{ github.event.inputs.deploy == 'production' && github.ref == 'refs/heads/main' }}
needs: review
runs-on: ubuntu-latest
environment:
name: runtime-production
url: https://expo.dev/@exponent/snack
env:
EXPO_PROJECT_ID: 933fd9c0-1666-11e7-afca-d980795c5824 # Configure the EAS Update project
EXPO_PUBLIC_SNACK_ENV: production # Configure Snack to use production endpoints
steps:
- name: πŸ— Setup repository
uses: actions/checkout@v3
- name: πŸ— Setup runtime
uses: ./.github/actions/setup-runtime
- name: 🌐 Deploy web-player
if: ${{ contains('all web', github.event.inputs.platform) }}
run: yarn deploy:web:prod
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SNACK_RUNTIME_AWS_PRODUCTION_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SNACK_RUNTIME_AWS_PRODUCTION_SECRET }}
- name: πŸ“± Deploy native runtime
if: ${{ contains('all native', github.event.inputs.platform) }}
run: yarn deploy:prod
env:
EXPO_TOKEN: ${{ secrets.SNACK_RUNTIME_EXPO_PRODUCTION }}
NODE_OPTIONS: --max-old-space-size=4096
- name: πŸ’¬ Notify Slack
uses: 8398a7/action-slack@v3
if: ${{ always() }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_SNACK }}
with:
channel: '#snack'
status: ${{ job.status }}
author_name: Deploy Runtime to Production
fields: message,commit,author,job,took
text: "platform: ${{ github.event.inputs.platform }}"