Skip to content

Commit 1931c65

Browse files
authored
ci(iOS): Fix yarn install failing with Xcode 12 (#460)
Note that this does not fix tests failing to run on iOS 14. EarlGrey, which is what Detox depends on, crashes when run on iOS 14 (google/EarlGrey#1447). We may be required to bump to latest Detox to solve this issue, but it will require more work on our side.
1 parent f4d35b6 commit 1931c65

File tree

5 files changed

+1375
-1191
lines changed

5 files changed

+1375
-1191
lines changed

.circleci/Brewfile.android

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
tap 'homebrew/cask'
2+
cask 'android-sdk'
3+
cask 'intel-haxm'

.circleci/Brewfile.ios

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
tap 'wix/brew'
2+
brew 'applesimutils'
3+
brew 'cocoapods'

.circleci/config.yml

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ checkout step for each job: &addWorkspace
1818
default config for js: &js_defaults
1919
<<: *defaults
2020
docker:
21-
- image: circleci/node:10
21+
- image: circleci/node:12
2222

2323
default config for macOS: &macos_defaults
2424
<<: *defaults
2525
resource_class: 'medium'
2626
macos:
27-
xcode: '10.1.0'
27+
xcode: '11.7.0'
2828

2929
default config for android apk builds: &android_defaults
3030
<<: *defaults
@@ -47,24 +47,24 @@ save brew cache: &cache_save_brew
4747
paths:
4848
- /usr/local/Homebrew
4949
- ~/Library/Caches/Homebrew
50-
key: legacy-brew-cache-{{ arch }}
50+
key: legacy-brew-cache-node12-{{ arch }}
5151

5252
restore brew cache: &cache_restore_brew
5353
name: Restoring Brew cache
5454
keys:
55-
- legacy-brew-cache-{{ arch }}
55+
- legacy-brew-cache-node12-{{ arch }}
5656

5757
save brew cache for android: &cache_save_brew_android
5858
name: Saving Brew cache for android
5959
paths:
6060
- /usr/local/Homebrew
6161
- ~/Library/Caches/Homebrew
62-
key: legacy-brew-cache-{{ arch }}-android
62+
key: legacy-brew-cache-node12-{{ arch }}-android
6363

6464
restore brew cache for android: &cache_restore_brew_android
6565
name: Restoring Brew cache for android
6666
keys:
67-
- legacy-brew-cache-{{ arch }}-android
67+
- legacy-brew-cache-node12-{{ arch }}-android
6868

6969
# yarn
7070
save yarn cache: &cache_save_yarn
@@ -143,11 +143,9 @@ jobs:
143143
- *addWorkspace
144144
- restore-cache: *cache_restore_brew
145145
- run:
146-
name: Configure OSX Environment
146+
name: Configure macOS Environment
147147
command: |
148-
HOMEBREW_NO_AUTO_UPDATE=1 brew install node@8 >/dev/null
149-
HOMEBREW_NO_AUTO_UPDATE=1 brew tap wix/brew >/dev/null
150-
HOMEBREW_NO_AUTO_UPDATE=1 brew install applesimutils >/dev/null
148+
brew bundle --file=.circleci/Brewfile.ios --no-lock
151149
touch .watchmanconfig
152150
node -v
153151
- save-cache: *cache_save_brew
@@ -156,22 +154,13 @@ jobs:
156154
name: Installing Yarn dependencies
157155
command: yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
158156
- save-cache: *cache_save_yarn
159-
- restore_cache:
160-
key: 1-gems-{{ checksum "example/ios/Gemfile.lock" }}
161-
- run:
162-
name: Install CocoaPods
163-
command: cd example/ios && bundle check || bundle install --path vendor/bundle
164-
- save_cache:
165-
key: 1-gems-{{ checksum "example/ios/Gemfile.lock" }}
166-
paths:
167-
- vendor/bundle
168157
- run:
169158
name: Install pod dependencies
170-
command: cd example/ios && bundle exec pod install
159+
working_directory: example/ios
160+
command: pod install
171161
- run:
172162
name: Build iOS app
173163
command: yarn build:e2e:ios
174-
175164
- run:
176165
name: Run e2e tests
177166
command: yarn test:e2e:ios
@@ -191,7 +180,8 @@ jobs:
191180
- restore-cache: *cache_restore_gradle_build
192181
- run:
193182
name: Downloading Gradle dependencies
194-
command: cd example/android && ./gradlew --max-workers 2 fetchDependencies
183+
working_directory: example/android
184+
command: ./gradlew --max-workers 2 fetchDependencies
195185
- save-cache: *cache_save_gradle_wrapper
196186
- save-cache: *cache_save_gradle_build
197187

@@ -201,7 +191,8 @@ jobs:
201191
command: mkdir example/android/app/src/main/assets && npx react-native bundle --platform android --dev false --entry-file example/index.js --bundle-output example/android/app/src/main/assets/index.android.bundle --assets-dest example/android/app/src/main/res/
202192
- run:
203193
name: Build Android apk
204-
command: cd example/android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release --max-workers 2 -x bundleReleaseJsAndAssets
194+
working_directory: example/android
195+
command: ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release --max-workers 2 -x bundleReleaseJsAndAssets
205196

206197
- persist_to_workspace:
207198
root: ~/async_storage
@@ -227,21 +218,18 @@ jobs:
227218
- run:
228219
name: Install Android SDK tools
229220
command: |
230-
HOMEBREW_NO_AUTO_UPDATE=1 brew tap homebrew/cask >/dev/null
231-
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install android-sdk >/dev/null
232-
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install intel-haxm >/dev/null
233-
HOMEBREW_NO_AUTO_UPDATE=1 brew install node@8 >/dev/null >/dev/null
221+
brew bundle --file=.circleci/Brewfile.android --no-lock
234222
- save-cache: *cache_save_brew_android
235223

236224
- run:
237225
name: Install Android emulator
238226
shell: /bin/bash -e
239227
command: |
240-
yes | sdkmanager "platform-tools" "tools" >/dev/null
241-
yes | sdkmanager "platforms;android-28" "system-images;android-21;google_apis;x86" >/dev/null
242-
yes | sdkmanager "emulator" --channel=3 >/dev/null
243-
yes | sdkmanager "build-tools;28.0.3" >/dev/null
244-
yes | sdkmanager --licenses >/dev/null
228+
yes | sdkmanager "platform-tools" "tools" 1> /dev/null
229+
yes | sdkmanager "platforms;android-28" "system-images;android-21;google_apis;x86" 1> /dev/null
230+
yes | sdkmanager "emulator" --channel=3 1> /dev/null
231+
yes | sdkmanager "build-tools;28.0.3" 1> /dev/null
232+
yes | sdkmanager --licenses 1> /dev/null
245233
yes | sdkmanager --list
246234
247235
- run:

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@
6868
"@react-native-community/cli-platform-android": "^3.1.0",
6969
"@react-native-community/cli-platform-ios": "^3.1.0",
7070
"@react-native-community/eslint-config": "^0.0.5",
71-
"babel-jest": "^24.9.0",
71+
"babel-jest": "^26.5.2",
7272
"babel-plugin-module-resolver": "3.1.3",
73-
"detox": "12.6.1",
73+
"detox": "16.7.2",
7474
"eslint": "5.1.0",
7575
"expo": "36.0.2",
7676
"flow-bin": "0.105.2",
77-
"jest": "^24.9.0",
77+
"jest": "^26.5.3",
7878
"metro": "0.56.4",
7979
"metro-react-native-babel-preset": "^0.56.0",
8080
"react": "16.9.0",
@@ -97,9 +97,9 @@
9797
"configurations": {
9898
"ios": {
9999
"binaryPath": "example/ios/build/Build/Products/Release-iphonesimulator/AsyncStorageExample.app",
100-
"build": ".circleci/scripts/run_ios_e2e.sh \"iPhone X\"",
100+
"build": ".circleci/scripts/run_ios_e2e.sh \"iPhone 11\"",
101101
"type": "ios.simulator",
102-
"name": "iPhone X"
102+
"name": "iPhone 11"
103103
},
104104
"android": {
105105
"binaryPath": "example/android/app/build/outputs/apk/release/app-release.apk",

0 commit comments

Comments
 (0)