From 7820b0a1fbf9b034a5bc1676877c74a3fffc4ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Tre=CC=A8bacz?= Date: Mon, 8 Aug 2016 15:19:16 +0200 Subject: [PATCH] Add option to deploy prebuilt bundles --- README.md | 6 ++++ lib/actions.js | 77 ++++++++++++++++++++++++++++++-------------------- lib/helpers.js | 2 +- package.json | 2 +- 4 files changed, 55 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 81b617d..95d72c1 100644 --- a/README.md +++ b/README.md @@ -150,6 +150,12 @@ This will setup the server for the `mup` deployments. It will take around 2-5 mi This will bundle the Meteor project and deploy it to the server. +#### Deploying prebuilt bundle + +While deploying you can omit the building phase if you already have a prebuilt bundle. Just append its path to the deploy command: + + mup deploy [/path/to/bundle.tar.gz] + ### Additional Setup/Deploy Information #### Deploy Wait Time diff --git a/lib/actions.js b/lib/actions.js index 655925b..a2cd4d4 100644 --- a/lib/actions.js +++ b/lib/actions.js @@ -113,40 +113,57 @@ Actions.prototype.deploy = function() { var appPath = this.config.app; var enableUploadProgressBar = this.config.enableUploadProgressBar; var meteorBinary = this.config.meteorBinary; + var prebuiltBundle = process.argv.slice(3).join(" "); + if (prebuiltBundle && !fs.existsSync(prebuiltBundle)) { + console.error('Error: bundle not found!'.bold.red); + process.exit(1); + } - console.log('Building Started: ' + this.config.app); - buildApp(appPath, meteorBinary, buildLocation, function(err) { - if(err) { - process.exit(1); - } else { - var sessionsData = []; - _.forEach(self.sessionsMap, function (sessionsInfo) { - var taskListsBuilder = sessionsInfo.taskListsBuilder; - _.forEach(sessionsInfo.sessions, function (session) { - sessionsData.push({ - taskListsBuilder: taskListsBuilder, - session: session - }); + var deployFunc = function() { + var sessionsData = []; + _.forEach(self.sessionsMap, function (sessionsInfo) { + var taskListsBuilder = sessionsInfo.taskListsBuilder; + _.forEach(sessionsInfo.sessions, function (session) { + sessionsData.push({ + taskListsBuilder: taskListsBuilder, + session: session }); }); + }); - async.mapSeries( - sessionsData, - function (sessionData, callback) { - var session = sessionData.session; - var taskListsBuilder = sessionData.taskListsBuilder; - var env = _.extend({}, self.config.env, session._serverConfig.env); - var taskList = taskListsBuilder.deploy( - bundlePath, env, - deployCheckWaitTime, appName, enableUploadProgressBar); - taskList.run(session, function (summaryMap) { - callback(null, summaryMap); - }); - }, - whenAfterDeployed(buildLocation) - ); - } - }); + async.mapSeries( + sessionsData, + function (sessionData, callback) { + var session = sessionData.session; + var taskListsBuilder = sessionData.taskListsBuilder; + var env = _.extend({}, self.config.env, session._serverConfig.env); + var taskList = taskListsBuilder.deploy( + bundlePath, env, + deployCheckWaitTime, appName, enableUploadProgressBar); + taskList.run(session, function (summaryMap) { + callback(null, summaryMap); + }); + }, + whenAfterDeployed(buildLocation) + ); + } + + if (!prebuiltBundle) { + console.log('Building Started: ' + this.config.app); + console.log('Bundle path: ' + bundlePath); + buildApp(appPath, meteorBinary, buildLocation, function(err) { + if(err) { + process.exit(1); + } else { + deployFunc(); + } + }); + } + else { + console.log('Deploying prebuilt bundle: ' + bundlePath); + bundlePath = prebuiltBundle; + deployFunc(); + } }; Actions.prototype.reconfig = function() { diff --git a/lib/helpers.js b/lib/helpers.js index 7c501a3..9307e06 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -6,7 +6,7 @@ exports.printHelp = function() { console.error('init - Initialize a Meteor Up project'); console.error('setup - Setup the server'); console.error(''); - console.error('deploy - Deploy app to server'); + console.error('deploy [path] - Deploy app to server (optionally with prebuilt bundle.tar.gz)'); console.error('reconfig - Reconfigure the server and restart'); console.error(''); console.error('logs [-f -n] - Access logs'); diff --git a/package.json b/package.json index 963b86a..1394b78 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mup", - "version": "0.11.3", + "version": "0.11.4", "description": "Production Quality Meteor Deployments", "dependencies": { "async": "^0.9.0",