From 21fa7740d3021eaef14b2b84d50dc4bda2269281 Mon Sep 17 00:00:00 2001 From: Robert Chipperfield Date: Fri, 6 Apr 2018 12:40:06 +0100 Subject: [PATCH 1/5] WIP: another OD package for npmjs.com use --- scripts/teamcity.js | 48 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/scripts/teamcity.js b/scripts/teamcity.js index 65fecfc8..c92bea1d 100644 --- a/scripts/teamcity.js +++ b/scripts/teamcity.js @@ -23,9 +23,51 @@ if (!process.env.OCTOPUS_API_KEY) { var packageVersion = pkg.version + "." + process.env.BUILD_COUNTER; console.warn("##teamcity[buildNumber '" + packageVersion + "']"); +// Zip up the dist folder for CDN use +const cdnPkgFilename = "RedGate.HoneycombWebToolkit." + packageVersion + ".zip"; +zipFolder("dist", cdnPkgFilename, function(err) { + if(err) { + console.error("Failed to zip output package", err); + process.exit(1); + } else { + console.log("Created zipped package"); + + // Upload the resulting package to Octopus + const packagesEndpoint = process.env.OCTOPUS_URL + "/api/packages/raw"; + + var octopus_post_form = { + data: fs.createReadStream(cdnPkgFilename), + }; + + request({ + url: packagesEndpoint, + method: "POST", + formData: octopus_post_form, + headers: { + "X-Octopus-ApiKey": process.env.OCTOPUS_API_KEY + } + }, function(err, response, body) { + // Upload callback + if (!err && response.statusCode == 201) { + console.log("Package uploaded to Octopus"); + } else { + console.error("Octopus upload failed", err, " status code ", response.statusCode); + process.exit(1); + } + }); + } +}); + +// Build up the npm-dist folder with stuff we want in the package we send to npmjs.com +if (!fs.existsSync("npm-dist")){ + fs.mkdirSync("npm-dist"); +} + +// TODO: copy the stuff we want in the npm package into npm-dist + // Zip up the dist folder -const pkgFilename = "RedGate.HoneycombWebToolkit." + packageVersion + ".zip"; -zipFolder("dist", pkgFilename, function(err) { +const npmPkgFilename = "RedGate.HoneycombWebToolkit.Npm." + packageVersion + ".zip"; +zipFolder("npm-dist", npmPkgFilename, function(err) { if(err) { console.error("Failed to zip output package", err); process.exit(1); @@ -36,7 +78,7 @@ zipFolder("dist", pkgFilename, function(err) { const packagesEndpoint = process.env.OCTOPUS_URL + "/api/packages/raw"; var octopus_post_form = { - data: fs.createReadStream(pkgFilename), + data: fs.createReadStream(npmPkgFilename), }; request({ From 7afea1b29c930dae3b5aeba1028478d4a14794fc Mon Sep 17 00:00:00 2001 From: Edward Casbon Date: Fri, 6 Apr 2018 14:01:54 +0100 Subject: [PATCH 2/5] Copy files into npm-dist directory --- scripts/teamcity.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/teamcity.js b/scripts/teamcity.js index c92bea1d..9a69daa6 100644 --- a/scripts/teamcity.js +++ b/scripts/teamcity.js @@ -1,6 +1,6 @@ // Extra tasks when building on TeamCity. const zipFolder = require("zip-folder"); -const fs = require("fs"); +const fs = require("fs-extra"); const request = require("request"); const pkg = require('../package.json'); @@ -64,6 +64,11 @@ if (!fs.existsSync("npm-dist")){ } // TODO: copy the stuff we want in the npm package into npm-dist +// src and .npmignore and package.json +fs.copySync("src", "npm-dist/src"); +fs.copySync(".npmignore", "npm-dist/.npmignore"); +fs.copySync("package.json", "npm-dist/package.json"); + // Zip up the dist folder const npmPkgFilename = "RedGate.HoneycombWebToolkit.Npm." + packageVersion + ".zip"; From 7f6cf04f1179aa3db8b583183662368d202b3bd5 Mon Sep 17 00:00:00 2001 From: Edward Casbon Date: Fri, 6 Apr 2018 14:57:37 +0100 Subject: [PATCH 3/5] Added a couple more files to npm dist copy --- scripts/teamcity.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/teamcity.js b/scripts/teamcity.js index 9a69daa6..c5d96ed7 100644 --- a/scripts/teamcity.js +++ b/scripts/teamcity.js @@ -64,10 +64,12 @@ if (!fs.existsSync("npm-dist")){ } // TODO: copy the stuff we want in the npm package into npm-dist -// src and .npmignore and package.json -fs.copySync("src", "npm-dist/src"); -fs.copySync(".npmignore", "npm-dist/.npmignore"); -fs.copySync("package.json", "npm-dist/package.json"); +const npmDistDir = 'npm-dist'; +fs.copySync('src', `${npmDistDir}/src`); +fs.copySync('package.json', `${npmDistDir}/package.json`); +fs.copySync('.npmignore', `${npmDistDir}/.npmignore`); +fs.copySync('.babelrc', `${npmDistDir}/.babelrc`); +fs.copySync('.license.pdf', `${npmDistDir}/license.pdf`); // Zip up the dist folder From 1af66cf7f735c828b7af06ab41370fba7a66aa0a Mon Sep 17 00:00:00 2001 From: Edward Casbon Date: Fri, 6 Apr 2018 14:58:14 +0100 Subject: [PATCH 4/5] Removed todo comment --- scripts/teamcity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/teamcity.js b/scripts/teamcity.js index c5d96ed7..61a6afdd 100644 --- a/scripts/teamcity.js +++ b/scripts/teamcity.js @@ -63,7 +63,7 @@ if (!fs.existsSync("npm-dist")){ fs.mkdirSync("npm-dist"); } -// TODO: copy the stuff we want in the npm package into npm-dist +// Copy the stuff we want in the npm package into npm-dist const npmDistDir = 'npm-dist'; fs.copySync('src', `${npmDistDir}/src`); fs.copySync('package.json', `${npmDistDir}/package.json`); From d133eb9c179ac6e4eb61a6e603ff25ed284558d4 Mon Sep 17 00:00:00 2001 From: Edward Casbon Date: Fri, 6 Apr 2018 15:20:09 +0100 Subject: [PATCH 5/5] Refactored TeamCity build script. --- scripts/teamcity.js | 116 +++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 72 deletions(-) diff --git a/scripts/teamcity.js b/scripts/teamcity.js index 61a6afdd..689f8de5 100644 --- a/scripts/teamcity.js +++ b/scripts/teamcity.js @@ -19,48 +19,52 @@ if (!process.env.OCTOPUS_API_KEY) { process.exit(1); } +const packageAndPost = (folderPath, archivePath) => { + zipFolder(folderPath, archivePath, err => { + if (err) { + console.error('Failed to zip output package', err); + process.exit(1); + } else { + console.log('Created zipped package'); + + // Upload the resulting package to Octopus + const packagesEndpoint = `${process.env.OCTOPUS_URL}/api/packages/raw`; + + const octopus_post_form = { + data: fs.createReadStream(archivePath), + }; + + request({ + url: packagesEndpoint, + method: 'POST', + formData: octopus_post_form, + headers: { + 'X-Octopus-ApiKey': process.env.OCTOPUS_API_KEY + } + }, (err, response, body) => { + // Upload callback + if (!err && response.statusCode == 201) { + console.log('Package uploaded to Octopus'); + } else { + console.error('Octopus upload failed', err, `status code: ${response.statusCode}`); + process.exit(1); + } + }); + } + }); +}; + // Set the build version from package.json, plus the build counter to uniquify it -var packageVersion = pkg.version + "." + process.env.BUILD_COUNTER; -console.warn("##teamcity[buildNumber '" + packageVersion + "']"); +const packageVersion = `${pkg.version}.${process.env.BUILD_COUNTER}`; +console.warn(`##teamcity[buildNumber '${packageVersion}']`); // Zip up the dist folder for CDN use -const cdnPkgFilename = "RedGate.HoneycombWebToolkit." + packageVersion + ".zip"; -zipFolder("dist", cdnPkgFilename, function(err) { - if(err) { - console.error("Failed to zip output package", err); - process.exit(1); - } else { - console.log("Created zipped package"); - - // Upload the resulting package to Octopus - const packagesEndpoint = process.env.OCTOPUS_URL + "/api/packages/raw"; - - var octopus_post_form = { - data: fs.createReadStream(cdnPkgFilename), - }; - - request({ - url: packagesEndpoint, - method: "POST", - formData: octopus_post_form, - headers: { - "X-Octopus-ApiKey": process.env.OCTOPUS_API_KEY - } - }, function(err, response, body) { - // Upload callback - if (!err && response.statusCode == 201) { - console.log("Package uploaded to Octopus"); - } else { - console.error("Octopus upload failed", err, " status code ", response.statusCode); - process.exit(1); - } - }); - } -}); +const cdnPkgFilename = `RedGate.HoneycombWebToolkit.${packageVersion}.zip`; +packageAndPost('dist', cdnPkgFilename); // Build up the npm-dist folder with stuff we want in the package we send to npmjs.com -if (!fs.existsSync("npm-dist")){ - fs.mkdirSync("npm-dist"); +if (!fs.existsSync('npm-dist')) { + fs.mkdirSync('npm-dist'); } // Copy the stuff we want in the npm package into npm-dist @@ -71,40 +75,8 @@ fs.copySync('.npmignore', `${npmDistDir}/.npmignore`); fs.copySync('.babelrc', `${npmDistDir}/.babelrc`); fs.copySync('.license.pdf', `${npmDistDir}/license.pdf`); - // Zip up the dist folder -const npmPkgFilename = "RedGate.HoneycombWebToolkit.Npm." + packageVersion + ".zip"; -zipFolder("npm-dist", npmPkgFilename, function(err) { - if(err) { - console.error("Failed to zip output package", err); - process.exit(1); - } else { - console.log("Created zipped package"); - - // Upload the resulting package to Octopus - const packagesEndpoint = process.env.OCTOPUS_URL + "/api/packages/raw"; - - var octopus_post_form = { - data: fs.createReadStream(npmPkgFilename), - }; - - request({ - url: packagesEndpoint, - method: "POST", - formData: octopus_post_form, - headers: { - "X-Octopus-ApiKey": process.env.OCTOPUS_API_KEY - } - }, function(err, response, body) { - // Upload callback - if (!err && response.statusCode == 201) { - console.log("Package uploaded to Octopus"); - } else { - console.error("Octopus upload failed", err, " status code ", response.statusCode); - process.exit(1); - } - }); - } -}); +const npmPkgFilename = `RedGate.HoneycombWebToolkit.Npm.${packageVersion}.zip`; +packageAndPost('npm-dist', npmPkgFilename); -console.log("teamcity.js complete"); \ No newline at end of file +console.log('teamcity.js complete'); \ No newline at end of file