Browse Source

Towards publishing

Alex Dima 3 years ago
parent
commit
103da73f28

+ 23 - 12
.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

+ 4 - 1
.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}

+ 10 - 6
.github/workflows/publish/useLocalMonacoEditorCore.js → .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 <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');

+ 0 - 50
.github/workflows/publish/setNightlyVersion.js

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