zideploy 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/deploy.d.ts +14 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +143 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +79 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/config/mirrors.d.ts +13 -0
- package/dist/config/mirrors.d.ts.map +1 -0
- package/dist/config/mirrors.js +25 -0
- package/dist/config/mirrors.js.map +1 -0
- package/dist/deploy/detector.d.ts +4 -0
- package/dist/deploy/detector.d.ts.map +1 -0
- package/dist/deploy/detector.js +67 -0
- package/dist/deploy/detector.js.map +1 -0
- package/dist/deploy/direct-deploy.d.ts +6 -0
- package/dist/deploy/direct-deploy.d.ts.map +1 -0
- package/dist/deploy/direct-deploy.js +100 -0
- package/dist/deploy/direct-deploy.js.map +1 -0
- package/dist/deploy/docker-deploy.d.ts +5 -0
- package/dist/deploy/docker-deploy.d.ts.map +1 -0
- package/dist/deploy/docker-deploy.js +63 -0
- package/dist/deploy/docker-deploy.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +269 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/prompts/credentials.d.ts +4 -0
- package/dist/prompts/credentials.d.ts.map +1 -0
- package/dist/prompts/credentials.js +86 -0
- package/dist/prompts/credentials.js.map +1 -0
- package/dist/setup/docker.d.ts +5 -0
- package/dist/setup/docker.d.ts.map +1 -0
- package/dist/setup/docker.js +55 -0
- package/dist/setup/docker.js.map +1 -0
- package/dist/setup/mirrors.d.ts +6 -0
- package/dist/setup/mirrors.d.ts.map +1 -0
- package/dist/setup/mirrors.js +52 -0
- package/dist/setup/mirrors.js.map +1 -0
- package/dist/setup/nginx.d.ts +6 -0
- package/dist/setup/nginx.d.ts.map +1 -0
- package/dist/setup/nginx.js +87 -0
- package/dist/setup/nginx.js.map +1 -0
- package/dist/setup/nodejs.d.ts +6 -0
- package/dist/setup/nodejs.d.ts.map +1 -0
- package/dist/setup/nodejs.js +69 -0
- package/dist/setup/nodejs.js.map +1 -0
- package/dist/ssh/client.d.ts +18 -0
- package/dist/ssh/client.d.ts.map +1 -0
- package/dist/ssh/client.js +70 -0
- package/dist/ssh/client.js.map +1 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface DeployOptions {
|
|
2
|
+
host?: string;
|
|
3
|
+
port?: number;
|
|
4
|
+
user?: string;
|
|
5
|
+
password?: string;
|
|
6
|
+
location?: string;
|
|
7
|
+
ubuntuVersion?: string;
|
|
8
|
+
project?: string;
|
|
9
|
+
domain?: string;
|
|
10
|
+
path?: string;
|
|
11
|
+
appPort?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function runDeploy(opts: DeployOptions): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGlE"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.runDeploy = runDeploy;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const client_1 = require("../ssh/client");
|
|
43
|
+
const types_1 = require("../types");
|
|
44
|
+
const credentials_1 = require("../prompts/credentials");
|
|
45
|
+
const detector_1 = require("../deploy/detector");
|
|
46
|
+
const docker_deploy_1 = require("../deploy/docker-deploy");
|
|
47
|
+
const direct_deploy_1 = require("../deploy/direct-deploy");
|
|
48
|
+
const nginx_1 = require("../setup/nginx");
|
|
49
|
+
const nodejs_1 = require("../setup/nodejs");
|
|
50
|
+
const docker_1 = require("../setup/docker");
|
|
51
|
+
async function runDeploy(opts) {
|
|
52
|
+
console.log(chalk_1.default.cyan('\n=== ZiDeploy — Deploy Project ===\n'));
|
|
53
|
+
let serverCreds;
|
|
54
|
+
let config;
|
|
55
|
+
if (opts.host && opts.user && opts.password && opts.project && opts.domain && opts.path) {
|
|
56
|
+
serverCreds = {
|
|
57
|
+
host: opts.host,
|
|
58
|
+
port: opts.port ?? 22,
|
|
59
|
+
username: opts.user,
|
|
60
|
+
password: opts.password,
|
|
61
|
+
location: opts.location ?? 'global',
|
|
62
|
+
ubuntuVersion: opts.ubuntuVersion,
|
|
63
|
+
};
|
|
64
|
+
config = {
|
|
65
|
+
server: serverCreds,
|
|
66
|
+
projectName: opts.project,
|
|
67
|
+
clientDomain: opts.domain,
|
|
68
|
+
localProjectPath: opts.path,
|
|
69
|
+
appPort: opts.appPort ?? 3000,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
serverCreds = await (0, credentials_1.promptServerCredentials)({
|
|
74
|
+
host: opts.host,
|
|
75
|
+
port: opts.port,
|
|
76
|
+
username: opts.user,
|
|
77
|
+
location: opts.location,
|
|
78
|
+
});
|
|
79
|
+
config = await (0, credentials_1.promptDeployConfig)(serverCreds);
|
|
80
|
+
}
|
|
81
|
+
if (!fs.existsSync(config.localProjectPath)) {
|
|
82
|
+
console.error(chalk_1.default.red(`Error: project path does not exist: ${config.localProjectPath}`));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
const projectType = (0, detector_1.detectProjectType)(config.localProjectPath);
|
|
86
|
+
config.projectType = projectType;
|
|
87
|
+
console.log(chalk_1.default.yellow(`\nDetected project type: ${chalk_1.default.bold(projectType)}`));
|
|
88
|
+
console.log(chalk_1.default.yellow(`Connecting to ${serverCreds.host}:${serverCreds.port}...\n`));
|
|
89
|
+
const ssh = new client_1.SSHClient(serverCreds);
|
|
90
|
+
try {
|
|
91
|
+
await ssh.connect();
|
|
92
|
+
console.log(chalk_1.default.green(`Connected to ${serverCreds.host}\n`));
|
|
93
|
+
switch (projectType) {
|
|
94
|
+
case 'docker': {
|
|
95
|
+
await (0, docker_1.installDocker)(ssh, serverCreds);
|
|
96
|
+
const hasCompose = fs.existsSync(`${config.localProjectPath}/docker-compose.yml`) ||
|
|
97
|
+
fs.existsSync(`${config.localProjectPath}/docker-compose.yaml`);
|
|
98
|
+
if (hasCompose) {
|
|
99
|
+
await (0, docker_deploy_1.deployWithDockerCompose)(ssh, config);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
await (0, docker_deploy_1.deployWithDocker)(ssh, config);
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
case 'node': {
|
|
107
|
+
await (0, nodejs_1.installNodejs)(ssh, serverCreds);
|
|
108
|
+
await (0, nodejs_1.installPm2)(ssh);
|
|
109
|
+
await (0, direct_deploy_1.deployNode)(ssh, config);
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
case 'php': {
|
|
113
|
+
await (0, nodejs_1.installPhp)(ssh);
|
|
114
|
+
await (0, direct_deploy_1.deployPhp)(ssh, config);
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case 'static': {
|
|
118
|
+
await (0, direct_deploy_1.deployStatic)(ssh, config);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
default:
|
|
122
|
+
console.log(chalk_1.default.yellow('Could not detect project type automatically. Treating as Node.js.'));
|
|
123
|
+
await (0, nodejs_1.installNodejs)(ssh, serverCreds);
|
|
124
|
+
await (0, nodejs_1.installPm2)(ssh);
|
|
125
|
+
await (0, direct_deploy_1.deployNode)(ssh, config);
|
|
126
|
+
}
|
|
127
|
+
await (0, nginx_1.createSubdomain)(ssh, {
|
|
128
|
+
projectName: config.projectName,
|
|
129
|
+
appPort: config.appPort,
|
|
130
|
+
clientDomain: config.clientDomain,
|
|
131
|
+
});
|
|
132
|
+
console.log(chalk_1.default.green('\n✓ Deployment complete!'));
|
|
133
|
+
console.log(` Preview URL : ${chalk_1.default.cyan(`http://${config.projectName}.${types_1.PLATFORM_DOMAIN}`)}`);
|
|
134
|
+
if (config.clientDomain) {
|
|
135
|
+
console.log(` Custom domain: ${chalk_1.default.cyan(`http://${config.clientDomain}`)} (point DNS A record to ${serverCreds.host})`);
|
|
136
|
+
}
|
|
137
|
+
console.log();
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
ssh.disconnect();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE9D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runInit = runInit;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const client_1 = require("../ssh/client");
|
|
10
|
+
const credentials_1 = require("../prompts/credentials");
|
|
11
|
+
const mirrors_1 = require("../setup/mirrors");
|
|
12
|
+
const docker_1 = require("../setup/docker");
|
|
13
|
+
const nginx_1 = require("../setup/nginx");
|
|
14
|
+
const nodejs_1 = require("../setup/nodejs");
|
|
15
|
+
async function runInit(opts) {
|
|
16
|
+
console.log(chalk_1.default.cyan('\n=== ZiDeploy Server Initialization ===\n'));
|
|
17
|
+
let creds;
|
|
18
|
+
if (opts.host && opts.user && opts.password) {
|
|
19
|
+
creds = {
|
|
20
|
+
host: opts.host,
|
|
21
|
+
port: opts.port ?? 22,
|
|
22
|
+
username: opts.user,
|
|
23
|
+
password: opts.password,
|
|
24
|
+
location: opts.location ?? 'global',
|
|
25
|
+
ubuntuVersion: opts.ubuntuVersion,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
creds = await (0, credentials_1.promptServerCredentials)({
|
|
30
|
+
host: opts.host,
|
|
31
|
+
port: opts.port,
|
|
32
|
+
username: opts.user,
|
|
33
|
+
location: opts.location,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const { components } = await inquirer_1.default.prompt([
|
|
37
|
+
{
|
|
38
|
+
type: 'checkbox',
|
|
39
|
+
name: 'components',
|
|
40
|
+
message: 'What do you want to install?',
|
|
41
|
+
choices: [
|
|
42
|
+
{ name: 'Docker', value: 'docker', checked: true },
|
|
43
|
+
{ name: 'Nginx (for subdomain routing)', value: 'nginx', checked: true },
|
|
44
|
+
{ name: 'Node.js + PM2', value: 'nodejs', checked: true },
|
|
45
|
+
{ name: 'PHP + PHP-FPM', value: 'php', checked: false },
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
]);
|
|
49
|
+
console.log(chalk_1.default.yellow(`\nConnecting to ${creds.host}:${creds.port}...`));
|
|
50
|
+
const ssh = new client_1.SSHClient(creds);
|
|
51
|
+
try {
|
|
52
|
+
await ssh.connect();
|
|
53
|
+
console.log(chalk_1.default.green(`Connected to ${creds.host}\n`));
|
|
54
|
+
await ssh.sudo('apt-get update -y');
|
|
55
|
+
if (creds.location === 'ir') {
|
|
56
|
+
await (0, mirrors_1.configureUbuntuMirrors)(ssh, creds);
|
|
57
|
+
}
|
|
58
|
+
if (components.includes('docker')) {
|
|
59
|
+
await (0, docker_1.installDocker)(ssh, creds);
|
|
60
|
+
await (0, docker_1.installDockerCompose)(ssh);
|
|
61
|
+
}
|
|
62
|
+
if (components.includes('nginx')) {
|
|
63
|
+
await (0, nginx_1.installNginx)(ssh);
|
|
64
|
+
}
|
|
65
|
+
if (components.includes('nodejs')) {
|
|
66
|
+
await (0, nodejs_1.installNodejs)(ssh, creds);
|
|
67
|
+
await (0, nodejs_1.installPm2)(ssh);
|
|
68
|
+
}
|
|
69
|
+
if (components.includes('php')) {
|
|
70
|
+
await (0, nodejs_1.installPhp)(ssh);
|
|
71
|
+
}
|
|
72
|
+
console.log(chalk_1.default.green('\n✓ Server initialization complete!'));
|
|
73
|
+
console.log(chalk_1.default.gray(` Server ${creds.host} is ready for deployments.\n`));
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
ssh.disconnect();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UbuntuVersion } from '../types';
|
|
2
|
+
export declare const CHABOKAN_MIRROR_BASE = "https://mirror2.chabokan.net";
|
|
3
|
+
export declare const NPM_MIRROR: {
|
|
4
|
+
registry: string;
|
|
5
|
+
original: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const DOCKER_MIRROR: {
|
|
8
|
+
registryMirrors: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare const UBUNTU_MIRROR_BASE = "https://mirror2.chabokan.net/ubuntu";
|
|
11
|
+
export declare function getUbuntuMirrorLines(version: UbuntuVersion): string;
|
|
12
|
+
export declare function getUbuntuSourcesList(version: UbuntuVersion): string;
|
|
13
|
+
//# sourceMappingURL=mirrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirrors.d.ts","sourceRoot":"","sources":["../../src/config/mirrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE,eAAO,MAAM,UAAU;;;CAGtB,CAAC;AAEF,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,wCAAmC,CAAC;AAEnE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAEnE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UBUNTU_MIRROR_BASE = exports.DOCKER_MIRROR = exports.NPM_MIRROR = exports.CHABOKAN_MIRROR_BASE = void 0;
|
|
4
|
+
exports.getUbuntuMirrorLines = getUbuntuMirrorLines;
|
|
5
|
+
exports.getUbuntuSourcesList = getUbuntuSourcesList;
|
|
6
|
+
exports.CHABOKAN_MIRROR_BASE = 'https://mirror2.chabokan.net';
|
|
7
|
+
exports.NPM_MIRROR = {
|
|
8
|
+
registry: `${exports.CHABOKAN_MIRROR_BASE}/npm/`,
|
|
9
|
+
original: 'https://registry.npmjs.org/',
|
|
10
|
+
};
|
|
11
|
+
exports.DOCKER_MIRROR = {
|
|
12
|
+
registryMirrors: [exports.CHABOKAN_MIRROR_BASE],
|
|
13
|
+
};
|
|
14
|
+
exports.UBUNTU_MIRROR_BASE = `${exports.CHABOKAN_MIRROR_BASE}/ubuntu`;
|
|
15
|
+
function getUbuntuMirrorLines(version) {
|
|
16
|
+
return [
|
|
17
|
+
`deb [trusted=yes] ${exports.UBUNTU_MIRROR_BASE} ${version} main universe`,
|
|
18
|
+
`deb [trusted=yes] ${exports.UBUNTU_MIRROR_BASE} ${version}-updates main universe`,
|
|
19
|
+
`deb [trusted=yes] ${exports.UBUNTU_MIRROR_BASE} ${version}-security main universe`,
|
|
20
|
+
].join('\n');
|
|
21
|
+
}
|
|
22
|
+
function getUbuntuSourcesList(version) {
|
|
23
|
+
return getUbuntuMirrorLines(version);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=mirrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirrors.js","sourceRoot":"","sources":["../../src/config/mirrors.ts"],"names":[],"mappings":";;;AAeA,oDAMC;AAED,oDAEC;AAvBY,QAAA,oBAAoB,GAAG,8BAA8B,CAAC;AAEtD,QAAA,UAAU,GAAG;IACxB,QAAQ,EAAE,GAAG,4BAAoB,OAAO;IACxC,QAAQ,EAAE,6BAA6B;CACxC,CAAC;AAEW,QAAA,aAAa,GAAG;IAC3B,eAAe,EAAE,CAAC,4BAAoB,CAAC;CACxC,CAAC;AAEW,QAAA,kBAAkB,GAAG,GAAG,4BAAoB,SAAS,CAAC;AAEnE,SAAgB,oBAAoB,CAAC,OAAsB;IACzD,OAAO;QACL,qBAAqB,0BAAkB,IAAI,OAAO,gBAAgB;QAClE,qBAAqB,0BAAkB,IAAI,OAAO,wBAAwB;QAC1E,qBAAqB,0BAAkB,IAAI,OAAO,yBAAyB;KAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAsB;IACzD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/deploy/detector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAmBlE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOnE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.detectProjectType = detectProjectType;
|
|
37
|
+
exports.getAppEntryPoint = getAppEntryPoint;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
function detectProjectType(projectPath) {
|
|
41
|
+
const files = fs.readdirSync(projectPath);
|
|
42
|
+
if (files.includes('Dockerfile') || files.includes('docker-compose.yml') || files.includes('docker-compose.yaml')) {
|
|
43
|
+
return 'docker';
|
|
44
|
+
}
|
|
45
|
+
if (files.includes('go.mod')) {
|
|
46
|
+
return 'go';
|
|
47
|
+
}
|
|
48
|
+
if (files.includes('package.json')) {
|
|
49
|
+
return 'node';
|
|
50
|
+
}
|
|
51
|
+
if (files.includes('composer.json') || files.some(f => f.endsWith('.php'))) {
|
|
52
|
+
return 'php';
|
|
53
|
+
}
|
|
54
|
+
if (files.some(f => f.endsWith('.html') || f.endsWith('.htm'))) {
|
|
55
|
+
return 'static';
|
|
56
|
+
}
|
|
57
|
+
return 'unknown';
|
|
58
|
+
}
|
|
59
|
+
function getAppEntryPoint(projectPath) {
|
|
60
|
+
const pkg = path.join(projectPath, 'package.json');
|
|
61
|
+
if (fs.existsSync(pkg)) {
|
|
62
|
+
const json = JSON.parse(fs.readFileSync(pkg, 'utf-8'));
|
|
63
|
+
return json.main || json.scripts?.start?.replace('node ', '') || 'index.js';
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/deploy/detector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,8CAmBC;AAED,4CAOC;AAhCD,uCAAyB;AACzB,2CAA6B;AAG7B,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAClH,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;IAC9E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SSHClient } from '../ssh/client';
|
|
2
|
+
import { DeployConfig } from '../types';
|
|
3
|
+
export declare function deployNode(ssh: SSHClient, config: DeployConfig): Promise<void>;
|
|
4
|
+
export declare function deployPhp(ssh: SSHClient, config: DeployConfig): Promise<void>;
|
|
5
|
+
export declare function deployStatic(ssh: SSHClient, config: DeployConfig): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=direct-deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-deploy.d.ts","sourceRoot":"","sources":["../../src/deploy/direct-deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAe,MAAM,UAAU,CAAC;AAmBrD,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BpF;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BnF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBtF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deployNode = deployNode;
|
|
7
|
+
exports.deployPhp = deployPhp;
|
|
8
|
+
exports.deployStatic = deployStatic;
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const detector_1 = require("./detector");
|
|
11
|
+
const DEPLOY_BASE = '/var/www/zisites';
|
|
12
|
+
async function uploadFiles(ssh, config) {
|
|
13
|
+
const projectDir = `${DEPLOY_BASE}/${config.projectName}`;
|
|
14
|
+
const spinner = (0, ora_1.default)(`Uploading files to ${projectDir}...`).start();
|
|
15
|
+
try {
|
|
16
|
+
await ssh.sudo(`mkdir -p ${projectDir}`);
|
|
17
|
+
await ssh.putDirectory(config.localProjectPath, projectDir);
|
|
18
|
+
spinner.succeed('Files uploaded');
|
|
19
|
+
return projectDir;
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
spinner.fail('File upload failed');
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function deployNode(ssh, config) {
|
|
27
|
+
const projectDir = await uploadFiles(ssh, config);
|
|
28
|
+
let spinner = (0, ora_1.default)('Installing npm dependencies...').start();
|
|
29
|
+
try {
|
|
30
|
+
await ssh.exec(`cd ${projectDir} && npm install --production`);
|
|
31
|
+
spinner.succeed('npm install done');
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
spinner.fail('npm install failed');
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
const entryPoint = (0, detector_1.getAppEntryPoint)(config.localProjectPath) || 'index.js';
|
|
38
|
+
spinner = (0, ora_1.default)('Starting app with PM2...').start();
|
|
39
|
+
try {
|
|
40
|
+
await ssh.exec(`pm2 delete ${config.projectName} 2>/dev/null || true`);
|
|
41
|
+
await ssh.exec(`cd ${projectDir} && PORT=${config.appPort} pm2 start ${entryPoint} --name ${config.projectName} --update-env`);
|
|
42
|
+
await ssh.exec('pm2 save');
|
|
43
|
+
spinner.succeed(`App started with PM2 (port ${config.appPort})`);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
spinner.fail('PM2 start failed');
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function deployPhp(ssh, config) {
|
|
51
|
+
const projectDir = await uploadFiles(ssh, config);
|
|
52
|
+
const spinner = (0, ora_1.default)('Configuring PHP-FPM pool...').start();
|
|
53
|
+
try {
|
|
54
|
+
const phpVersion = (await ssh.exec('php -r "echo PHP_MAJOR_VERSION.\".\".PHP_MINOR_VERSION;"')).stdout.trim();
|
|
55
|
+
const poolConf = `[${config.projectName}]
|
|
56
|
+
user = www-data
|
|
57
|
+
group = www-data
|
|
58
|
+
listen = 127.0.0.1:${config.appPort}
|
|
59
|
+
listen.owner = www-data
|
|
60
|
+
listen.group = www-data
|
|
61
|
+
pm = dynamic
|
|
62
|
+
pm.max_children = 5
|
|
63
|
+
pm.start_servers = 2
|
|
64
|
+
pm.min_spare_servers = 1
|
|
65
|
+
pm.max_spare_servers = 3
|
|
66
|
+
chdir = ${projectDir}
|
|
67
|
+
`;
|
|
68
|
+
await ssh.sudo(`bash -c "cat > /etc/php/${phpVersion}/fpm/pool.d/${config.projectName}.conf << 'POOL_EOF'\n${poolConf}\nPOOL_EOF"`);
|
|
69
|
+
await ssh.sudo(`systemctl restart php${phpVersion}-fpm`);
|
|
70
|
+
spinner.succeed(`PHP-FPM pool configured on port ${config.appPort}`);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
spinner.fail('PHP-FPM configuration failed');
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function deployStatic(ssh, config) {
|
|
78
|
+
const projectDir = await uploadFiles(ssh, config);
|
|
79
|
+
const spinner = (0, ora_1.default)('Configuring Nginx for static files...').start();
|
|
80
|
+
try {
|
|
81
|
+
const staticConf = `server {
|
|
82
|
+
listen ${config.appPort};
|
|
83
|
+
root ${projectDir};
|
|
84
|
+
index index.html index.htm;
|
|
85
|
+
location / {
|
|
86
|
+
try_files $uri $uri/ /index.html;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
await ssh.sudo(`bash -c "cat > /etc/nginx/sites-available/${config.projectName}-static << 'STATIC_EOF'\n${staticConf}\nSTATIC_EOF"`);
|
|
91
|
+
await ssh.sudo(`ln -sf /etc/nginx/sites-available/${config.projectName}-static /etc/nginx/sites-enabled/`);
|
|
92
|
+
await ssh.sudo('nginx -t && systemctl reload nginx');
|
|
93
|
+
spinner.succeed(`Static site served on port ${config.appPort}`);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
spinner.fail('Static deployment failed');
|
|
97
|
+
throw err;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=direct-deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-deploy.js","sourceRoot":"","sources":["../../src/deploy/direct-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SSHClient } from '../ssh/client';
|
|
2
|
+
import { DeployConfig } from '../types';
|
|
3
|
+
export declare function deployWithDocker(ssh: SSHClient, config: DeployConfig): Promise<void>;
|
|
4
|
+
export declare function deployWithDockerCompose(ssh: SSHClient, config: DeployConfig): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=docker-deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-deploy.d.ts","sourceRoot":"","sources":["../../src/deploy/docker-deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC1F;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBjG"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deployWithDocker = deployWithDocker;
|
|
7
|
+
exports.deployWithDockerCompose = deployWithDockerCompose;
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const DEPLOY_BASE = '/var/www/zisites';
|
|
10
|
+
async function deployWithDocker(ssh, config) {
|
|
11
|
+
const projectDir = `${DEPLOY_BASE}/${config.projectName}`;
|
|
12
|
+
let spinner = (0, ora_1.default)(`Uploading project files to ${projectDir}...`).start();
|
|
13
|
+
try {
|
|
14
|
+
await ssh.sudo(`mkdir -p ${projectDir}`);
|
|
15
|
+
if (config.server.username !== 'root') {
|
|
16
|
+
await ssh.sudo(`chown ${config.server.username}:${config.server.username} ${projectDir}`);
|
|
17
|
+
}
|
|
18
|
+
await ssh.putDirectory(config.localProjectPath, projectDir);
|
|
19
|
+
spinner.succeed('Files uploaded');
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
spinner.fail('File upload failed');
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
spinner = (0, ora_1.default)('Building Docker image...').start();
|
|
26
|
+
try {
|
|
27
|
+
const imageName = `zisites_${config.projectName}`;
|
|
28
|
+
await ssh.sudo(`docker build -t ${imageName} ${projectDir}`);
|
|
29
|
+
spinner.succeed(`Docker image built: ${imageName}`);
|
|
30
|
+
spinner = (0, ora_1.default)('Starting Docker container...').start();
|
|
31
|
+
await ssh.sudo(`docker rm -f ${config.projectName} 2>/dev/null || true`);
|
|
32
|
+
await ssh.sudo(`docker run -d --name ${config.projectName} --restart unless-stopped -p ${config.appPort}:${config.appPort} ${imageName}`);
|
|
33
|
+
spinner.succeed(`Container running on port ${config.appPort}`);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
spinner.fail('Docker deployment failed');
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function deployWithDockerCompose(ssh, config) {
|
|
41
|
+
const projectDir = `${DEPLOY_BASE}/${config.projectName}`;
|
|
42
|
+
let spinner = (0, ora_1.default)(`Uploading project files to ${projectDir}...`).start();
|
|
43
|
+
try {
|
|
44
|
+
await ssh.sudo(`mkdir -p ${projectDir}`);
|
|
45
|
+
await ssh.putDirectory(config.localProjectPath, projectDir);
|
|
46
|
+
spinner.succeed('Files uploaded');
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
spinner.fail('File upload failed');
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
spinner = (0, ora_1.default)('Starting Docker Compose services...').start();
|
|
53
|
+
try {
|
|
54
|
+
await ssh.sudo(`docker compose -f ${projectDir}/docker-compose.yml down 2>/dev/null || true`);
|
|
55
|
+
await ssh.sudo(`docker compose -f ${projectDir}/docker-compose.yml up -d --build`);
|
|
56
|
+
spinner.succeed('Docker Compose services started');
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
spinner.fail('Docker Compose deployment failed');
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=docker-deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-deploy.js","sourceRoot":"","sources":["../../src/deploy/docker-deploy.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|