1name: Development Client
2
3on:
4  workflow_dispatch: {}
5  pull_request:
6    paths:
7      - .github/workflows/development-client.yml
8      - packages/expo-dev-*/**
9
10jobs:
11  android:
12    runs-on: ubuntu-18.04
13    steps:
14      - name: Check out repository
15        uses: actions/checkout@v2
16        with:
17          submodules: false
18      - name: Get yarn cache directory path
19        id: yarn-cache-dir-path
20        run: echo "::set-output name=dir::$(yarn cache dir)"
21      - uses: actions/cache@v2
22        with:
23          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
24          key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
25          restore-keys: |
26            ${{ runner.os }}-yarn-
27      - run: yarn install --frozen-lockfile
28      - uses: actions/cache@v2
29        with:
30          path: ~/.gradle/caches
31          key: ${{ runner.os }}-gradle-${{ hashFiles('android/*.gradle*') }}
32          restore-keys: |
33            ${{ runner.os }}-gradle-
34      - uses: actions/cache@v2
35        id: cache-android-ndk
36        with:
37          path: /usr/local/lib/android/sdk/ndk/19.2.5345600/
38          key: ${{ runner.os }}-ndk-19.2.5345600
39          restore-keys: |
40            ${{ runner.os }}-ndk-
41      - name: Install NDK
42        if: steps.cache-android-ndk.outputs.cache-hit != 'true'
43        run: |
44          sudo $ANDROID_HOME/tools/bin/sdkmanager --install "ndk;19.2.5345600"
45      - run: yarn global add expo-cli
46      - run: echo "$(yarn global bin)" >> $GITHUB_PATH
47      - name: Init new expo app
48        working-directory: ../
49        run: expo-cli init development-client-android-test --name development-client-android-test --yes
50      - name: Add dependencies
51        working-directory: ../development-client-android-test
52        run: yarn add file:../expo/packages/expo-dev-menu file:../expo/packages/expo-dev-menu-interface file:../expo/packages/expo-dev-launcher
53      - name: Setup app.config.json
54        working-directory: ../development-client-android-test
55        run: echo "{\"name\":\"development-client-android-test\",\"plugins\":[\"expo-dev-menu\",\"expo-dev-launcher\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json
56      - name: Eject
57        working-directory: ../development-client-android-test
58        run: expo-cli eject
59      - name: Bump `build tools`
60        working-directory: ../development-client-android-test
61        run: sed -i -e 's/buildToolsVersion\ =\ \"29\..\..\"/buildToolsVersion\ = \"30\.0\.3\"/' ./android/build.gradle
62      - name: Bump `android build tools`
63        working-directory: ../development-client-android-test
64        run: sed -i -e 's/com\.android\.tools\.build:gradle:3\..\../com\.android\.tools\.build:gradle:3\.5\.4/' ./android/build.gradle
65      - name: Build debug
66        env:
67          ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/19.2.5345600/
68        working-directory: ../development-client-android-test/android
69        run: ./gradlew assembleDebug
70
71  ios:
72    runs-on: macos-latest
73    steps:
74      - name: Check out repository
75        uses: actions/checkout@v2
76        with:
77          submodules: false
78      - name: Get yarn cache directory path
79        id: yarn-cache-dir-path
80        run: echo "::set-output name=dir::$(yarn cache dir)"
81      - uses: actions/cache@v2
82        with:
83          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
84          key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
85          restore-keys: |
86            ${{ runner.os }}-yarn-
87      - run: yarn install --frozen-lockfile
88      - run: yarn global add expo-cli
89      - run: echo "$(yarn global bin)" >> $GITHUB_PATH
90      - name: Init new expo app
91        working-directory: ../
92        run: expo-cli init development-client-ios-test --name development-client-ios-test --yes
93      - name: Add dependencies
94        working-directory: ../development-client-ios-test
95        run: yarn add file:../expo/packages/expo-dev-menu file:../expo/packages/expo-dev-menu-interface file:../expo/packages/expo-dev-launcher
96      - name: Setup app.config.json
97        working-directory: ../development-client-ios-test
98        run: echo "{\"name\":\"development-client-ios-test\",\"plugins\":[\"expo-dev-menu\",\"expo-dev-launcher\"],\"android\":{\"package\":\"com.devclient.test\"},\"ios\":{\"bundleIdentifier\":\"com.devclient.test\"}}" > app.config.json
99      - name: Eject
100        working-directory: ../development-client-ios-test
101        run: expo-cli eject
102      - name: Build debug
103        working-directory: ../development-client-ios-test
104        run: xcodebuild -workspace ios/developmentclientiostest.xcworkspace -scheme developmentclientiostest -configuration debug -sdk iphonesimulator -arch x86_64
105