1name: Development Client
2
3on:
4  workflow_dispatch: {}
5  # This task will fail due to migration to `expo-modules-core`.
6  # We temporary disable it.
7  # pull_request:
8  #   paths:
9  #     - .github/workflows/development-client.yml
10  #     - packages/expo-dev-*/**
11  # push:
12  #   branches: [main]
13  #   paths:
14  #     - .github/workflows/development-client.yml
15  #     - packages/expo-dev-*/**
16
17concurrency:
18  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
19  cancel-in-progress: true
20
21jobs:
22  android:
23    runs-on: ubuntu-20.04
24    strategy:
25      matrix:
26        ndk-version: [21.4.7075529]
27    steps:
28      - name: �� Checkout
29        uses: actions/checkout@v3
30      - name: ➕ Add `bin` to GITHUB_PATH
31        run: echo "$(pwd)/bin" >> $GITHUB_PATH
32      - name: ♻️ Restore caches
33        uses: ./.github/actions/expo-caches
34        id: expo-caches
35        with:
36          yarn-workspace: 'true'
37          ndk: 'true'
38          ndk-version: ${{ matrix.ndk-version }}
39      - name: �� Yarn install
40        if: steps.expo-caches.outputs.yarn-workspace-hit != 'true'
41        run: yarn install --frozen-lockfile
42      - name: �� Install Expo CLI
43        run: yarn global add expo-cli
44      - name: Init new expo app
45        working-directory: ../
46        run: expo-cli init development-client-android-test --name development-client-android-test --yes
47      - name: Make Yarn resolve expo-dev-client dependencies locally
48        working-directory: ../development-client-android-test
49        run: |
50          node -e " \
51            const pkg = require('./package.json'); \
52            pkg.resolutions = { \
53              ...pkg.resolutions, \
54              'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \
55              'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \
56              'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \
57              'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \
58              'expo-updates': 'file:../expo/packages/expo-updates', \
59              'expo-manifests': 'file:../expo/packages/expo-manifests', \
60              'expo-json-utils': 'file:../expo/packages/expo-json-utils', \
61            }; \
62            fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');"
63      - name: Add dependencies
64        working-directory: ../development-client-android-test
65        run: yarn add file:../expo/packages/expo-dev-client
66      - name: Setup app.config.json
67        working-directory: ../development-client-android-test
68        run: echo "{\"name\":\"development-client-android-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json
69      - name: Eject
70        working-directory: ../development-client-android-test
71        run: expo-cli eject
72      - name: Bump `build tools`
73        working-directory: ../development-client-android-test
74        run: sed -i -e 's/buildToolsVersion\ =\ \"29\..\..\"/buildToolsVersion\ = \"30\.0\.3\"/' ./android/build.gradle
75      - name: Bump `android build tools`
76        working-directory: ../development-client-android-test
77        run: sed -i -e 's/com\.android\.tools\.build:gradle:3\..\../com\.android\.tools\.build:gradle:3\.5\.4/' ./android/build.gradle
78      - name: ��️ Build debug version
79        env:
80          ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/${{ matrix.ndk-version }}/
81        working-directory: ../development-client-android-test/android
82        run: ./gradlew assembleDebug
83
84  ios:
85    runs-on: macos-12
86    steps:
87      - name: �� Checkout
88        uses: actions/checkout@v3
89      - name: ➕ Add `bin` to GITHUB_PATH
90        run: echo "$(pwd)/bin" >> $GITHUB_PATH
91      - name: ♻️ Restore caches
92        uses: ./.github/actions/expo-caches
93        id: expo-caches
94        with:
95          yarn-workspace: 'true'
96      - name: �� Yarn install
97        if: steps.expo-caches.outputs.yarn-workspace-hit != 'true'
98        run: yarn install --frozen-lockfile
99      - name: �� Install Expo CLI
100        run: yarn global add expo-cli
101      - name: Init new expo app
102        working-directory: ../
103        run: expo-cli init development-client-ios-test --name development-client-ios-test --yes
104      - name: Make Yarn resolve expo-dev-client dependencies locally
105        working-directory: ../development-client-ios-test
106        run: |
107          node -e " \
108            const pkg = require('./package.json'); \
109            pkg.resolutions = { \
110              ...pkg.resolutions, \
111              'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \
112              'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \
113              'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \
114              'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \
115              'expo-updates': 'file:../expo/packages/expo-updates', \
116              'expo-manifests': 'file:../expo/packages/expo-manifests', \
117              'expo-json-utils': 'file:../expo/packages/expo-json-utils', \
118            }; \
119            fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');"
120      - name: Add dependencies
121        working-directory: ../development-client-ios-test
122        run: yarn add file:../expo/packages/expo-dev-client
123      - name: Setup app.config.json
124        working-directory: ../development-client-ios-test
125        run: echo "{\"name\":\"development-client-ios-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json
126      - name: Eject
127        working-directory: ../development-client-ios-test
128        run: expo-cli eject
129      - name: ��️ Build debug version
130        working-directory: ../development-client-ios-test
131        run: xcodebuild -workspace ios/developmentclientiostest.xcworkspace -scheme developmentclientiostest -configuration debug -sdk iphonesimulator -arch x86_64
132