diff --git a/.azure-pipelines/publish-nightly.yml b/.azure-pipelines/publish-nightly.yml index 0cc946c17d..e6efeeed97 100644 --- a/.azure-pipelines/publish-nightly.yml +++ b/.azure-pipelines/publish-nightly.yml @@ -23,6 +23,16 @@ resources: ref: main endpoint: Monaco +parameters: + - name: vscodeRef + displayName: The VS Code commit id. When left empty, the main branched is used. + type: string + default: '' + - name: prereleaseVersion + displayName: The prerelease version. When left empty, dev-${today} is used. + type: string + default: '' + extends: template: azure-pipelines/npm-package/pipeline.yml@templates parameters: @@ -35,6 +45,9 @@ extends: displayName: Install NPM dependencies - script: yarn ts-node ./scripts/ci/monaco-editor-core-prepare nightly + env: + VSCODE_REF: ${{ parameters.vscodeRef }} + PRERELEASE_VERSION: ${{ parameters.prereleaseVersion }} retryCountOnTaskFailure: 5 displayName: Setup, Build & Test monaco-editor-core @@ -51,6 +64,9 @@ extends: displayName: Install NPM dependencies - script: yarn ts-node ./scripts/ci/monaco-editor-prepare nightly + env: + VSCODE_REF: ${{ parameters.vscodeRef }} + PRERELEASE_VERSION: ${{ parameters.prereleaseVersion }} retryCountOnTaskFailure: 5 displayName: Setup, Build & Test monaco-editor diff --git a/scripts/ci/env.ts b/scripts/ci/env.ts new file mode 100644 index 0000000000..222743fab4 --- /dev/null +++ b/scripts/ci/env.ts @@ -0,0 +1,6 @@ +export function getEnv(): { + VSCODE_REF: string | undefined; + PRERELEASE_VERSION: string | undefined; +} { + return process.env as any; +} diff --git a/scripts/ci/monaco-editor-core-prepare.ts b/scripts/ci/monaco-editor-core-prepare.ts index ea70c44b6f..1cae7348c1 100644 --- a/scripts/ci/monaco-editor-core-prepare.ts +++ b/scripts/ci/monaco-editor-core-prepare.ts @@ -1,6 +1,7 @@ import { mkdir, rm } from 'fs/promises'; import { join, resolve } from 'path'; import { PackageJson, group, gitShallowClone, run, writeJsonFile, getNightlyVersion } from '../lib'; +import { getEnv } from './env'; const selfPath = __dirname; const rootPath = join(selfPath, '..', '..'); @@ -21,8 +22,8 @@ async function prepareMonacoEditorCoreReleaseStableOrNightly() { version = monacoEditorPackageJson.version; ref = monacoEditorPackageJson.vscodeRef; } else if (arg === 'nightly') { - version = getNightlyVersion(monacoEditorPackageJson.version); - ref = 'main'; + version = getNightlyVersion(monacoEditorPackageJson.version, getEnv().PRERELEASE_VERSION); + ref = getEnv().VSCODE_REF || 'main'; } else { throw new Error('Invalid argument'); } diff --git a/scripts/ci/monaco-editor-prepare.ts b/scripts/ci/monaco-editor-prepare.ts index 2791ec848e..f7f81f1335 100644 --- a/scripts/ci/monaco-editor-prepare.ts +++ b/scripts/ci/monaco-editor-prepare.ts @@ -1,6 +1,7 @@ import { readFile } from 'fs/promises'; import { join, resolve } from 'path'; import { PackageJson, getNightlyVersion, group, run, writeJsonFile, gitCommitId } from '../lib'; +import { getEnv } from './env'; const selfPath = __dirname; const rootPath = join(selfPath, '..', '..'); @@ -23,7 +24,7 @@ async function prepareMonacoEditorReleaseStableOrNightly() { if (arg === 'stable') { version = monacoEditorPackageJson.version; } else if (arg === 'nightly') { - version = getNightlyVersion(monacoEditorPackageJson.version); + version = getNightlyVersion(monacoEditorPackageJson.version, getEnv().PRERELEASE_VERSION); } else { throw new Error('Invalid argument'); } diff --git a/scripts/lib/index.ts b/scripts/lib/index.ts index 4db4cfe268..a8eca48db3 100644 --- a/scripts/lib/index.ts +++ b/scripts/lib/index.ts @@ -73,14 +73,16 @@ export async function writeJsonFile(filePath: string, jsonData: unknown): Promis await writeFile(filePath, JSON.stringify(jsonData, null, '\t') + '\n'); } -export function getNightlyVersion(version: string): string { +export function getNightlyVersion(version: string, prerelease: string | undefined): string { const pieces = version.split('.'); const minor = parseInt(pieces[1], 10); const date = new Date(); const yyyy = date.getUTCFullYear(); const mm = String(date.getUTCMonth() + 1).padStart(2, '0'); const dd = String(date.getUTCDate()).padStart(2, '0'); - return `0.${minor + 1}.0-dev.${yyyy}${mm}${dd}`; + + prerelease = prerelease || `dev.${yyyy}${mm}${dd}`; + return `0.${minor + 1}.0-${prerelease}`; } export interface PackageJson {