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