[pull] main from expo:main #1329
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CLI | |
| on: | |
| push: | |
| branches: [main, 'sdk-*'] | |
| paths: | |
| - .github/workflows/cli.yml | |
| - packages/@expo/cli/** | |
| - packages/@expo/metro-runtime/** | |
| - packages/@expo/metro-config/src/** | |
| - packages/@expo/config/src/** | |
| - packages/@expo/config-plugins/src/** | |
| - packages/@expo/env/src/** | |
| - packages/@expo/json-file/src/** | |
| - packages/@expo/package-manager/src/** | |
| - packages/@expo/prebuild-config/src/** | |
| - packages/@expo/router-server/** | |
| - packages/@expo/log-box/** | |
| - packages/create-expo/** | |
| - packages/eslint-config-expo/** | |
| - packages/eslint-plugin-expo/** | |
| - packages/expo-router/** | |
| - packages/expo-server/** | |
| - pnpm-lock.yaml | |
| - '!**.md' | |
| pull_request: | |
| paths: | |
| - .github/workflows/cli.yml | |
| - packages/@expo/cli/** | |
| - packages/@expo/metro-runtime/** | |
| - packages/@expo/metro-config/src/** | |
| - packages/@expo/config/src/** | |
| - packages/@expo/config-plugins/src/** | |
| - packages/@expo/env/src/** | |
| - packages/@expo/json-file/src/** | |
| - packages/@expo/package-manager/src/** | |
| - packages/@expo/prebuild-config/src/** | |
| - packages/@expo/router-server/** | |
| - packages/@expo/log-box/** | |
| - packages/create-expo/** | |
| - packages/eslint-config-expo/** | |
| - packages/eslint-plugin-expo/** | |
| - packages/expo-router/** | |
| - packages/expo-server/** | |
| - pnpm-lock.yaml | |
| - '!**.md' | |
| schedule: | |
| - cron: 0 14 * * * | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| jest-ubuntu: | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2, 3, 4] | |
| steps: | |
| - name: 👀 Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 100 | |
| - name: ⬇️ Fetch commits from base branch | |
| run: git fetch origin ${{ github.event.before || github.base_ref || 'main' }}:${{ github.event.before || github.base_ref || 'main' }} --depth 100 | |
| if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
| - name: 🏗️ Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - name: 🏗️ Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| - name: 🏗️ Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: '1.x' | |
| - name: 📦 Install node modules in root dir | |
| run: pnpm install --frozen-lockfile | |
| - name: 🔎 Type Check CLI | |
| working-directory: packages/@expo/cli | |
| run: pnpm typecheck | |
| - name: 🧪 E2E Test CLI | |
| working-directory: packages/@expo/cli | |
| run: pnpm test:e2e --max-workers 1 --shard ${{ matrix.shard }}/${{ strategy.job-total }} | |
| jest-windows: | |
| runs-on: windows-2022 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2, 3, 4] | |
| env: | |
| # Change bun, npm, and pnpm caches to the much faster D:\ drive | |
| # See: https://github.com/twpayne/chezmoi/pull/4064 | |
| BUN_INSTALL_CACHE_DIR: D:\_temp\bun | |
| NPM_CACHE_LOCATION: D:\_temp\npm | |
| # Change the Expo E2E project directory to the same drive as the repository, | |
| # allowing to run Expo from source (avoiding Metro's multi-drive limitation) | |
| EXPO_E2E_TEMP_DIR: D:\_temp\expo-e2e | |
| steps: | |
| - name: 🪟 Setup Windows | |
| shell: bash | |
| # Configure Git to use LF line endlings | |
| run: | | |
| git config --global core.autocrlf false | |
| git config --global core.eol lf | |
| - name: 👀 Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 100 | |
| - name: ⬇️ Fetch commits from base branch | |
| run: git fetch origin ${{ github.event.before || github.base_ref || 'main' }}:${{ github.event.before || github.base_ref || 'main' }} --depth 100 | |
| if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
| - name: 🏗️ Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - name: 🏗️ Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| - name: 🏗️ Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: '1.x' | |
| - name: 📦 Install node modules in root dir | |
| run: pnpm install --frozen-lockfile | |
| - name: 🔎 Type Check CLI | |
| working-directory: packages/@expo/cli | |
| # TODO(cedric): expo module scripts is incompatible with Windows, forcing us to manually set up these steps instead of `pnpm typecheck` | |
| run: pnpm tsc --noEmit | |
| - name: 🧪 E2E Test CLI | |
| working-directory: packages/@expo/cli | |
| run: pnpm test:e2e --max-workers 1 --shard ${{ matrix.shard }}/${{ strategy.job-total }} | |
| playwright-ubuntu: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: 👀 Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 100 | |
| - name: ⬇️ Fetch commits from base branch | |
| run: git fetch origin ${{ github.event.before || github.base_ref || 'main' }}:${{ github.event.before || github.base_ref || 'main' }} --depth 100 | |
| if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
| - name: 🏗️ Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - name: 🏗️ Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| - name: 🏗️ Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: '1.x' | |
| - name: 📦 Install node modules in root dir | |
| run: pnpm install --frozen-lockfile | |
| - name: 🎭 Get Playwright information | |
| id: playwright-info | |
| shell: bash | |
| working-directory: packages/@expo/cli | |
| run: | | |
| echo version="$(pnpm exec playwright --version)" >> $GITHUB_OUTPUT | |
| - name: 🎭 Cache Playwright browser binaries | |
| uses: actions/cache@v4 | |
| id: playwright-browser-cache | |
| with: | |
| path: ~/.cache/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ steps.playwright-info.outputs.version }} | |
| - name: 🎭 Install Playwright Browsers | |
| run: pnpm exec playwright install --with-deps chromium | |
| working-directory: packages/@expo/cli | |
| if: steps.playwright-browser-cache.outputs.cache-hit != 'true' | |
| - name: 🧪 E2E (playwright) Test CLI | |
| working-directory: packages/@expo/cli | |
| run: pnpm test:playwright | |
| - name: 🗄️ Upload playwright report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: packages/@expo/cli/playwright-report/ | |
| retention-days: 30 | |
| playwright-windows: | |
| runs-on: windows-2022 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2] | |
| env: | |
| # Change bun, npm, and pnpm caches to the much faster D:\ drive | |
| # See: https://github.com/twpayne/chezmoi/pull/4064 | |
| BUN_INSTALL_CACHE_DIR: D:\_temp\bun | |
| NPM_CACHE_LOCATION: D:\_temp\npm | |
| # Change playwright browser cache to the much faster D:\ drive | |
| PLAYWRIGHT_BROWSERS_PATH: D:\_temp\playwright-browsers | |
| # Change the Expo E2E project directory to the same drive as the repository, | |
| # allowing to run Expo from source (avoiding Metro's multi-drive limitation) | |
| EXPO_E2E_TEMP_DIR: D:\_temp\expo-e2e | |
| steps: | |
| - name: 🪟 Setup Windows | |
| shell: bash | |
| # Configure Git to use LF line endlings | |
| run: | | |
| git config --global core.autocrlf false | |
| git config --global core.eol lf | |
| - name: 👀 Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 100 | |
| - name: ⬇️ Fetch commits from base branch | |
| run: git fetch origin ${{ github.event.before || github.base_ref || 'main' }}:${{ github.event.before || github.base_ref || 'main' }} --depth 100 | |
| if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
| - name: 🏗️ Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - name: 🏗️ Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| - name: 🏗️ Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: '1.x' | |
| - name: 📦 Install node modules in root dir | |
| run: pnpm install --frozen-lockfile | |
| - name: 🎭 Get Playwright information | |
| id: playwright-info | |
| shell: bash | |
| working-directory: packages/@expo/cli | |
| run: | | |
| echo version="$(pnpm exec playwright --version)" >> $GITHUB_OUTPUT | |
| echo dir="$(echo $PLAYWRIGHT_BROWSERS_PATH)" >> $GITHUB_OUTPUT | |
| - name: 🎭 Cache Playwright browser binaries | |
| uses: actions/cache@v4 | |
| id: playwright-browser-cache | |
| with: | |
| path: ${{ steps.playwright-info.outputs.dir }} | |
| key: ${{ runner.os }}-playwright-${{ steps.playwright-info.outputs.version }} | |
| - name: 🎭 Install Playwright Browsers | |
| run: pnpm exec playwright install --with-deps chromium | |
| working-directory: packages/@expo/cli | |
| if: steps.playwright-browser-cache.outputs.cache-hit != 'true' | |
| - name: 🧪 E2E (playwright) Test CLI | |
| working-directory: packages/@expo/cli | |
| run: pnpm test:playwright --shard ${{ matrix.shard }}/${{ strategy.job-total }} | |
| - name: 🗄️ Upload playwright report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: packages/@expo/cli/playwright-report/ | |
| retention-days: 30 |