1 | var nodemiral = require('nodemiral');
|
2 | var fs = require('fs');
|
3 | var path = require('path');
|
4 | var util = require('util');
|
5 | var _ = require('underscore');
|
6 |
|
7 | var SCRIPT_DIR = path.resolve(__dirname, '../../scripts/deploy');
|
8 | var TEMPLATES_DIR = path.resolve(__dirname, '../../templates/deploy');
|
9 |
|
10 |
|
11 | exports.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 |
|
41 | exports.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 |
|
53 | exports.stop = function(config) {
|
54 | var taskList = nodemiral.taskList("Stopping Application (linux)");
|
55 |
|
56 |
|
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 |
|
67 | exports.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 |
|
80 | function startAndVerify(taskList, appName, port, deployCheckWaitTime) {
|
81 | taskList.execute('Starting app', {
|
82 | command: "bash /opt/" + appName + "/config/start.sh"
|
83 | });
|
84 |
|
85 |
|
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 |
|
96 | function deployAndVerify(taskList, appName, privateKey, deployCheckWaitTime) {
|
97 |
|
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 |
|
107 | taskList.executeScript('Verifying deployment', {
|
108 | script: path.resolve(SCRIPT_DIR, 'verify.sh'),
|
109 | vars: {
|
110 | deployCheckWaitTime: 10,
|
111 | appName: appName,
|
112 | }
|
113 | });
|
114 | }
|