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 }; \ 72 fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');" 73 - name: Add dependencies 74 working-directory: ../development-client-android-test 75 run: yarn add file:../expo/packages/expo-dev-client 76 - name: Setup app.config.json 77 working-directory: ../development-client-android-test 78 run: echo "{\"name\":\"development-client-android-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json 79 - name: Eject 80 working-directory: ../development-client-android-test 81 run: expo-cli eject 82 - name: Bump `build tools` 83 working-directory: ../development-client-android-test 84 run: sed -i -e 's/buildToolsVersion\ =\ \"29\..\..\"/buildToolsVersion\ = \"30\.0\.3\"/' ./android/build.gradle 85 - name: Bump `android build tools` 86 working-directory: ../development-client-android-test 87 run: sed -i -e 's/com\.android\.tools\.build:gradle:3\..\../com\.android\.tools\.build:gradle:3\.5\.4/' ./android/build.gradle 88 - name: Build debug 89 env: 90 ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/19.2.5345600/ 91 working-directory: ../development-client-android-test/android 92 run: ./gradlew assembleDebug 93 94 ios: 95 runs-on: macos-11 96 steps: 97 - name: Check out repository 98 uses: actions/checkout@v2 99 with: 100 submodules: false 101 - name: Get yarn cache directory path 102 id: yarn-cache-dir-path 103 run: echo "::set-output name=dir::$(yarn cache dir)" 104 - uses: actions/cache@v2 105 with: 106 path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 107 key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 108 restore-keys: | 109 ${{ runner.os }}-yarn- 110 - run: yarn install --frozen-lockfile 111 - run: yarn global add expo-cli 112 - run: echo "$(yarn global bin)" >> $GITHUB_PATH 113 - name: Init new expo app 114 working-directory: ../ 115 run: expo-cli init development-client-ios-test --name development-client-ios-test --yes 116 - name: Make Yarn resolve expo-dev-client dependencies locally 117 working-directory: ../development-client-ios-test 118 run: | 119 node -e " \ 120 const pkg = require('./package.json'); \ 121 pkg.resolutions = { \ 122 ...pkg.resolutions, \ 123 'expo-dev-menu': 'file:../expo/packages/expo-dev-menu', \ 124 'expo-dev-menu-interface': 'file:../expo/packages/expo-dev-menu-interface', \ 125 'expo-dev-launcher': 'file:../expo/packages/expo-dev-launcher', \ 126 'expo-updates-interface': 'file:../expo/packages/expo-updates-interface', \ 127 'expo-updates': 'file:../expo/packages/expo-updates', \ 128 }; \ 129 fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');" 130 - name: Add dependencies 131 working-directory: ../development-client-ios-test 132 run: yarn add file:../expo/packages/expo-dev-client 133 - name: Setup app.config.json 134 working-directory: ../development-client-ios-test 135 run: echo "{\"name\":\"development-client-ios-test\",\"plugins\":[\"expo-dev-client\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json 136 - name: Eject 137 working-directory: ../development-client-ios-test 138 run: expo-cli eject 139 - name: Build debug 140 working-directory: ../development-client-ios-test 141 run: xcodebuild -workspace ios/developmentclientiostest.xcworkspace -scheme developmentclientiostest -configuration debug -sdk iphonesimulator -arch x86_64 142