Skip to content

Commit ea6ed78

Browse files
committed
ci(iOS): Fix yarn install failing with Xcode 12
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 679c6d5 commit ea6ed78

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)