From e7291e938a99bbc914a10dce053346d162bb39a3 Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Wed, 24 Jul 2019 11:05:54 -0400 Subject: [PATCH] Adds WIP support for a daily job pipeline --- azure-pipelines.yml | 25 +++++++++++++ package.json | 3 +- scripts/runDaily.js | 85 +++++++++++++++++++++++++++++++++++++-------- 3 files changed, 97 insertions(+), 16 deletions(-) create mode 100644 azure-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..e3fd6f6b --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,25 @@ +# triggered by schedule at 5am to try make sure it's done after the TS daily build +schedules: +- cron: '0 5 * * *' + displayName: Daily midnight build + branches: + include: + - master + always: true + +pr: none + +pool: + vmImage: 'ubuntu-latest' + +steps: +- task: DownloadSecureFile@1 + inputs: + secureFile: vscode_typescript_next_deploy_key + displayName: 'Get the deploy key' + +- bash: | + npm run run-nightly + npm publish + + displayName: 'Publish to NPM' \ No newline at end of file diff --git a/package.json b/package.json index 9a2916d1..9143bfac 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "watch": "tsc -p ./src --watch", "prepublishOnly": "npm run compile && node ./scripts/bundle && mcopy ./src/monaco.d.ts ./release/monaco.d.ts", "import-typescript": "node ./scripts/importTypescript", - "run-nightly": "node ./scripts/runDaily", + "run-nightly": "node ./scripts/runDaily" }, "author": "Microsoft Corporation", "license": "MIT", @@ -24,6 +24,7 @@ "monaco-editor-core": "^0.16.0", "monaco-languages": "^1.7.0", "monaco-plugin-helpers": "^1.0.2", + "node-fetch": "^2.6.0", "requirejs": "^2.3.6", "typescript": "^3.5.1", "uglify-js": "^3.4.9" diff --git a/scripts/runDaily.js b/scripts/runDaily.js index e9eed03c..8e31d6f6 100644 --- a/scripts/runDaily.js +++ b/scripts/runDaily.js @@ -4,24 +4,79 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -const {execSync} = require('child_process'); -const {join} = require('path') -const {readFileSync, writeFileSync} = require("fs") +const { execSync } = require("child_process"); +const { join } = require("path"); +const { readFileSync, writeFileSync } = require("fs"); +const fetch = require("node-fetch"); -// Update to the daily build -execSync("npm install --save typescript@next") +try { + // Update to the daily build + execSync("npm install --save typescript@next") -// Update the dts files -execSync("npm run import-typescript") + // Update the dts files + execSync("npm run import-typescript") -// Sync the versions -const packagePath = join(__dirname, "../package.json") -const package = JSON.parse(readFileSync(packagePath, "utf8")) + // Sync the versions + const packagePath = join(__dirname, "../package.json") + const package = JSON.parse(readFileSync(packagePath, "utf8")) -const tsPackagePath = join(__dirname, "../node_modules/typescript/package.json") -const tsPackage = JSON.parse(readFileSync(tsPackagePath, "utf8")) + const tsPackagePath = join(__dirname, "../node_modules/typescript/package.json") + const tsPackage = JSON.parse(readFileSync(tsPackagePath, "utf8")) -// Set the monaco-typescript version to directly match the typescript nightly version -package.version = tsPackage.version -writeFileSync(packagePath, JSON.stringify(package), "utf8") + // Set the monaco-typescript version to directly match the typescript nightly version + package.version = tsPackage.version + writeFileSync(packagePath, JSON.stringify(package), "utf8") + + // Update the dts files + execSync("npm run compile") + +} catch (error) { + // If it fails, post a message into the TS teams bot channel + const teamsURL = process.env.TEAMS_INCOMING_WEBHOOK_URL + if(!teamsURL) return + + const message = { + "@type": "MessageCard", + "@context": "https://schema.org/extensions", + summary: "Issue with Monaco-TypeScript daily build", + themeColor: "0078D7", + title: 'Issue opened: "Push notifications not working"', + sections: [ + { + activityTitle: "Azure Pipelines", + activitySubtitle: "9/13/2016, 11:46am", + activityImage: + "https://avatars2.githubusercontent.com/ml/1303?s=140&v=4", + facts: [ + { + name: "Error:", + value: error.name + }, + { + name: "Description:", + value: error.message || error.description + } + ] + } + ], + potentialAction: [ + { + "@type": "OpenUri", + name: "View in Pipelines", + targets: [ + { + os: "default", + uri: "https://link.com" + } + ] + } + ] + }; + + fetch(teamsURL, { + method: "post", + body: JSON.stringify(message), + headers: { "Content-Type": "application/json" } + }); +}