diff --git a/.evergreen/package-and-upload-artifact.sh b/.evergreen/package-and-upload-artifact.sh index 454813d22e..49d5f087e8 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=artifact-url.txt +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' @@ -37,6 +40,10 @@ else # Verify signing spctl -a -vvv -t install dist/mongosh fi + if [ "$OS" == "Windows_NT" ]; then + # Fix absolute path before handing over to node + export ARTIFACT_URL_FILE="\$(cygpath -w "\$ARTIFACT_URL_FILE")" + fi npm run evergreen-release upload fi RELEASE_MONGOSH diff --git a/package.json b/package.json index db932e6bfa..c8d07b8db0 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": "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", 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/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); } 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; }));