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