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