UNPKG

2.95 kBJavaScriptView Raw
1var nodemiral = require('nodemiral');
2var fs = require('fs');
3var path = require('path');
4var util = require('util');
5var _ = require('underscore');
6
7var SCRIPT_DIR = path.resolve(__dirname, '../../scripts/deploy');
8var TEMPLATES_DIR = path.resolve(__dirname, '../../templates/deploy');
9
10
11exports.deploy = function(bundlePath, env, config) {
12 var deployCheckWaitTime = 15;
13 var appName = config.appName;
14 var privateKey = config.privateKey;
15 var taskList = nodemiral.taskList("Deploy app '" + appName + "' (linux)");
16
17 taskList.execute("Create Project Directory",
18 {command: "mkdir -p /home/meteorup/" + appName + '/tmp/'});
19
20 taskList.copy('Uploading bundle ' + bundlePath, {
21 src: bundlePath,
22 dest: '/home/meteorup/' + appName + '/tmp/bundle.tar.gz',
23 progressBar: true
24 });
25
26 taskList.copy('Initializing start script', {
27 src: path.resolve(TEMPLATES_DIR, 'app.json'),
28 dest: '/home/meteorup/' + appName + '/app.json',
29 vars: {
30 appName: appName,
31
32 env: env,
33 }
34 });
35
36 deployAndVerify(taskList, appName, privateKey, deployCheckWaitTime);
37
38 return taskList;
39};
40
41exports.restart = function(config) {
42 var taskList = nodemiral.taskList("Restarting Application (linux)");
43
44 var appName = config.appName;
45 var port = config.env.PORT;
46 var deployCheckWaitTime = config.deployCheckWaitTime;
47
48 startAndVerify(taskList, appName, port, deployCheckWaitTime);
49
50 return taskList;
51};
52
53exports.stop = function(config) {
54 var taskList = nodemiral.taskList("Stopping Application (linux)");
55
56 //stopping
57 taskList.executeScript('Stopping app', {
58 script: path.resolve(SCRIPT_DIR, 'stop.sh'),
59 vars: {
60 appName: config.appName
61 }
62 });
63
64 return taskList;
65};
66
67exports.start = function(config) {
68 var taskList = nodemiral.taskList("Starting Application (linux)");
69
70 var appName = config.appName;
71 var port = config.env.PORT;
72 var deployCheckWaitTime = config.deployCheckWaitTime;
73
74 startAndVerify(taskList, appName, port, deployCheckWaitTime);
75
76 return taskList;
77};
78
79
80function startAndVerify(taskList, appName, port, deployCheckWaitTime) {
81 taskList.execute('Starting app', {
82 command: "bash /opt/" + appName + "/config/start.sh"
83 });
84
85 // verifying deployment
86 taskList.executeScript('Verifying deployment', {
87 script: path.resolve(SCRIPT_DIR, 'verify.sh'),
88 vars: {
89 deployCheckWaitTime: deployCheckWaitTime || 10,
90 appName: appName,
91 port: port
92 }
93 });
94}
95
96function deployAndVerify(taskList, appName, privateKey, deployCheckWaitTime) {
97 // deploying
98 taskList.executeScript('Invoking deployment process', {
99 script: path.resolve(SCRIPT_DIR, 'deploy.sh'),
100 vars: {
101 appName: appName,
102 privateKey: privateKey,
103 }
104 });
105
106 // verifying deployment
107 taskList.executeScript('Verifying deployment', {
108 script: path.resolve(SCRIPT_DIR, 'verify.sh'),
109 vars: {
110 deployCheckWaitTime: 10,
111 appName: appName,
112 }
113 });
114}