ci: Support experiment versions in github actions (no-changelog) (#18562)

This commit is contained in:
Nikhil Kuriakose
2025-08-27 22:03:33 +02:00
committed by GitHub
parent 3258a65bdb
commit 07915c6b25
3 changed files with 21 additions and 2 deletions

View File

@@ -7,9 +7,24 @@ import assert from 'assert';
const exec = promisify(child_process.exec);
function generateExperimentalVersion(currentVersion) {
const parsed = semver.parse(currentVersion);
if (!parsed) throw new Error(`Invalid version: ${currentVersion}`);
// Check if it's already an experimental version
if (parsed.prerelease.length > 0 && parsed.prerelease[0] === 'exp') {
// Increment the experimental minor version
const expMinor = (parsed.prerelease[1] || 0) + 1;
return `${parsed.major}.${parsed.minor}.${parsed.patch}-exp.${expMinor}`;
}
// Create new experimental version: <major>.<minor>.<patch>-exp.0
return `${parsed.major}.${parsed.minor}.${parsed.patch}-exp.0`;
}
const rootDir = process.cwd();
const releaseType = process.env.RELEASE_TYPE;
assert.match(releaseType, /^(patch|minor|major)$/, 'Invalid RELEASE_TYPE');
assert.match(releaseType, /^(patch|minor|major|experimental)$/, 'Invalid RELEASE_TYPE');
// TODO: if releaseType is `auto` determine release type based on the changelog
@@ -46,7 +61,9 @@ for (const packageName in packageMap) {
Object.keys(packageJson.dependencies || {}).some(
(dependencyName) => packageMap[dependencyName]?.isDirty,
)
? semver.inc(version, releaseType)
? releaseType === 'experimental'
? generateExperimentalVersion(version)
: semver.inc(version, releaseType)
: version;
await writeFile(packageFile, JSON.stringify(packageJson, null, 2) + '\n');

View File

@@ -9,6 +9,7 @@ import packageJson from '../../package.json' with { type: 'json' };
const baseDir = resolve(dirname(fileURLToPath(import.meta.url)), '../..');
const fullChangelogFile = resolve(baseDir, 'CHANGELOG.md');
// Version includes experimental versions (e.g., 1.2.3-exp.0)
const versionChangelogFile = resolve(baseDir, `CHANGELOG-${packageJson.version}.md`);
const changelogStream = conventionalChangelog({

View File

@@ -17,6 +17,7 @@ on:
- patch
- minor
- major
- experimental
jobs:
create-release-pr: