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