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}}"
# 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

View file

@ -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}

View file

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