Towards publishing

This commit is contained in:
Alex Dima 2021-12-10 22:32:20 +01:00
parent f1fc190711
commit 103da73f28
No known key found for this signature in database
GPG key ID: 39563C1504FDD0C9
4 changed files with 37 additions and 69 deletions

View file

@ -32,9 +32,9 @@ jobs:
node ./monaco-editor/.github/workflows/publish/computeState.js "${{github.event_name}}" "${{github.event.inputs.nightly}}" 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 # outputs: version, vscode_branch, skip_monaco_editor_core, skip_monaco_editor
# - name: Print state # TODO
# run: | - name: Early stop
# echo ${{ steps.state.outputs.vscode_branch }} run: exit 1
- name: (vscode) checkout - name: (vscode) checkout
if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }} if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }}
@ -145,72 +145,83 @@ jobs:
if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }} if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }}
working-directory: './vscode/out-monaco-editor-core' working-directory: './vscode/out-monaco-editor-core'
run: npm publish --tag next run: npm publish --tag next
#TODO
- name: Delete `npm` config - name: Delete `npm` config
if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }} if: ${{ steps.state.outputs.skip_monaco_editor_core == 'false' }}
run: npm config delete //registry.npmjs.org/:_authToken run: npm config delete //registry.npmjs.org/:_authToken
# TODO
- name: Early stop
run: exit 1
- name: (monaco-editor) Patch package.json version - name: (monaco-editor) Patch package.json version
if: ${{ github.event_name == 'schedule' || github.event.inputs.nightly == 'true' }} if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
run: node ./monaco-editor/.github/workflows/publish/setNightlyVersion.js ./monaco-editor/package.json run: node ./monaco-editor/.github/workflows/publish/setVersion.js ./monaco-editor/package.json ${{ steps.state.outputs.version }}
- name: (monaco-editor) execute `npm ci` (1) - name: (monaco-editor) execute `npm ci` (1)
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm ci run: npm ci
- name: (monaco-editor) execute `npm ci` (2) - name: (monaco-editor) execute `npm ci` (2)
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor/webpack-plugin' working-directory: './monaco-editor/webpack-plugin'
run: npm ci run: npm ci
- name: (monaco-editor) Use local monaco-editor-core - name: (monaco-editor) Patch package.json monaco-editor-core dev dependency version
run: node ./monaco-editor/.github/workflows/publish/useLocalMonacoEditorCore.js 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 - 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' working-directory: './monaco-editor'
run: npm install run: npm install
- name: (monaco-editor) Install OS Dependencies for Playwright - name: (monaco-editor) Install OS Dependencies for Playwright
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: sudo npm run playwright-install-deps run: sudo npm run playwright-install-deps
- name: (monaco-editor) Check prettier - name: (monaco-editor) Check prettier
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm run prettier-check run: npm run prettier-check
- name: (monaco-editor) Build - name: (monaco-editor) Build
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm run release run: npm run release
- name: (monaco-editor) Run unit tests - name: (monaco-editor) Run unit tests
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm test run: npm test
- name: (monaco-editor) Compile webpack plugin - name: (monaco-editor) Compile webpack plugin
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm run compile --prefix webpack-plugin run: npm run compile --prefix webpack-plugin
- name: (monaco-editor) Package using webpack plugin - name: (monaco-editor) Package using webpack plugin
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm run smoketest --prefix webpack-plugin run: npm run smoketest --prefix webpack-plugin
- name: (monaco-editor) Run smoke test - name: (monaco-editor) Run smoke test
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm run smoketest run: npm run smoketest
- name: (monaco-editor) Build website - name: (monaco-editor) Build website
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
working-directory: './monaco-editor' working-directory: './monaco-editor'
run: npm run build-website run: npm run build-website
- name: Set `npm` config - name: Set `npm` config
if: ${{ steps.state.outputs.skip_monaco_editor == 'false' }}
run: npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} run: npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
env: env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish `monaco-editor` - 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' working-directory: './monaco-editor/release'
run: npm publish --tag next run: npm publish --tag next
#TODO

View file

@ -29,6 +29,8 @@ if (!/^((true)|(false)|())$/.test(STR_NIGHTLY)) {
const NIGHTLY = EVENT_NAME === 'schedule' || STR_NIGHTLY === 'true'; const NIGHTLY = EVENT_NAME === 'schedule' || STR_NIGHTLY === 'true';
const distTag = NIGHTLY ? 'next' : 'latest';
const latestMonacoEditorVersion = npmGetLatestVersion('monaco-editor'); const latestMonacoEditorVersion = npmGetLatestVersion('monaco-editor');
const version = (() => { const version = (() => {
if (NIGHTLY) { if (NIGHTLY) {
@ -57,10 +59,11 @@ const skipMonacoEditorCore = (() => {
})(); })();
const skipMonacoEditor = (() => { const skipMonacoEditor = (() => {
return /** @type {'true'|'false'} */ (String(npmExists('monaco-editor-core', version))); return /** @type {'true'|'false'} */ (String(npmExists('monaco-editor', version)));
})(); })();
console.log(` console.log(`
::set-output name=dist_tag::${distTag}
::set-output name=version::${version} ::set-output name=version::${version}
::set-output name=vscode_branch::${vscodeBranch} ::set-output name=vscode_branch::${vscodeBranch}
::set-output name=skip_monaco_editor_core::${skipMonacoEditorCore} ::set-output name=skip_monaco_editor_core::${skipMonacoEditorCore}

View file

@ -6,10 +6,14 @@
//@ts-check //@ts-check
const fs = require('fs'); const fs = require('fs');
const path = require('path');
const REPO_ROOT = path.join(__dirname, '../../../'); if (process.argv.length !== 5) {
const packagejsonPath = path.join(REPO_ROOT, 'package.json'); console.error(
const packagejson = JSON.parse(fs.readFileSync(packagejsonPath).toString()); `usage: node setDevDependencyVersion.js <PATH_TO_PACKAGE_JSON_FILE> <PACKAGE> <VERSION>`
packagejson['devDependencies']['monaco-editor-core'] = 'file:../vscode/out-monaco-editor-core'; );
fs.writeFileSync(packagejsonPath, JSON.stringify(packagejson, null, '\t') + '\n'); 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');

View file

@ -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 <PATH_TO_PACKAGE_JSON_FILE>`);
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');