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: [master] 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-18.04 24 steps: 25 - name: Check out repository 26 uses: actions/checkout@v2 27 with: 28 submodules: false 29 - name: Get yarn cache directory path 30 id: yarn-cache-dir-path 31 run: echo "::set-output name=dir::$(yarn cache dir)" 32 - uses: actions/cache@v2 33 with: 34 path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 35 key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 36 restore-keys: | 37 ${{ runner.os }}-yarn- 38 - run: yarn install --frozen-lockfile 39 - uses: actions/cache@v2 40 with: 41 path: ~/.gradle/caches 42 key: ${{ runner.os }}-gradle-${{ hashFiles('android/*.gradle*') }} 43 restore-keys: | 44 ${{ runner.os }}-gradle- 45 - uses: actions/cache@v2 46 id: cache-android-ndk 47 with: 48 path: /usr/local/lib/android/sdk/ndk/19.2.5345600/ 49 key: ${{ runner.os }}-ndk-19.2.5345600 50 restore-keys: | 51 ${{ runner.os }}-ndk- 52 - name: Install NDK 53 if: steps.cache-android-ndk.outputs.cache-hit != 'true' 54 run: | 55 sudo $ANDROID_SDK_ROOT/tools/bin/sdkmanager --install "ndk;19.2.5345600" 56 - run: yarn global add expo-cli 57 - run: echo "$(yarn global bin)" >> $GITHUB_PATH 58 - name: Init new expo app 59 working-directory: ../ 60 run: expo-cli init development-client-android-test --name development-client-android-test --yes 61 - name: Make Yarn resolve expo-dev-client dependencies locally 62 working-directory: ../development-client-android-test 63 run: | 64 node -e " \ 65 const pkg = require('./package.json'); \ 66 pkg.resolutions = { \ 67 ...pkg.resolutions, \ 68 'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \ 69 'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \ 70 'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \ 71 'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \ 72 'expo-updates': 'file:../expo/packages/expo-updates', \ 73 'expo-manifests': 'file:../expo/packages/expo-manifests', \ 74 'expo-json-utils': 'file:../expo/packages/expo-json-utils', \ 75 }; \ 76 fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');" 77 - name: Add dependencies 78 working-directory: ../development-client-android-test 79 run: yarn add file:../expo/packages/expo-dev-client 80 - name: Setup app.config.json 81 working-directory: ../development-client-android-test 82 run: echo "{\"name\":\"development-client-android-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json 83 - name: Eject 84 working-directory: ../development-client-android-test 85 run: expo-cli eject 86 - name: Bump `build tools` 87 working-directory: ../development-client-android-test 88 run: sed -i -e 's/buildToolsVersion\ =\ \"29\..\..\"/buildToolsVersion\ = \"30\.0\.3\"/' ./android/build.gradle 89 - name: Bump `android build tools` 90 working-directory: ../development-client-android-test 91 run: sed -i -e 's/com\.android\.tools\.build:gradle:3\..\../com\.android\.tools\.build:gradle:3\.5\.4/' ./android/build.gradle 92 - name: Build debug 93 env: 94 ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/19.2.5345600/ 95 working-directory: ../development-client-android-test/android 96 run: ./gradlew assembleDebug 97 98 ios: 99 runs-on: macos-11 100 steps: 101 - name: Check out repository 102 uses: actions/checkout@v2 103 with: 104 submodules: false 105 - name: Get yarn cache directory path 106 id: yarn-cache-dir-path 107 run: echo "::set-output name=dir::$(yarn cache dir)" 108 - uses: actions/cache@v2 109 with: 110 path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 111 key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 112 restore-keys: | 113 ${{ runner.os }}-yarn- 114 - run: yarn install --frozen-lockfile 115 - run: yarn global add expo-cli 116 - run: echo "$(yarn global bin)" >> $GITHUB_PATH 117 - name: Init new expo app 118 working-directory: ../ 119 run: expo-cli init development-client-ios-test --name development-client-ios-test --yes 120 - name: Make Yarn resolve expo-dev-client dependencies locally 121 working-directory: ../development-client-ios-test 122 run: | 123 node -e " \ 124 const pkg = require('./package.json'); \ 125 pkg.resolutions = { \ 126 ...pkg.resolutions, \ 127 'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \ 128 'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \ 129 'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \ 130 'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \ 131 'expo-updates': 'file:../expo/packages/expo-updates', \ 132 'expo-manifests': 'file:../expo/packages/expo-manifests', \ 133 'expo-json-utils': 'file:../expo/packages/expo-json-utils', \ 134 }; \ 135 fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');" 136 - name: Add dependencies 137 working-directory: ../development-client-ios-test 138 run: yarn add file:../expo/packages/expo-dev-client 139 - name: Setup app.config.json 140 working-directory: ../development-client-ios-test 141 run: echo "{\"name\":\"development-client-ios-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json 142 - name: Eject 143 working-directory: ../development-client-ios-test 144 run: expo-cli eject 145 - name: Build debug 146 working-directory: ../development-client-ios-test 147 run: xcodebuild -workspace ios/developmentclientiostest.xcworkspace -scheme developmentclientiostest -configuration debug -sdk iphonesimulator -arch x86_64 148