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