xref: /expo/.github/workflows/updates-e2e.yml (revision 76d98731)
1name: Updates e2e EAS
2
3on:
4  workflow_dispatch: {}
5  pull_request:
6    paths:
7      - .github/workflows/updates-e2e-basic.yml
8      - packages/@expo/cli/**
9      - packages/@expo/config-plugins/**
10      - packages/@expo/config-types/**
11      - packages/expo-json-utils/**
12      - packages/expo-manifests/**
13      - packages/expo-modules-core/**
14      - packages/expo-structured-headers/**
15      - packages/expo-updates-interface/**
16      - packages/expo-updates/**
17      - packages/expo/android/**
18      - packages/expo/ios/**
19      - templates/expo-template-bare-minimum/**
20  push:
21    branches: [main, 'sdk-*']
22    paths:
23      - .github/workflows/updates-e2e-basic.yml
24      - packages/@expo/cli/**
25      - packages/@expo/config-plugins/**
26      - packages/@expo/config-types/**
27      - packages/expo-json-utils/**
28      - packages/expo-manifests/**
29      - packages/expo-modules-core/**
30      - packages/expo-structured-headers/**
31      - packages/expo-updates-interface/**
32      - packages/expo-updates/**
33      - packages/expo/android/**
34      - packages/expo/ios/**
35      - templates/expo-template-bare-minimum/**
36
37concurrency:
38  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
39  cancel-in-progress: true
40
41jobs:
42  build:
43    strategy:
44      fail-fast: false
45      matrix:
46        platform: [ios, android, tvos]
47    runs-on: ubuntu-22.04
48    timeout-minutes: 40
49    env:
50      UPDATES_PORT: 4747
51    steps:
52      - name: �� Checkout
53        uses: actions/checkout@v3
54      - name: ⬢ Setup Node
55        uses: actions/setup-node@v3
56        with:
57          node-version: 16
58      - name: ➕ Add `bin` to GITHUB_PATH
59        run: echo "$(yarn global bin)" >> $GITHUB_PATH
60      - name: ♻️ Restore caches
61        uses: ./.github/actions/expo-caches
62        id: expo-caches
63        with:
64          yarn-workspace: 'true'
65      - name: �� Yarn install
66        if: steps.expo-caches.outputs.yarn-workspace-hit != 'true'
67        run: yarn install --frozen-lockfile
68      - name: �� Build local Expo CLI
69        working-directory: packages/@expo/cli
70        run: yarn prepare
71      - name: Build expo-updates CLI
72        working-directory: packages/expo-updates
73        run: yarn build:cli
74      - name: �� Install eas-cli
75        run: yarn global add eas-cli
76      - name: �� Add EXPO_REPO_ROOT to environment
77        run: echo "EXPO_REPO_ROOT=$GITHUB_WORKSPACE" >> $GITHUB_ENV
78      - name: �� Set updates host
79        run: echo "UPDATES_HOST=localhost" >> $GITHUB_ENV
80      - name: �� Set updates port
81        run: echo "UPDATES_PORT=4747" >> $GITHUB_ENV
82      - name: �� Set platform for TV build
83        if: matrix.platform == 'tvos'
84        run: echo "EAS_PLATFORM=ios" >> $GITHUB_ENV
85      - name: �� Set platform for updates E2E build
86        if: matrix.platform != 'tvos'
87        run: echo "EAS_PLATFORM=${{ matrix.platform }}" >> $GITHUB_ENV
88      - name: �� Get artifacts path
89        run: mkdir -p artifact && echo "ARTIFACTS_DEST=$(pwd)/artifact" >> $GITHUB_ENV
90      - name: �� Get commit message
91        run: echo "COMMIT_MESSAGE=$(git log -1 --pretty=oneline | head -c1000)" >> $GITHUB_ENV
92      - name: �� Set test project location
93        run: echo "TEST_PROJECT_ROOT=$GITHUB_WORKSPACE/updates-e2e" >> $GITHUB_ENV
94      - name: �� Setup test project for updates E2E basic tests
95        if: matrix.platform != 'tvos'
96        run: node packages/expo-updates/e2e/setup/create-eas-project.js
97      - name: �� Setup test project for testing Apple TV build
98        if: matrix.platform == 'tvos'
99        run: node packages/expo-updates/e2e/setup/create-eas-project-tv.js
100      - name: �� Build with EAS for ${{ matrix.platform }}
101        uses: ./.github/actions/eas-build
102        id: build_eas
103        with:
104          platform: ${{ env.EAS_PLATFORM }}
105          profile: 'updates_testing'
106          projectRoot: './updates-e2e'
107          expoToken: ${{ secrets.EAS_BUILD_BOT_TOKEN }}
108          noWait: ${{ github.event.schedule }}
109          message: ${{ github.event.pull_request.title }}
110      - name: On ${{ matrix.platform }} workflow canceled
111        if: ${{ cancelled() && steps.build_eas.outputs.build_id }}
112        run: eas build:cancel ${{ steps.build_eas.outputs.build_id }}
113        working-directory: './updates-e2e'
114        env:
115          EXPO_TOKEN: ${{ secrets.EAS_BUILD_BOT_TOKEN }}
116          EAS_BUILD_PROFILE: updates_testing
117