Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(scripts): add logic for version scripts to account for local E2E test versioning #35847

Merged
merged 4 commits into from
Jan 17, 2023
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
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