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