From b197b8b7482c48de4febb590e52fb63f385025cb Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Thu, 11 Feb 2021 16:32:43 +0100 Subject: [PATCH 1/6] chore(build): streamline release command execution MONGOSH-534 --- package.json | 3 +-- packages/build/package.json | 3 ++- packages/build/src/index.ts | 39 +++++++++++++++++++++++++++---- packages/build/src/release.ts | 6 +++-- packages/build/src/run-draft.ts | 7 +----- packages/build/src/run-publish.ts | 6 ----- scripts/evergreen-release.js | 33 -------------------------- 7 files changed, 42 insertions(+), 55 deletions(-) delete mode 100644 scripts/evergreen-release.js diff --git a/package.json b/package.json index db932e6bfa..e8ccf91264 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,7 @@ "start": "npm run start-cli", "compile-exec": "npm run evergreen-release compile", "compile-all": "npm run compile-compass && npm run compile-exec", - "preevergreen-release": "npm run compile-ts", - "evergreen-release": "node scripts/evergreen-release.js", + "evergreen-release": "lerna run --stream --scope @mongosh/build evergreen-release --", "report-missing-help": "lerna run --stream --scope @mongosh/shell-api report-missing-help", "report-supported-api": "lerna run --stream --scope @mongosh/shell-api report-supported-api", "report-coverage": "nyc report --reporter=text --reporter=html && nyc check-coverage --lines=95", diff --git a/packages/build/package.json b/packages/build/package.json index cfb385dac7..449e38318e 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -18,7 +18,8 @@ "test": "mocha -r \"../../scripts/import-expansions.js\" --timeout 30000 --colors -r ts-node/register \"./src/**/*.spec.ts\"", "test-ci": "mocha -r \"../../scripts/import-expansions.js\" --timeout 30000 -r ts-node/register \"./src/**/*.spec.ts\"", "lint": "eslint \"**/*.{js,ts,tsx}\"", - "check": "npm run lint" + "check": "npm run lint", + "evergreen-release": "ts-node -r ../../scripts/import-expansions.js src/index.ts" }, "license": "Apache-2.0", "publishConfig": { diff --git a/packages/build/src/index.ts b/packages/build/src/index.ts index 5971546f9f..8972d4e0fa 100644 --- a/packages/build/src/index.ts +++ b/packages/build/src/index.ts @@ -1,7 +1,36 @@ -import release from './release'; -import { getArtifactUrl } from './evergreen'; -import { downloadMongoDb } from './download-mongodb'; +import path from 'path'; import { BuildVariant } from './config'; +import { downloadMongoDb } from './download-mongodb'; +import { getArtifactUrl } from './evergreen'; +import { release, ReleaseCommand } from './release'; + +export { getArtifactUrl, downloadMongoDb }; + +if (require.main === module) { + (async() => { + const config = require(path.join(__dirname, '..', '..', '..', 'config', 'build.conf.js')); + + const command = process.argv[2]; + + if (!['bump', 'compile', 'package', 'upload', 'draft', 'publish'].includes(command)) { + throw new Error('USAGE: npm run evergreen-release '); + } + + const cliBuildVariant = process.argv + .map((arg) => arg.match(/^--build-variant=(.+)$/)) + .filter(Boolean)[0]; + if (cliBuildVariant) { + config.buildVariant = cliBuildVariant[1]; + } + + // Resolve 'Windows' to 'win32' etc. + if (config.buildVariant in BuildVariant) { + config.buildVariant = (BuildVariant as any)[config.buildVariant]; + } -export default release; -export { release, BuildVariant, getArtifactUrl, downloadMongoDb }; + await release(command as ReleaseCommand, config); + })().then( + () => process.exit(0), + (err) => process.nextTick(() => { throw err; }) + ); +} diff --git a/packages/build/src/release.ts b/packages/build/src/release.ts index 924dea7c96..c846cabf20 100644 --- a/packages/build/src/release.ts +++ b/packages/build/src/release.ts @@ -15,13 +15,15 @@ import { runDraft } from './run-draft'; import { runPublish } from './run-publish'; import { runUpload } from './run-upload'; +export type ReleaseCommand = 'bump' | 'compile' | 'package' | 'upload' | 'draft' | 'publish'; + /** * Run release specific commands. * @param command The command to run * @param config The configuration, usually config/build.config.js. */ -export default async function release( - command: 'bump' | 'compile' | 'package' | 'upload' | 'draft' | 'publish', +export async function release( + command: ReleaseCommand, config: Config ): Promise { config = { diff --git a/packages/build/src/run-draft.ts b/packages/build/src/run-draft.ts index 253100b053..a164556e6b 100644 --- a/packages/build/src/run-draft.ts +++ b/packages/build/src/run-draft.ts @@ -1,6 +1,6 @@ import { promises as fs } from 'fs'; import path from 'path'; -import { ALL_BUILD_VARIANTS, Config, getReleaseVersionFromTag, redactConfig } from './config'; +import { ALL_BUILD_VARIANTS, Config, getReleaseVersionFromTag } from './config'; import { uploadArtifactToDownloadCenter as uploadArtifactToDownloadCenterFn } from './download-center'; import { downloadArtifactFromEvergreen as downloadArtifactFromEvergreenFn } from './evergreen'; import { GithubRepo } from './github-repo'; @@ -12,11 +12,6 @@ export async function runDraft( uploadToDownloadCenter: typeof uploadArtifactToDownloadCenterFn = uploadArtifactToDownloadCenterFn, downloadArtifactFromEvergreen: typeof downloadArtifactFromEvergreenFn = downloadArtifactFromEvergreenFn ): Promise { - console.info( - 'mongosh: beginning draft release with config:', - redactConfig(config) - ); - if (!config.triggeringGitTag || !getReleaseVersionFromTag(config.triggeringGitTag)) { console.error('mongosh: skipping draft as not triggered by a git tag that matches a draft/release tag'); return; diff --git a/packages/build/src/run-publish.ts b/packages/build/src/run-publish.ts index 8518eb7394..ed08ea3b86 100644 --- a/packages/build/src/run-publish.ts +++ b/packages/build/src/run-publish.ts @@ -4,7 +4,6 @@ import { BuildVariant, Config, getReleaseVersionFromTag, - redactConfig, shouldDoPublicRelease as shouldDoPublicReleaseFn } from './config'; import { createAndPublishDownloadCenterConfig as createAndPublishDownloadCenterConfigFn } from './download-center'; @@ -26,11 +25,6 @@ export async function runPublish( shouldDoPublicRelease: typeof shouldDoPublicReleaseFn = shouldDoPublicReleaseFn, getEvergreenArtifactUrl: typeof getArtifactUrlFn = getArtifactUrlFn ): Promise { - console.info( - 'mongosh: beginning publish release with config:', - redactConfig(config) - ); - if (!shouldDoPublicRelease(config)) { console.warn('mongosh: Not triggering publish - configuration does not match a public release!'); return; diff --git a/scripts/evergreen-release.js b/scripts/evergreen-release.js deleted file mode 100644 index a633425d50..0000000000 --- a/scripts/evergreen-release.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; -require('./import-expansions'); - -const path = require('path'); -const { release, BuildVariant } = require(path.join('..', 'packages', 'build')); -const config = require(path.join(__dirname, '..', 'config', 'build.conf.js')); - -/** - * Run the release process. - */ -const runRelease = async() => { - const command = process.argv[2]; - - if (!['bump', 'compile', 'package', 'upload', 'draft', 'publish'].includes(command)) { - throw new Error('USAGE: npm run evergreen-release -- '); - } - - const cliBuildVariant = - process.argv.map((arg) => arg.match(/^--build-variant=(.+)$/)).filter(Boolean)[0]; - if (cliBuildVariant !== undefined) { - config.buildVariant = cliBuildVariant[1]; - } - - // Resolve 'Windows' to 'win32' etc. - if (BuildVariant[config.buildVariant]) - config.buildVariant = BuildVariant[config.buildVariant]; - - await release(command, config); -}; - -runRelease().then( - () => process.exit(0), - (err) => process.nextTick(() => { throw err; })); From 5baa3226042e3635216d77218c13585779bdb22d Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Fri, 12 Feb 2021 14:46:17 +0100 Subject: [PATCH 2/6] fixup --- .evergreen/package-and-upload-artifact.sh | 2 +- packages/cli-repl/src/smoke-tests-fle.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/package-and-upload-artifact.sh b/.evergreen/package-and-upload-artifact.sh index 454813d22e..2fce6271c6 100755 --- a/.evergreen/package-and-upload-artifact.sh +++ b/.evergreen/package-and-upload-artifact.sh @@ -5,7 +5,7 @@ cat < ~/release_mongosh.sh set -e cd $(pwd) export NODE_JS_VERSION=${NODE_JS_VERSION} -export ARTIFACT_URL_FILE=artifact-url.txt +export ARTIFACT_URL_FILE="$PWD/artifact-url.txt" source .evergreen/.setup_env tar xvzf dist.tgz dist/mongosh --version diff --git a/packages/cli-repl/src/smoke-tests-fle.ts b/packages/cli-repl/src/smoke-tests-fle.ts index 1e003cd09d..00c90d471c 100644 --- a/packages/cli-repl/src/smoke-tests-fle.ts +++ b/packages/cli-repl/src/smoke-tests-fle.ts @@ -13,7 +13,7 @@ const assert = function(value, message) { try { // The mongocryptd binary that we ship works on Ubuntu 18.04 and above, // but not Ubuntu 16.04. - if (fs.readFileSync('/etc/issue', 'utf8').match(/Ubuntu 16/)) { + if (os.platform() === 'linux' && fs.readFileSync('/etc/issue', 'utf8').match(/Ubuntu 16/)) { print('Test skipped') process.exit(0); } From 0f9d88994663c6030892d09d38bc2df2d04fc237 Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Fri, 12 Feb 2021 15:31:33 +0100 Subject: [PATCH 3/6] fixup --- .evergreen/package-and-upload-artifact.sh | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.evergreen/package-and-upload-artifact.sh b/.evergreen/package-and-upload-artifact.sh index 2fce6271c6..ca5b4b60d4 100755 --- a/.evergreen/package-and-upload-artifact.sh +++ b/.evergreen/package-and-upload-artifact.sh @@ -4,11 +4,14 @@ set -e cat < ~/release_mongosh.sh set -e cd $(pwd) + export NODE_JS_VERSION=${NODE_JS_VERSION} export ARTIFACT_URL_FILE="$PWD/artifact-url.txt" + source .evergreen/.setup_env tar xvzf dist.tgz dist/mongosh --version + if [ "$(uname)" == Linux ]; then # For the rpm, we want to download the RHEL/CentOS 7 mongocryptd binary. # (We can/should probably remove this after https://jira.mongodb.org/browse/MONGOSH-541) @@ -27,7 +30,7 @@ if [ "$(uname)" == Linux ]; then -e EVERGREEN_EXPANSIONS_PATH=/tmp/build/tmp/expansions.yaml \ -e NODE_JS_VERSION \ -e BUILD_VARIANT \ - -e ARTIFACT_URL_FILE \ + -e ARTIFACT_URL_FILE="/tmp/build/artifact-url.txt" \ -e DISTRO_ID_OVERRIDE \ --rm -v $PWD:/tmp/build --network host centos7-package \ -c 'cd /tmp/build && npm run evergreen-release package && npm run evergreen-release upload' diff --git a/package.json b/package.json index e8ccf91264..c8d07b8db0 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "start": "npm run start-cli", "compile-exec": "npm run evergreen-release compile", "compile-all": "npm run compile-compass && npm run compile-exec", - "evergreen-release": "lerna run --stream --scope @mongosh/build evergreen-release --", + "evergreen-release": "cd packages/build && npm run evergreen-release --", "report-missing-help": "lerna run --stream --scope @mongosh/shell-api report-missing-help", "report-supported-api": "lerna run --stream --scope @mongosh/shell-api report-supported-api", "report-coverage": "nyc report --reporter=text --reporter=html && nyc check-coverage --lines=95", From 5ada3c3f6ac55b3d17a0bfaff2ceefff63157545 Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Mon, 15 Feb 2021 12:13:07 +0100 Subject: [PATCH 4/6] fixup --- .evergreen/package-and-upload-artifact.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.evergreen/package-and-upload-artifact.sh b/.evergreen/package-and-upload-artifact.sh index ca5b4b60d4..f87852efd0 100755 --- a/.evergreen/package-and-upload-artifact.sh +++ b/.evergreen/package-and-upload-artifact.sh @@ -40,6 +40,10 @@ else # Verify signing spctl -a -vvv -t install dist/mongosh fi + if [ "$(uname)" == CYGWIN ]; then + # Fix absolute path before handing over to node + export ARTIFACT_URL_FILE=$(cygwin -w "$ARTIFACT_URL_FILE") + fi npm run evergreen-release upload fi RELEASE_MONGOSH From ebd632340f0a19fe73540a0f05dfbacec3418606 Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Mon, 15 Feb 2021 12:23:55 +0100 Subject: [PATCH 5/6] Update .evergreen/package-and-upload-artifact.sh Co-authored-by: Anna Henningsen --- .evergreen/package-and-upload-artifact.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/package-and-upload-artifact.sh b/.evergreen/package-and-upload-artifact.sh index f87852efd0..f71c466cad 100755 --- a/.evergreen/package-and-upload-artifact.sh +++ b/.evergreen/package-and-upload-artifact.sh @@ -40,9 +40,9 @@ else # Verify signing spctl -a -vvv -t install dist/mongosh fi - if [ "$(uname)" == CYGWIN ]; then + if [ "$OS" == "Windows_NT" ]; then # Fix absolute path before handing over to node - export ARTIFACT_URL_FILE=$(cygwin -w "$ARTIFACT_URL_FILE") + export ARTIFACT_URL_FILE="$(cygpath -w "$ARTIFACT_URL_FILE")" fi npm run evergreen-release upload fi From d03d47e455ae87019acb5f0ece958226eb5d6389 Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Mon, 15 Feb 2021 16:08:19 +0100 Subject: [PATCH 6/6] fixup --- .evergreen/package-and-upload-artifact.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/package-and-upload-artifact.sh b/.evergreen/package-and-upload-artifact.sh index f71c466cad..49d5f087e8 100755 --- a/.evergreen/package-and-upload-artifact.sh +++ b/.evergreen/package-and-upload-artifact.sh @@ -42,7 +42,7 @@ else fi if [ "$OS" == "Windows_NT" ]; then # Fix absolute path before handing over to node - export ARTIFACT_URL_FILE="$(cygpath -w "$ARTIFACT_URL_FILE")" + export ARTIFACT_URL_FILE="\$(cygpath -w "\$ARTIFACT_URL_FILE")" fi npm run evergreen-release upload fi