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