Switch e2e to yarn
Summary: Addresses CI build failures due to use of scoped packages by metro. Closes https://github.com/facebook/react-native/pull/17878 Differential Revision: D6914937 Pulled By: hramos fbshipit-source-id: e6ce97561035f4deb128cd1e30d81ab4edea3e4c
This commit is contained in:
parent
613afbab7f
commit
fa11faecb6
|
@ -112,7 +112,8 @@ aliases:
|
||||||
sudo apt-get install -y nodejs
|
sudo apt-get install -y nodejs
|
||||||
|
|
||||||
- &create-ndk-directory
|
- &create-ndk-directory
|
||||||
|
|
name: Create Android NDK Directory
|
||||||
|
command: |
|
||||||
if [[ ! -e /opt/ndk ]]; then
|
if [[ ! -e /opt/ndk ]]; then
|
||||||
sudo mkdir /opt/ndk
|
sudo mkdir /opt/ndk
|
||||||
fi
|
fi
|
||||||
|
@ -121,7 +122,8 @@ aliases:
|
||||||
# CircleCI does not support interpolating env variables in the environment
|
# CircleCI does not support interpolating env variables in the environment
|
||||||
# https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables-to-set-other-environment-variables
|
# https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables-to-set-other-environment-variables
|
||||||
- &configure-android-path
|
- &configure-android-path
|
||||||
|
|
name: Configure Environment Variables
|
||||||
|
command: |
|
||||||
echo 'export PATH=${ANDROID_NDK}:~/react-native/gradle-2.9/bin:~/buck/bin:$PATH' >> $BASH_ENV
|
echo 'export PATH=${ANDROID_NDK}:~/react-native/gradle-2.9/bin:~/buck/bin:$PATH' >> $BASH_ENV
|
||||||
source $BASH_ENV
|
source $BASH_ENV
|
||||||
|
|
||||||
|
@ -129,8 +131,9 @@ aliases:
|
||||||
|
|
|
|
||||||
source scripts/circle-ci-android-setup.sh && getAndroidSDK
|
source scripts/circle-ci-android-setup.sh && getAndroidSDK
|
||||||
|
|
||||||
- &install-build-dependencies
|
- &install-android-build-dependencies
|
||||||
|
|
name: Install Android Build Dependencies
|
||||||
|
command: |
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install ant autoconf automake g++ gcc libqt5widgets5 lib32z1 lib32stdc++6 make maven python-dev python3-dev qml-module-qtquick-controls qtdeclarative5-dev file -y
|
sudo apt-get install ant autoconf automake g++ gcc libqt5widgets5 lib32z1 lib32stdc++6 make maven python-dev python3-dev qml-module-qtquick-controls qtdeclarative5-dev file -y
|
||||||
|
|
||||||
|
@ -171,7 +174,6 @@ aliases:
|
||||||
- &build-js-bundle
|
- &build-js-bundle
|
||||||
name: Build JavaScript Bundle
|
name: Build JavaScript Bundle
|
||||||
command: node local-cli/cli.js bundle --max-workers 2 --platform android --dev true --entry-file ReactAndroid/src/androidTest/js/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js
|
command: node local-cli/cli.js bundle --max-workers 2 --platform android --dev true --entry-file ReactAndroid/src/androidTest/js/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js
|
||||||
when: always
|
|
||||||
|
|
||||||
- &compile-native-libs
|
- &compile-native-libs
|
||||||
name: Compile Native Libs for Unit and Integration Tests
|
name: Compile Native Libs for Unit and Integration Tests
|
||||||
|
@ -184,7 +186,11 @@ aliases:
|
||||||
|
|
||||||
- &run-android-instrumentation-tests
|
- &run-android-instrumentation-tests
|
||||||
name: Run Instrumentation Tests
|
name: Run Instrumentation Tests
|
||||||
command: source scripts/circle-ci-android-setup.sh && NO_BUCKD=1 retry3 buck install ReactAndroid/src/androidTest/buck-runner:instrumentation-tests --config build.threads=$BUILD_THREADS
|
command: |
|
||||||
|
if [[ ! -e ReactAndroid/src/androidTest/assets/AndroidTestBundle.js ]]; then
|
||||||
|
echo "JavaScript bundle missing, cannot run instrumentation tests. Verify build-js-bundle step completed successfully."; exit 1;
|
||||||
|
fi
|
||||||
|
source scripts/circle-ci-android-setup.sh && NO_BUCKD=1 retry3 buck install ReactAndroid/src/androidTest/buck-runner:instrumentation-tests --config build.threads=$BUILD_THREADS
|
||||||
|
|
||||||
- &collect-android-test-results
|
- &collect-android-test-results
|
||||||
name: Collect Test Results
|
name: Collect Test Results
|
||||||
|
@ -254,6 +260,8 @@ jobs:
|
||||||
path: ~/reports/junit
|
path: ~/reports/junit
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: ~/reports/junit
|
path: ~/reports/junit
|
||||||
|
- store_artifacts:
|
||||||
|
path: ~/react-native/yarn.lock
|
||||||
|
|
||||||
# Runs JavaScript tests on Node 8
|
# Runs JavaScript tests on Node 8
|
||||||
js-node-8:
|
js-node-8:
|
||||||
|
@ -387,7 +395,7 @@ jobs:
|
||||||
|
|
||||||
# Configure Android dependencies
|
# Configure Android dependencies
|
||||||
- run: *configure-android-path
|
- run: *configure-android-path
|
||||||
- run: *install-build-dependencies
|
- run: *install-android-build-dependencies
|
||||||
- restore-cache: *restore-cache-android-packages
|
- restore-cache: *restore-cache-android-packages
|
||||||
- run: *install-android-packages
|
- run: *install-android-packages
|
||||||
- save-cache: *save-cache-android-packages
|
- save-cache: *save-cache-android-packages
|
||||||
|
@ -430,9 +438,9 @@ jobs:
|
||||||
- checkout
|
- checkout
|
||||||
- run: *setup-artifacts
|
- run: *setup-artifacts
|
||||||
|
|
||||||
# Configure Android dependencies
|
# Configure Android SDK and related dependencies
|
||||||
- run: *configure-android-path
|
- run: *configure-android-path
|
||||||
- run: *install-build-dependencies
|
- run: *install-android-build-dependencies
|
||||||
- restore-cache: *restore-cache-android-packages
|
- restore-cache: *restore-cache-android-packages
|
||||||
- run: *install-android-packages
|
- run: *install-android-packages
|
||||||
- save-cache: *save-cache-android-packages
|
- save-cache: *save-cache-android-packages
|
||||||
|
@ -442,11 +450,8 @@ jobs:
|
||||||
- run: *launch-avd
|
- run: *launch-avd
|
||||||
|
|
||||||
# Keep configuring Android dependencies while AVD boots up
|
# Keep configuring Android dependencies while AVD boots up
|
||||||
- run: *create-ndk-directory
|
|
||||||
- restore-cache: *restore-cache-ndk
|
|
||||||
- run: *install-ndk
|
|
||||||
- save-cache: *save-cache-ndk
|
|
||||||
|
|
||||||
|
# Fetch dependencies using BUCK
|
||||||
- restore-cache: *restore-cache-buck
|
- restore-cache: *restore-cache-buck
|
||||||
- run: *install-buck
|
- run: *install-buck
|
||||||
- save-cache: *save-cache-buck
|
- save-cache: *save-cache-buck
|
||||||
|
@ -458,10 +463,17 @@ jobs:
|
||||||
- run: buck fetch ReactAndroid/src/androidTest/...
|
- run: buck fetch ReactAndroid/src/androidTest/...
|
||||||
- run: ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders
|
- run: ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders
|
||||||
|
|
||||||
|
# Install Android NDK
|
||||||
|
- run: *create-ndk-directory
|
||||||
|
- restore-cache: *restore-cache-ndk
|
||||||
|
- run: *install-ndk
|
||||||
|
- save-cache: *save-cache-ndk
|
||||||
|
|
||||||
|
# Build and compile
|
||||||
- run: *build-android-app
|
- run: *build-android-app
|
||||||
- run: *compile-native-libs
|
- run: *compile-native-libs
|
||||||
|
|
||||||
# The JavaScript Bundle is required for instrumentation tests.
|
# Build JavaScript Bundle for instrumentation tests
|
||||||
- run: *install-node
|
- run: *install-node
|
||||||
- run: *install-yarn
|
- run: *install-yarn
|
||||||
- restore-cache: *restore-yarn-cache
|
- restore-cache: *restore-yarn-cache
|
||||||
|
@ -472,7 +484,7 @@ jobs:
|
||||||
# Wait for AVD to finish booting before running tests
|
# Wait for AVD to finish booting before running tests
|
||||||
- run: *wait-for-avd
|
- run: *wait-for-avd
|
||||||
|
|
||||||
# Tests
|
# Test Suite
|
||||||
- run: *run-android-unit-tests
|
- run: *run-android-unit-tests
|
||||||
- run: *run-android-instrumentation-tests
|
- run: *run-android-instrumentation-tests
|
||||||
|
|
||||||
|
@ -568,4 +580,4 @@ workflows:
|
||||||
- hold
|
- hold
|
||||||
|
|
||||||
- analyze-pull-request:
|
- analyze-pull-request:
|
||||||
filters: *filter-ignore-master-stable
|
filters: *filter-ignore-master-stable
|
|
@ -51,6 +51,9 @@ node_modules
|
||||||
*.log
|
*.log
|
||||||
.nvm
|
.nvm
|
||||||
/bots/node_modules/
|
/bots/node_modules/
|
||||||
|
|
||||||
|
# TODO: Check in yarn.lock in open source. Right now we need to keep it out
|
||||||
|
# from the GitHub repo as importing it might conflict with internal workspaces
|
||||||
*/**/yarn.lock
|
*/**/yarn.lock
|
||||||
|
|
||||||
# OS X
|
# OS X
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* --android - 'react-native init' and check Android app doesn't redbox
|
* --android - 'react-native init' and check Android app doesn't redbox
|
||||||
* --js - 'react-native init' and only check the packager returns a bundle
|
* --js - 'react-native init' and only check the packager returns a bundle
|
||||||
* --skip-cli-install - to skip react-native-cli global installation (for local debugging)
|
* --skip-cli-install - to skip react-native-cli global installation (for local debugging)
|
||||||
* --retries [num] - how many times to retry possible flaky commands: npm install and running tests, default 1
|
* --retries [num] - how many times to retry possible flaky commands: yarn add and running tests, default 1
|
||||||
*/
|
*/
|
||||||
/*eslint-disable no-undef */
|
/*eslint-disable no-undef */
|
||||||
require('shelljs/global');
|
require('shelljs/global');
|
||||||
|
@ -44,12 +44,12 @@ let exitCode;
|
||||||
try {
|
try {
|
||||||
// install CLI
|
// install CLI
|
||||||
cd('react-native-cli');
|
cd('react-native-cli');
|
||||||
exec('npm pack');
|
exec('yarn pack');
|
||||||
const CLI_PACKAGE = path.join(ROOT, 'react-native-cli', 'react-native-cli-*.tgz');
|
const CLI_PACKAGE = path.join(ROOT, 'react-native-cli', 'react-native-cli-*.tgz');
|
||||||
cd('..');
|
cd('..');
|
||||||
|
|
||||||
if (!argv['skip-cli-install']) {
|
if (!argv['skip-cli-install']) {
|
||||||
if (exec(`sudo npm install -g ${CLI_PACKAGE}`).code) {
|
if (exec(`sudo yarn global add ${CLI_PACKAGE}`).code) {
|
||||||
echo('Could not install react-native-cli globally.');
|
echo('Could not install react-native-cli globally.');
|
||||||
echo('Run with --skip-cli-install to skip this step');
|
echo('Run with --skip-cli-install to skip this step');
|
||||||
exitCode = 1;
|
exitCode = 1;
|
||||||
|
@ -65,7 +65,7 @@ try {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exec('npm pack').code) {
|
if (exec('yarn pack').code) {
|
||||||
echo('Failed to pack react-native');
|
echo('Failed to pack react-native');
|
||||||
exitCode = 1;
|
exitCode = 1;
|
||||||
throw Error(exitCode);
|
throw Error(exitCode);
|
||||||
|
@ -76,7 +76,7 @@ try {
|
||||||
if (tryExecNTimes(
|
if (tryExecNTimes(
|
||||||
() => {
|
() => {
|
||||||
exec('sleep 10s');
|
exec('sleep 10s');
|
||||||
return exec(`react-native init EndToEndTest --version ${PACKAGE} --npm`).code;
|
return exec(`react-native init EndToEndTest --version ${PACKAGE}`).code;
|
||||||
},
|
},
|
||||||
numberOfRetries,
|
numberOfRetries,
|
||||||
() => rm('-rf', 'EndToEndTest'))) {
|
() => rm('-rf', 'EndToEndTest'))) {
|
||||||
|
@ -92,7 +92,7 @@ try {
|
||||||
echo('Running an Android e2e test');
|
echo('Running an Android e2e test');
|
||||||
echo('Installing e2e framework');
|
echo('Installing e2e framework');
|
||||||
if (tryExecNTimes(
|
if (tryExecNTimes(
|
||||||
() => exec('npm install --save-dev appium@1.5.1 mocha@2.4.5 wd@0.3.11 colors@1.0.3 pretty-data2@0.40.1', { silent: true }).code,
|
() => exec('yarn add --dev appium@1.5.1 mocha@2.4.5 wd@0.3.11 colors@1.0.3 pretty-data2@0.40.1', { silent: true }).code,
|
||||||
numberOfRetries)) {
|
numberOfRetries)) {
|
||||||
echo('Failed to install appium');
|
echo('Failed to install appium');
|
||||||
echo('Most common reason is npm registry connectivity, try again');
|
echo('Most common reason is npm registry connectivity, try again');
|
||||||
|
@ -125,7 +125,7 @@ try {
|
||||||
|
|
||||||
echo(`Starting packager server, ${SERVER_PID}`);
|
echo(`Starting packager server, ${SERVER_PID}`);
|
||||||
// shelljs exec('', {async: true}) does not emit stdout events, so we rely on good old spawn
|
// shelljs exec('', {async: true}) does not emit stdout events, so we rely on good old spawn
|
||||||
const packagerProcess = spawn('npm', ['start', '--', '--max-workers 1'], {
|
const packagerProcess = spawn('yarn', ['start', '--max-workers 1'], {
|
||||||
env: process.env
|
env: process.env
|
||||||
});
|
});
|
||||||
SERVER_PID = packagerProcess.pid;
|
SERVER_PID = packagerProcess.pid;
|
||||||
|
@ -158,7 +158,7 @@ try {
|
||||||
// shelljs exec('', {async: true}) does not emit stdout events, so we rely on good old spawn
|
// shelljs exec('', {async: true}) does not emit stdout events, so we rely on good old spawn
|
||||||
const packagerEnv = Object.create(process.env);
|
const packagerEnv = Object.create(process.env);
|
||||||
packagerEnv.REACT_NATIVE_MAX_WORKERS = 1;
|
packagerEnv.REACT_NATIVE_MAX_WORKERS = 1;
|
||||||
const packagerProcess = spawn('npm', ['start', '--', '--nonPersistent'],
|
const packagerProcess = spawn('yarn', ['start', '--nonPersistent'],
|
||||||
{
|
{
|
||||||
stdio: 'inherit',
|
stdio: 'inherit',
|
||||||
env: packagerEnv
|
env: packagerEnv
|
||||||
|
@ -204,7 +204,7 @@ try {
|
||||||
exitCode = 1;
|
exitCode = 1;
|
||||||
throw Error(exitCode);
|
throw Error(exitCode);
|
||||||
}
|
}
|
||||||
if (exec('npm test').code) {
|
if (exec('yarn test').code) {
|
||||||
echo('Jest test failure');
|
echo('Jest test failure');
|
||||||
exitCode = 1;
|
exitCode = 1;
|
||||||
throw Error(exitCode);
|
throw Error(exitCode);
|
||||||
|
|
Loading…
Reference in New Issue