diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index aec5756a..a78fbf6a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -32,9 +32,9 @@ jobs: node ./monaco-editor/.github/workflows/publish/computeState.js "${{github.event_name}}" "${{github.event.inputs.nightly}}" # outputs: version, vscode_branch, skip_monaco_editor_core, skip_monaco_editor - # - name: Print state - # run: | - # echo ${{ steps.state.outputs.vscode_branch }} + # TODO + - name: Early stop + run: exit 1 - name: (vscode) checkout if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }} @@ -145,72 +145,83 @@ jobs: if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }} working-directory: './vscode/out-monaco-editor-core' run: npm publish --tag next + #TODO - name: Delete `npm` config if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }} run: npm config delete //registry.npmjs.org/:_authToken - # TODO - - name: Early stop - run: exit 1 - - name: (monaco-editor) Patch package.json version - if: ${{ github.event_name == 'schedule' || github.event.inputs.nightly == 'true' }} - run: node ./monaco-editor/.github/workflows/publish/setNightlyVersion.js ./monaco-editor/package.json + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} + run: node ./monaco-editor/.github/workflows/publish/setVersion.js ./monaco-editor/package.json ${{ steps.state.outputs.version }} - name: (monaco-editor) execute `npm ci` (1) + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm ci - name: (monaco-editor) execute `npm ci` (2) + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor/webpack-plugin' run: npm ci - - name: (monaco-editor) Use local monaco-editor-core - run: node ./monaco-editor/.github/workflows/publish/useLocalMonacoEditorCore.js + - name: (monaco-editor) Patch package.json monaco-editor-core dev dependency version + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} + run: node ./monaco-editor/.github/workflows/publish/setDevDependencyVersion.js ./monaco-editor/package.json monaco-editor-core ${{ steps.state.outputs.version }} - name: (monaco-editor) execute `npm install` to pick up local monaco-editor-core + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm install - name: (monaco-editor) Install OS Dependencies for Playwright + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: sudo npm run playwright-install-deps - name: (monaco-editor) Check prettier + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm run prettier-check - name: (monaco-editor) Build + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm run release - name: (monaco-editor) Run unit tests + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm test - name: (monaco-editor) Compile webpack plugin + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm run compile --prefix webpack-plugin - name: (monaco-editor) Package using webpack plugin + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm run smoketest --prefix webpack-plugin - name: (monaco-editor) Run smoke test + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm run smoketest - name: (monaco-editor) Build website + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor' run: npm run build-website - name: Set `npm` config + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} run: npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish `monaco-editor` - if: ${{ github.event_name == 'schedule' || github.event.inputs.nightly == 'true' }} + if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }} working-directory: './monaco-editor/release' run: npm publish --tag next + #TODO diff --git a/.github/workflows/publish/computeState.js b/.github/workflows/publish/computeState.js index 7c450105..ece60755 100644 --- a/.github/workflows/publish/computeState.js +++ b/.github/workflows/publish/computeState.js @@ -29,6 +29,8 @@ if (!/^((true)|(false)|())$/.test(STR_NIGHTLY)) { const NIGHTLY = EVENT_NAME === 'schedule' || STR_NIGHTLY === 'true'; +const distTag = NIGHTLY ? 'next' : 'latest'; + const latestMonacoEditorVersion = npmGetLatestVersion('monaco-editor'); const version = (() => { if (NIGHTLY) { @@ -57,10 +59,11 @@ const skipMonacoEditorCore = (() => { })(); const skipMonacoEditor = (() => { - return /** @type {'true'|'false'} */ (String(npmExists('monaco-editor-core', version))); + return /** @type {'true'|'false'} */ (String(npmExists('monaco-editor', version))); })(); console.log(` +::set-output name=dist_tag::${distTag} ::set-output name=version::${version} ::set-output name=vscode_branch::${vscodeBranch} ::set-output name=skip_monaco_editor_core::${skipMonacoEditorCore} diff --git a/.github/workflows/publish/useLocalMonacoEditorCore.js b/.github/workflows/publish/setDevDependencyVersion.js similarity index 53% rename from .github/workflows/publish/useLocalMonacoEditorCore.js rename to .github/workflows/publish/setDevDependencyVersion.js index 517cde5e..c25013ec 100644 --- a/.github/workflows/publish/useLocalMonacoEditorCore.js +++ b/.github/workflows/publish/setDevDependencyVersion.js @@ -6,10 +6,14 @@ //@ts-check const fs = require('fs'); -const path = require('path'); -const REPO_ROOT = path.join(__dirname, '../../../'); -const packagejsonPath = path.join(REPO_ROOT, 'package.json'); -const packagejson = JSON.parse(fs.readFileSync(packagejsonPath).toString()); -packagejson['devDependencies']['monaco-editor-core'] = 'file:../vscode/out-monaco-editor-core'; -fs.writeFileSync(packagejsonPath, JSON.stringify(packagejson, null, '\t') + '\n'); +if (process.argv.length !== 5) { + console.error( + `usage: node setDevDependencyVersion.js ` + ); + process.exit(1); +} + +const packagejson = JSON.parse(fs.readFileSync(process.argv[2]).toString()); +packagejson['devDependencies'][process.argv[3]] = process.argv[4]; +fs.writeFileSync(process.argv[2], JSON.stringify(packagejson, null, '\t') + '\n'); diff --git a/.github/workflows/publish/setNightlyVersion.js b/.github/workflows/publish/setNightlyVersion.js deleted file mode 100644 index eefa0e3e..00000000 --- a/.github/workflows/publish/setNightlyVersion.js +++ /dev/null @@ -1,50 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -//@ts-check - -const fs = require('fs'); -const cp = require('child_process'); - -if (process.argv.length !== 3) { - console.error(`usage: node setNightlyVersion.js `); - process.exit(1); -} - -const packagejson = JSON.parse(fs.readFileSync(process.argv[2]).toString()); -const packageName = packagejson.name; -if (packageName !== 'monaco-editor' && packageName !== 'monaco-editor-core') { - console.error(`expected name to be 'monaco-editor' or 'monaco-editor-core'`); - process.exit(1); -} - -/** @type {string} */ -const latestVersion = (() => { - const output = cp.execSync(`npm show ${packageName} version`).toString(); - const version = output.split(/\r\n|\r|\n/g)[0]; - if (!/\d+\.\d+\.\d+/.test(version)) { - console.log('unrecognized package.json version: ' + version); - process.exit(1); - } - return version; -})(); - -if (!/^0\.(\d+)\.(\d+)$/.test(latestVersion)) { - console.error(`version ${latestVersion} does not match 0.x.y`); - process.exit(1); -} - -const devVersion = (() => { - const pieces = latestVersion.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}`; -})(); - -packagejson.version = devVersion; -fs.writeFileSync(process.argv[2], JSON.stringify(packagejson, null, '\t') + '\n');