Skip to content

Commit

Permalink
fix(scripts): add logic for version scripts to account for local E2E …
Browse files Browse the repository at this point in the history
…test versioning (#35847)

Co-authored-by: Riccardo <cipolleschi@fb.com>
  • Loading branch information
kelset and Riccardo authored Jan 17, 2023
1 parent 4f94577 commit 5f3c1e1
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 13 deletions.
10 changes: 7 additions & 3 deletions scripts/set-rn-version.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,12 @@ let argv = yargs

const buildType = argv.buildType;
const version = argv.toVersion;
validateBuildType(buildType);

try {
validateBuildType(buildType);
} catch (e) {
throw e;
}

let major,
minor,
Expand All @@ -47,8 +52,7 @@ let major,
try {
({major, minor, patch, prerelease} = parseVersion(version, buildType));
} catch (e) {
echo(e.message);
exit(1);
throw e;
}

const tmpVersioningFolder = fs.mkdtempSync(
Expand Down
18 changes: 11 additions & 7 deletions scripts/test-e2e-local.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ const yargs = require('yargs');
const fs = require('fs');
const path = require('path');
const os = require('os');
const {getBranchName} = require('./scm-utils');

const {
launchAndroidEmulator,
Expand Down Expand Up @@ -156,11 +155,9 @@ if (argv.target === 'RNTester') {
// we need to add the unique timestamp to avoid npm/yarn to use some local caches
const baseVersion = require('../package.json').version;

const branchName = getBranchName();
const buildType =
branchName.endsWith('-stable') && baseVersion !== '1000.0.0'
? 'release'
: 'dry-run';
// in local testing, 1000.0.0 mean we are on main, every other case means we are
// working on a release version
const buildType = baseVersion !== '1000.0.0' ? 'release' : 'dry-run';

const dateIdentifier = new Date()
.toISOString()
Expand All @@ -171,10 +168,17 @@ if (argv.target === 'RNTester') {
const releaseVersion = `${baseVersion}-${dateIdentifier}`;

// this is needed to generate the Android artifacts correctly
exec(
const exitCode = exec(
`node scripts/set-rn-version.js --to-version ${releaseVersion} --build-type ${buildType}`,
).code;

if (exitCode !== 0) {
console.error(
`Failed to set the RN version. Version ${releaseVersion} is not valid for ${buildType}`,
);
process.exit(exitCode);
}

// Generate native files for Android
generateAndroidArtifacts(releaseVersion, tmpPublishingFolder);

Expand Down
16 changes: 13 additions & 3 deletions scripts/version-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const VERSION_REGEX = /^v?((\d+)\.(\d+)\.(\d+)(?:-(.+))?)$/;
* Some examples of valid versions are:
* - stable: 0.68.1
* - stable prerelease: 0.70.0-rc.0
* - e2e-test: X.Y.Z-20221116-2018
* - nightly: 0.0.0-20221116-2018-0bc4547fc
* - dryrun: 1000.0.0
*
Expand All @@ -38,7 +39,11 @@ const VERSION_REGEX = /^v?((\d+)\.(\d+)\.(\d+)(?:-(.+))?)$/;
*
*/
function parseVersion(versionStr, buildType) {
validateBuildType(buildType);
try {
validateBuildType(buildType);
} catch (e) {
throw e;
}

const match = extractMatchIfValid(versionStr);
const [, version, major, minor, patch, prerelease] = match;
Expand All @@ -51,7 +56,11 @@ function parseVersion(versionStr, buildType) {
prerelease,
};

validateVersion(versionObject, buildType);
try {
validateVersion(versionObject, buildType);
} catch (e) {
throw e;
}

return versionObject;
}
Expand Down Expand Up @@ -129,7 +138,8 @@ function isStablePrerelease(version) {
version.patch === '0' &&
version.prerelease != null &&
(version.prerelease.startsWith('rc.') ||
version.prerelease.startsWith('rc-'))
version.prerelease.startsWith('rc-') ||
version.prerelease.match(/^(\d{8})-(\d{4})$/))
);
}

Expand Down

0 comments on commit 5f3c1e1

Please sign in to comment.