Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ jobs:
- run:
name: Install nested packages from Yarn cache
command: yarn --frozen-lockfile --cache-folder ~/.cache/yarn
- run: ./scripts/circleci/download_devtools_regression_build.js << parameters.version >>
- run: ./scripts/circleci/download_devtools_regression_build.js << parameters.version >> --replaceBuild
- run: node ./scripts/jest/jest-cli.js --build --project devtools --release-channel=experimental --reactVersion << parameters.version >> --ci

yarn_lint_build:
Expand Down
22 changes: 20 additions & 2 deletions scripts/circleci/download_devtools_regression_build.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const {exec} = require('child-process-promise');
const chalk = require('chalk');
const {join} = require('path');
const semver = require('semver');
const yargs = require('yargs');
const fs = require('fs');

const INSTALL_PACKAGES = ['react-dom', 'react', 'react-test-renderer'];
Expand All @@ -16,7 +17,10 @@ const ROOT_PATH = join(__dirname, '..', '..');
const buildPath = join(ROOT_PATH, `build`, 'oss-experimental');
const regressionBuildPath = join(ROOT_PATH, REGRESSION_FOLDER);

const argv = yargs(process.argv.slice(2)).argv;

const version = process.argv[2];
const shouldReplaceBuild = !!argv.replaceBuild;

async function downloadRegressionBuild() {
console.log(chalk.bold.white(`Downloading React v${version}\n`));
Expand All @@ -39,6 +43,12 @@ async function downloadRegressionBuild() {
`npm install --prefix ${REGRESSION_FOLDER} ${downloadPackagesStr}`
);

// If we shouldn't replace the build folder, we can stop here now
// before we modify anything
if (!shouldReplaceBuild) {
return;
}

// Remove all the packages that we downloaded in the original build folder
// so we can move the modules from the regression build over
const removePackagesStr = INSTALL_PACKAGES.reduce(
Expand Down Expand Up @@ -102,12 +112,20 @@ async function downloadRegressionBuild() {

async function main() {
try {
if (!version) {
console.log(chalk.red('Must specify React version to download'));
return;
}
await downloadRegressionBuild();
} catch (e) {
console.log(chalk.red(e));
} finally {
console.log(chalk.bold.white(`Removing regression build`));
await exec(`rm -r ${regressionBuildPath}`);
// We shouldn't remove the regression-build folder unless we're using
// it to replace the build folder
if (shouldReplaceBuild) {
console.log(chalk.bold.white(`Removing regression build`));
await exec(`rm -r ${regressionBuildPath}`);
}
}
}

Expand Down