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-22.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: Init new expo app
43        working-directory: ../
44        run: yarn create expo-app ./development-client-android-test --yes
45      - name: Make Yarn resolve expo-dev-client dependencies locally
46        working-directory: ../development-client-android-test
47        run: |
48          node -e " \
49            const pkg = require('./package.json'); \
50            pkg.resolutions = { \
51              ...pkg.resolutions, \
52              'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \
53              'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \
54              'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \
55              'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \
56              'expo-updates': 'file:../expo/packages/expo-updates', \
57              'expo-manifests': 'file:../expo/packages/expo-manifests', \
58              'expo-json-utils': 'file:../expo/packages/expo-json-utils', \
59            }; \
60            fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');"
61      - name: Add dependencies
62        working-directory: ../development-client-android-test
63        run: yarn add file:../expo/packages/expo-dev-client
64      - name: Setup app.config.json
65        working-directory: ../development-client-android-test
66        run: echo "{\"name\":\"development-client-android-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json
67      - name: Prebuild Android
68        working-directory: ../development-client-android-test
69        run: yarn expo prebuild --platform android
70      - name: Bump `build tools`
71        working-directory: ../development-client-android-test
72        run: sed -i -e 's/buildToolsVersion\ =\ \"29\..\..\"/buildToolsVersion\ = \"30\.0\.3\"/' ./android/build.gradle
73      - name: Bump `android build tools`
74        working-directory: ../development-client-android-test
75        run: sed -i -e 's/com\.android\.tools\.build:gradle:3\..\../com\.android\.tools\.build:gradle:3\.5\.4/' ./android/build.gradle
76      - name: ��️ Build debug version
77        env:
78          ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/${{ matrix.ndk-version }}/
79        working-directory: ../development-client-android-test/android
80        run: ./gradlew assembleDebug
81
82  ios:
83    runs-on: macos-12
84    steps:
85      - name: �� Checkout
86        uses: actions/checkout@v3
87      - name: ➕ Add `bin` to GITHUB_PATH
88        run: echo "$(pwd)/bin" >> $GITHUB_PATH
89      - name: ♻️ Restore caches
90        uses: ./.github/actions/expo-caches
91        id: expo-caches
92        with:
93          yarn-workspace: 'true'
94      - name: �� Yarn install
95        if: steps.expo-caches.outputs.yarn-workspace-hit != 'true'
96        run: yarn install --frozen-lockfile
97      - name: Init new expo app
98        working-directory: ../
99        run: yarn create expo-app ./development-client-ios-test --yes
100      - name: Make Yarn resolve expo-dev-client dependencies locally
101        working-directory: ../development-client-ios-test
102        run: |
103          node -e " \
104            const pkg = require('./package.json'); \
105            pkg.resolutions = { \
106              ...pkg.resolutions, \
107              'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \
108              'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \
109              'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \
110              'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \
111              'expo-updates': 'file:../expo/packages/expo-updates', \
112              'expo-manifests': 'file:../expo/packages/expo-manifests', \
113              'expo-json-utils': 'file:../expo/packages/expo-json-utils', \
114            }; \
115            fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');"
116      - name: Add dependencies
117        working-directory: ../development-client-ios-test
118        run: yarn add file:../expo/packages/expo-dev-client
119      - name: Setup app.config.json
120        working-directory: ../development-client-ios-test
121        run: echo "{\"name\":\"development-client-ios-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json
122      - name: Prebuild iOS
123        working-directory: ../development-client-ios-test
124        run: yarn expo prebuild --platform ios
125      - name: ��️ Build debug version
126        working-directory: ../development-client-ios-test
127        run: xcodebuild -workspace ios/developmentclientiostest.xcworkspace -scheme developmentclientiostest -configuration debug -sdk iphonesimulator -arch x86_64
128