shyp 0.1.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/LICENSE +21 -0
- package/README.md +218 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +9 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +69 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/deploy.d.ts +4 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +104 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +97 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +10 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +150 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/logs.d.ts +5 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +56 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/ports.d.ts +2 -0
- package/dist/commands/ports.d.ts.map +1 -0
- package/dist/commands/ports.js +73 -0
- package/dist/commands/ports.js.map +1 -0
- package/dist/commands/start.d.ts +2 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +11 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +73 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +95 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +10 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +116 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/deploy.d.ts +12 -0
- package/dist/lib/deploy.d.ts.map +1 -0
- package/dist/lib/deploy.js +288 -0
- package/dist/lib/deploy.js.map +1 -0
- package/dist/lib/git.d.ts +24 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +82 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +7 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/nginx.d.ts +16 -0
- package/dist/lib/nginx.d.ts.map +1 -0
- package/dist/lib/nginx.js +312 -0
- package/dist/lib/nginx.js.map +1 -0
- package/dist/lib/pm2.d.ts +25 -0
- package/dist/lib/pm2.d.ts.map +1 -0
- package/dist/lib/pm2.js +106 -0
- package/dist/lib/pm2.js.map +1 -0
- package/dist/lib/state.d.ts +12 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +112 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/schemas/app.d.ts +272 -0
- package/dist/schemas/app.d.ts.map +1 -0
- package/dist/schemas/app.js +79 -0
- package/dist/schemas/app.js.map +1 -0
- package/dist/schemas/config.d.ts +508 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +62 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/engine.d.ts +772 -0
- package/dist/schemas/engine.d.ts.map +1 -0
- package/dist/schemas/engine.js +93 -0
- package/dist/schemas/engine.js.map +1 -0
- package/dist/schemas/index.d.ts +5 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +5 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/state.d.ts +416 -0
- package/dist/schemas/state.d.ts.map +1 -0
- package/dist/schemas/state.js +56 -0
- package/dist/schemas/state.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +51 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/webhook.d.ts +6 -0
- package/dist/server/webhook.d.ts.map +1 -0
- package/dist/server/webhook.js +163 -0
- package/dist/server/webhook.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +25 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +37 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +35 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/spinner.d.ts +4 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +20 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { readFile, readdir } from 'fs/promises';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { parse as parseYaml } from 'yaml';
|
|
5
|
+
import { parseGlobalConfig, parseAppConfig, parseEngineConfig, } from '../schemas/index.js';
|
|
6
|
+
import { CONFIG_FILE, APPS_DIR, ENGINES_DIR, } from '../utils/paths.js';
|
|
7
|
+
// Resolve environment variable references like ${VAR_NAME}
|
|
8
|
+
function resolveEnvVars(value) {
|
|
9
|
+
return value.replace(/\$\{([^}]+)\}/g, (_, varName) => {
|
|
10
|
+
return process.env[varName] || '';
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
// Recursively resolve env vars in object
|
|
14
|
+
function resolveEnvVarsDeep(obj) {
|
|
15
|
+
if (typeof obj === 'string') {
|
|
16
|
+
return resolveEnvVars(obj);
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(obj)) {
|
|
19
|
+
return obj.map(resolveEnvVarsDeep);
|
|
20
|
+
}
|
|
21
|
+
if (obj && typeof obj === 'object') {
|
|
22
|
+
const result = {};
|
|
23
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
24
|
+
result[key] = resolveEnvVarsDeep(value);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
// Load and parse a YAML file
|
|
31
|
+
async function loadYamlFile(path, parser) {
|
|
32
|
+
const content = await readFile(path, 'utf-8');
|
|
33
|
+
const data = parseYaml(content);
|
|
34
|
+
const resolved = resolveEnvVarsDeep(data);
|
|
35
|
+
return parser(resolved);
|
|
36
|
+
}
|
|
37
|
+
// Load global configuration
|
|
38
|
+
export async function loadGlobalConfig() {
|
|
39
|
+
if (!existsSync(CONFIG_FILE)) {
|
|
40
|
+
throw new Error(`Config file not found: ${CONFIG_FILE}`);
|
|
41
|
+
}
|
|
42
|
+
return loadYamlFile(CONFIG_FILE, parseGlobalConfig);
|
|
43
|
+
}
|
|
44
|
+
// Load all app configurations
|
|
45
|
+
export async function loadAppConfigs() {
|
|
46
|
+
const apps = new Map();
|
|
47
|
+
if (!existsSync(APPS_DIR)) {
|
|
48
|
+
return apps;
|
|
49
|
+
}
|
|
50
|
+
const files = await readdir(APPS_DIR);
|
|
51
|
+
for (const file of files) {
|
|
52
|
+
if (!file.endsWith('.yaml') && !file.endsWith('.yml'))
|
|
53
|
+
continue;
|
|
54
|
+
const path = join(APPS_DIR, file);
|
|
55
|
+
try {
|
|
56
|
+
const config = await loadYamlFile(path, parseAppConfig);
|
|
57
|
+
apps.set(config.name, config);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(`Failed to load ${file}:`, error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return apps;
|
|
64
|
+
}
|
|
65
|
+
// Load a single app configuration
|
|
66
|
+
export async function loadAppConfig(name) {
|
|
67
|
+
const yamlPath = join(APPS_DIR, `${name}.yaml`);
|
|
68
|
+
const ymlPath = join(APPS_DIR, `${name}.yml`);
|
|
69
|
+
const path = existsSync(yamlPath) ? yamlPath : existsSync(ymlPath) ? ymlPath : null;
|
|
70
|
+
if (!path)
|
|
71
|
+
return null;
|
|
72
|
+
return loadYamlFile(path, parseAppConfig);
|
|
73
|
+
}
|
|
74
|
+
// Load all engine configurations
|
|
75
|
+
export async function loadEngineConfigs() {
|
|
76
|
+
const engines = new Map();
|
|
77
|
+
if (!existsSync(ENGINES_DIR)) {
|
|
78
|
+
return engines;
|
|
79
|
+
}
|
|
80
|
+
const files = await readdir(ENGINES_DIR);
|
|
81
|
+
for (const file of files) {
|
|
82
|
+
if (!file.endsWith('.yaml') && !file.endsWith('.yml'))
|
|
83
|
+
continue;
|
|
84
|
+
const path = join(ENGINES_DIR, file);
|
|
85
|
+
try {
|
|
86
|
+
const config = await loadYamlFile(path, parseEngineConfig);
|
|
87
|
+
engines.set(config.name, config);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(`Failed to load engine ${file}:`, error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return engines;
|
|
94
|
+
}
|
|
95
|
+
// Load a single engine configuration
|
|
96
|
+
export async function loadEngineConfig(name) {
|
|
97
|
+
const yamlPath = join(ENGINES_DIR, `${name}.yaml`);
|
|
98
|
+
const ymlPath = join(ENGINES_DIR, `${name}.yml`);
|
|
99
|
+
const path = existsSync(yamlPath) ? yamlPath : existsSync(ymlPath) ? ymlPath : null;
|
|
100
|
+
if (!path)
|
|
101
|
+
return null;
|
|
102
|
+
return loadYamlFile(path, parseEngineConfig);
|
|
103
|
+
}
|
|
104
|
+
// Check if shyp is initialized
|
|
105
|
+
export function isInitialized() {
|
|
106
|
+
return existsSync(CONFIG_FILE);
|
|
107
|
+
}
|
|
108
|
+
// Get app config file path
|
|
109
|
+
export function getAppConfigPath(name) {
|
|
110
|
+
return join(APPS_DIR, `${name}.yaml`);
|
|
111
|
+
}
|
|
112
|
+
// Get engine config file path
|
|
113
|
+
export function getEngineConfigPath(name) {
|
|
114
|
+
return join(ENGINES_DIR, `${name}.yaml`);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AppConfig, EngineConfig, ModuleConfig } from '../schemas/index.js';
|
|
2
|
+
export interface DeployResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
deploymentId: string;
|
|
5
|
+
duration: number;
|
|
6
|
+
commit?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function deployApp(config: AppConfig): Promise<DeployResult>;
|
|
10
|
+
export declare function deployModule(engine: EngineConfig, moduleName: string, moduleConfig: ModuleConfig): Promise<DeployResult>;
|
|
11
|
+
export declare function deployEngine(engine: EngineConfig): Promise<DeployResult>;
|
|
12
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/lib/deploy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAQhF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAyCD,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CA2GxE;AAGD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,YAAY,CAAC,CAyFvB;AAGD,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAqF9E"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { mkdir, appendFile } from 'fs/promises';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import * as git from './git.js';
|
|
6
|
+
import * as pm2 from './pm2.js';
|
|
7
|
+
import { recordDeployment, generateDeploymentId } from './state.js';
|
|
8
|
+
import { APPS_LOG_DIR } from '../utils/paths.js';
|
|
9
|
+
import { log } from '../utils/logger.js';
|
|
10
|
+
// Ensure log directories exist
|
|
11
|
+
async function ensureLogDir(appName) {
|
|
12
|
+
const logDir = join(APPS_LOG_DIR, appName);
|
|
13
|
+
if (!existsSync(logDir)) {
|
|
14
|
+
await mkdir(logDir, { recursive: true });
|
|
15
|
+
}
|
|
16
|
+
return logDir;
|
|
17
|
+
}
|
|
18
|
+
// Log to deployment file
|
|
19
|
+
async function logToFile(path, message) {
|
|
20
|
+
const timestamp = new Date().toISOString();
|
|
21
|
+
await appendFile(path, `[${timestamp}] ${message}\n`);
|
|
22
|
+
}
|
|
23
|
+
// Run a shell command with logging
|
|
24
|
+
async function runCommand(cmd, options) {
|
|
25
|
+
log.command(cmd);
|
|
26
|
+
const { stdout, stderr } = await execa('bash', ['-c', cmd], {
|
|
27
|
+
cwd: options.cwd,
|
|
28
|
+
env: { ...process.env, ...options.env },
|
|
29
|
+
reject: false,
|
|
30
|
+
});
|
|
31
|
+
if (options.logFile) {
|
|
32
|
+
if (stdout)
|
|
33
|
+
await logToFile(options.logFile, `STDOUT: ${stdout}`);
|
|
34
|
+
if (stderr)
|
|
35
|
+
await logToFile(options.logFile, `STDERR: ${stderr}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Deploy a standard app
|
|
39
|
+
export async function deployApp(config) {
|
|
40
|
+
const deploymentId = generateDeploymentId();
|
|
41
|
+
const startTime = Date.now();
|
|
42
|
+
// Set up logging
|
|
43
|
+
const logDir = await ensureLogDir(config.name);
|
|
44
|
+
const logFile = join(logDir, `${deploymentId}.log`);
|
|
45
|
+
try {
|
|
46
|
+
await logToFile(logFile, `=== Starting deployment for ${config.name} ===`);
|
|
47
|
+
// Ensure repo is cloned
|
|
48
|
+
log.step('Checking repository...');
|
|
49
|
+
await git.ensureCloned(config.repo, config.path, {
|
|
50
|
+
branch: config.branch,
|
|
51
|
+
sshKey: config.sshKey,
|
|
52
|
+
});
|
|
53
|
+
// Pull latest changes
|
|
54
|
+
log.step('Pulling latest changes...');
|
|
55
|
+
await git.pull(config.path, config.branch, { sshKey: config.sshKey });
|
|
56
|
+
const commit = await git.getShortCommit(config.path);
|
|
57
|
+
await logToFile(logFile, `Pulled commit: ${commit}`);
|
|
58
|
+
// Stop existing process (for PM2 deployments)
|
|
59
|
+
if (config.deploy?.mode !== 'script') {
|
|
60
|
+
const pm2Name = config.pm2?.name || config.name;
|
|
61
|
+
log.step(`Stopping ${pm2Name}...`);
|
|
62
|
+
await pm2.stopProcess(pm2Name);
|
|
63
|
+
}
|
|
64
|
+
// Run build command
|
|
65
|
+
const buildCmd = config.build?.command || 'npm ci && npm run build';
|
|
66
|
+
log.step('Building...');
|
|
67
|
+
await runCommand(buildCmd, {
|
|
68
|
+
cwd: config.path,
|
|
69
|
+
env: config.env,
|
|
70
|
+
logFile,
|
|
71
|
+
});
|
|
72
|
+
// Start or run deploy script
|
|
73
|
+
if (config.deploy?.mode === 'script' && config.deploy.script) {
|
|
74
|
+
// Script-based deployment
|
|
75
|
+
log.step(`Running deploy script: ${config.deploy.script}`);
|
|
76
|
+
await runCommand(`chmod +x ${config.deploy.script} && ${config.deploy.script}`, {
|
|
77
|
+
cwd: config.path,
|
|
78
|
+
env: config.env,
|
|
79
|
+
logFile,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// PM2-based deployment
|
|
84
|
+
const pm2Name = config.pm2?.name || config.name;
|
|
85
|
+
const startCmd = config.start?.command || 'npm start';
|
|
86
|
+
log.step(`Starting ${pm2Name}...`);
|
|
87
|
+
// Delete old process and start fresh
|
|
88
|
+
await pm2.deleteProcess(pm2Name);
|
|
89
|
+
await pm2.startProcess(pm2Name, startCmd, {
|
|
90
|
+
cwd: config.path,
|
|
91
|
+
env: config.env,
|
|
92
|
+
instances: config.resources?.instances || 1,
|
|
93
|
+
maxMemory: config.resources?.memory || '512M',
|
|
94
|
+
});
|
|
95
|
+
await pm2.saveProcessList();
|
|
96
|
+
}
|
|
97
|
+
const duration = Date.now() - startTime;
|
|
98
|
+
await logToFile(logFile, `=== Deployment complete (${duration}ms) ===`);
|
|
99
|
+
// Record deployment
|
|
100
|
+
await recordDeployment(config.name, {
|
|
101
|
+
id: deploymentId,
|
|
102
|
+
commit,
|
|
103
|
+
timestamp: new Date().toISOString(),
|
|
104
|
+
status: 'success',
|
|
105
|
+
duration_ms: duration,
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
success: true,
|
|
109
|
+
deploymentId,
|
|
110
|
+
duration,
|
|
111
|
+
commit,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const duration = Date.now() - startTime;
|
|
116
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
117
|
+
await logToFile(logFile, `=== Deployment FAILED: ${errorMessage} ===`);
|
|
118
|
+
await recordDeployment(config.name, {
|
|
119
|
+
id: deploymentId,
|
|
120
|
+
timestamp: new Date().toISOString(),
|
|
121
|
+
status: 'failed',
|
|
122
|
+
duration_ms: duration,
|
|
123
|
+
error: errorMessage,
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
deploymentId,
|
|
128
|
+
duration,
|
|
129
|
+
error: errorMessage,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Deploy an engine module
|
|
134
|
+
export async function deployModule(engine, moduleName, moduleConfig) {
|
|
135
|
+
const fullName = `${engine.name}/${moduleName}`;
|
|
136
|
+
const deploymentId = generateDeploymentId();
|
|
137
|
+
const startTime = Date.now();
|
|
138
|
+
const logDir = await ensureLogDir(fullName.replace('/', '-'));
|
|
139
|
+
const logFile = join(logDir, `${deploymentId}.log`);
|
|
140
|
+
try {
|
|
141
|
+
await logToFile(logFile, `=== Starting module deployment for ${fullName} ===`);
|
|
142
|
+
// Determine module path
|
|
143
|
+
const modulePath = moduleConfig.subpath
|
|
144
|
+
? join(engine.server.path, moduleConfig.subpath)
|
|
145
|
+
: engine.server.path; // Module within engine directory
|
|
146
|
+
// If module has its own repo, clone/pull it
|
|
147
|
+
if (moduleConfig.repo) {
|
|
148
|
+
log.step('Updating module repository...');
|
|
149
|
+
await git.ensureCloned(moduleConfig.repo, modulePath, {
|
|
150
|
+
branch: moduleConfig.branch,
|
|
151
|
+
});
|
|
152
|
+
await git.pull(modulePath, moduleConfig.branch);
|
|
153
|
+
}
|
|
154
|
+
const commit = await git.getShortCommit(modulePath);
|
|
155
|
+
// Run deploy script or build
|
|
156
|
+
if (moduleConfig.deploy?.mode === 'script' && moduleConfig.deploy.script) {
|
|
157
|
+
log.step(`Running deploy script: ${moduleConfig.deploy.script}`);
|
|
158
|
+
const scriptPath = join(modulePath, moduleConfig.deploy.script);
|
|
159
|
+
await runCommand(`chmod +x ${scriptPath} && ${scriptPath}`, {
|
|
160
|
+
cwd: modulePath,
|
|
161
|
+
env: moduleConfig.env,
|
|
162
|
+
logFile,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else if (moduleConfig.build?.command) {
|
|
166
|
+
log.step('Building module...');
|
|
167
|
+
await runCommand(moduleConfig.build.command, {
|
|
168
|
+
cwd: modulePath,
|
|
169
|
+
env: moduleConfig.env,
|
|
170
|
+
logFile,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
// If PM2-based, restart the process
|
|
174
|
+
if (moduleConfig.deploy?.mode === 'pm2' && moduleConfig.deploy.pm2_name) {
|
|
175
|
+
log.step(`Restarting ${moduleConfig.deploy.pm2_name}...`);
|
|
176
|
+
await pm2.restartProcess(moduleConfig.deploy.pm2_name);
|
|
177
|
+
}
|
|
178
|
+
const duration = Date.now() - startTime;
|
|
179
|
+
await logToFile(logFile, `=== Module deployment complete (${duration}ms) ===`);
|
|
180
|
+
await recordDeployment(fullName, {
|
|
181
|
+
id: deploymentId,
|
|
182
|
+
commit,
|
|
183
|
+
timestamp: new Date().toISOString(),
|
|
184
|
+
status: 'success',
|
|
185
|
+
duration_ms: duration,
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
success: true,
|
|
189
|
+
deploymentId,
|
|
190
|
+
duration,
|
|
191
|
+
commit,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const duration = Date.now() - startTime;
|
|
196
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
197
|
+
await logToFile(logFile, `=== Module deployment FAILED: ${errorMessage} ===`);
|
|
198
|
+
await recordDeployment(fullName, {
|
|
199
|
+
id: deploymentId,
|
|
200
|
+
timestamp: new Date().toISOString(),
|
|
201
|
+
status: 'failed',
|
|
202
|
+
duration_ms: duration,
|
|
203
|
+
error: errorMessage,
|
|
204
|
+
});
|
|
205
|
+
return {
|
|
206
|
+
success: false,
|
|
207
|
+
deploymentId,
|
|
208
|
+
duration,
|
|
209
|
+
error: errorMessage,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Deploy the engine server itself
|
|
214
|
+
export async function deployEngine(engine) {
|
|
215
|
+
const deploymentId = generateDeploymentId();
|
|
216
|
+
const startTime = Date.now();
|
|
217
|
+
const logDir = await ensureLogDir(engine.name);
|
|
218
|
+
const logFile = join(logDir, `${deploymentId}.log`);
|
|
219
|
+
try {
|
|
220
|
+
await logToFile(logFile, `=== Starting engine deployment for ${engine.name} ===`);
|
|
221
|
+
const serverConfig = engine.server;
|
|
222
|
+
// Clone/pull engine repo
|
|
223
|
+
log.step('Updating engine repository...');
|
|
224
|
+
await git.ensureCloned(serverConfig.repo, serverConfig.path, {
|
|
225
|
+
branch: serverConfig.branch,
|
|
226
|
+
sshKey: serverConfig.sshKey,
|
|
227
|
+
});
|
|
228
|
+
await git.pull(serverConfig.path, serverConfig.branch, {
|
|
229
|
+
sshKey: serverConfig.sshKey,
|
|
230
|
+
});
|
|
231
|
+
const commit = await git.getShortCommit(serverConfig.path);
|
|
232
|
+
// Stop engine process
|
|
233
|
+
const pm2Name = serverConfig.pm2?.name || engine.name;
|
|
234
|
+
log.step(`Stopping ${pm2Name}...`);
|
|
235
|
+
await pm2.stopProcess(pm2Name);
|
|
236
|
+
// Build
|
|
237
|
+
const buildCmd = serverConfig.build?.command || 'npm ci';
|
|
238
|
+
log.step('Building engine...');
|
|
239
|
+
await runCommand(buildCmd, {
|
|
240
|
+
cwd: serverConfig.path,
|
|
241
|
+
logFile,
|
|
242
|
+
});
|
|
243
|
+
// Start engine
|
|
244
|
+
const startCmd = serverConfig.start?.command || 'npm start';
|
|
245
|
+
log.step(`Starting ${pm2Name}...`);
|
|
246
|
+
await pm2.deleteProcess(pm2Name);
|
|
247
|
+
await pm2.startProcess(pm2Name, startCmd, {
|
|
248
|
+
cwd: serverConfig.path,
|
|
249
|
+
instances: serverConfig.pm2?.instances || 1,
|
|
250
|
+
maxMemory: serverConfig.pm2?.memory || '2G',
|
|
251
|
+
});
|
|
252
|
+
await pm2.saveProcessList();
|
|
253
|
+
const duration = Date.now() - startTime;
|
|
254
|
+
await logToFile(logFile, `=== Engine deployment complete (${duration}ms) ===`);
|
|
255
|
+
await recordDeployment(engine.name, {
|
|
256
|
+
id: deploymentId,
|
|
257
|
+
commit,
|
|
258
|
+
timestamp: new Date().toISOString(),
|
|
259
|
+
status: 'success',
|
|
260
|
+
duration_ms: duration,
|
|
261
|
+
});
|
|
262
|
+
return {
|
|
263
|
+
success: true,
|
|
264
|
+
deploymentId,
|
|
265
|
+
duration,
|
|
266
|
+
commit,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
const duration = Date.now() - startTime;
|
|
271
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
272
|
+
await logToFile(logFile, `=== Engine deployment FAILED: ${errorMessage} ===`);
|
|
273
|
+
await recordDeployment(engine.name, {
|
|
274
|
+
id: deploymentId,
|
|
275
|
+
timestamp: new Date().toISOString(),
|
|
276
|
+
status: 'failed',
|
|
277
|
+
duration_ms: duration,
|
|
278
|
+
error: errorMessage,
|
|
279
|
+
});
|
|
280
|
+
return {
|
|
281
|
+
success: false,
|
|
282
|
+
deploymentId,
|
|
283
|
+
duration,
|
|
284
|
+
error: errorMessage,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/lib/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare function isGitRepo(path: string): boolean;
|
|
2
|
+
export declare function clone(repo: string, path: string, options?: {
|
|
3
|
+
branch?: string;
|
|
4
|
+
sshKey?: string;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function fetch(path: string, options?: {
|
|
7
|
+
sshKey?: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function reset(path: string, target: string, options?: {
|
|
10
|
+
sshKey?: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
export declare function pull(path: string, branch?: string, options?: {
|
|
13
|
+
sshKey?: string;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
export declare function getCurrentCommit(path: string): Promise<string>;
|
|
16
|
+
export declare function getShortCommit(path: string): Promise<string>;
|
|
17
|
+
export declare function getCurrentBranch(path: string): Promise<string>;
|
|
18
|
+
export declare function isGitAvailable(): Promise<boolean>;
|
|
19
|
+
export declare function getCommitMessage(path: string): Promise<string>;
|
|
20
|
+
export declare function ensureCloned(repo: string, path: string, options?: {
|
|
21
|
+
branch?: string;
|
|
22
|
+
sshKey?: string;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AAeA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAGD,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAUf;AAGD,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAKf;AAGD,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAKf;AAGD,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAe,EACvB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAGf;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAGD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAGD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
package/dist/lib/git.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { DEFAULT_SSH_KEY } from '../utils/paths.js';
|
|
5
|
+
// Git operations with SSH key support
|
|
6
|
+
function gitEnv(sshKey) {
|
|
7
|
+
const key = sshKey || DEFAULT_SSH_KEY;
|
|
8
|
+
return {
|
|
9
|
+
...process.env,
|
|
10
|
+
GIT_SSH_COMMAND: `ssh -i ${key} -o StrictHostKeyChecking=no`,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
// Check if a directory is a git repository
|
|
14
|
+
export function isGitRepo(path) {
|
|
15
|
+
return existsSync(join(path, '.git'));
|
|
16
|
+
}
|
|
17
|
+
// Clone a repository
|
|
18
|
+
export async function clone(repo, path, options = {}) {
|
|
19
|
+
const args = ['clone', repo, path];
|
|
20
|
+
if (options.branch) {
|
|
21
|
+
args.push('--branch', options.branch);
|
|
22
|
+
}
|
|
23
|
+
await execa('git', args, {
|
|
24
|
+
env: gitEnv(options.sshKey),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Fetch from remote
|
|
28
|
+
export async function fetch(path, options = {}) {
|
|
29
|
+
await execa('git', ['fetch', 'origin'], {
|
|
30
|
+
cwd: path,
|
|
31
|
+
env: gitEnv(options.sshKey),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// Reset to a branch/commit (hard reset)
|
|
35
|
+
export async function reset(path, target, options = {}) {
|
|
36
|
+
await execa('git', ['reset', '--hard', target], {
|
|
37
|
+
cwd: path,
|
|
38
|
+
env: gitEnv(options.sshKey),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Pull latest changes (fetch + reset)
|
|
42
|
+
export async function pull(path, branch = 'main', options = {}) {
|
|
43
|
+
await fetch(path, options);
|
|
44
|
+
await reset(path, `origin/${branch}`, options);
|
|
45
|
+
}
|
|
46
|
+
// Get current commit hash
|
|
47
|
+
export async function getCurrentCommit(path) {
|
|
48
|
+
const { stdout } = await execa('git', ['rev-parse', 'HEAD'], { cwd: path });
|
|
49
|
+
return stdout.trim();
|
|
50
|
+
}
|
|
51
|
+
// Get current commit hash (short)
|
|
52
|
+
export async function getShortCommit(path) {
|
|
53
|
+
const { stdout } = await execa('git', ['rev-parse', '--short', 'HEAD'], { cwd: path });
|
|
54
|
+
return stdout.trim();
|
|
55
|
+
}
|
|
56
|
+
// Get current branch
|
|
57
|
+
export async function getCurrentBranch(path) {
|
|
58
|
+
const { stdout } = await execa('git', ['branch', '--show-current'], { cwd: path });
|
|
59
|
+
return stdout.trim();
|
|
60
|
+
}
|
|
61
|
+
// Check if git is available
|
|
62
|
+
export async function isGitAvailable() {
|
|
63
|
+
try {
|
|
64
|
+
await execa('git', ['--version']);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Get commit message
|
|
72
|
+
export async function getCommitMessage(path) {
|
|
73
|
+
const { stdout } = await execa('git', ['log', '-1', '--pretty=%B'], { cwd: path });
|
|
74
|
+
return stdout.trim();
|
|
75
|
+
}
|
|
76
|
+
// Ensure repository is cloned
|
|
77
|
+
export async function ensureCloned(repo, path, options = {}) {
|
|
78
|
+
if (!isGitRepo(path)) {
|
|
79
|
+
await clone(repo, path, options);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AppConfig, EngineConfig, ModuleConfig } from '../schemas/index.js';
|
|
2
|
+
export declare function generateProxyConfig(config: AppConfig): string;
|
|
3
|
+
export declare function generateStaticConfig(config: AppConfig): string;
|
|
4
|
+
export declare function generateModuleConfig(engine: EngineConfig, moduleName: string, moduleConfig: ModuleConfig): string;
|
|
5
|
+
export declare function generateNginxConfig(config: AppConfig): string;
|
|
6
|
+
export declare function getNginxConfigName(name: string): string;
|
|
7
|
+
export declare function writeNginxConfig(name: string, content: string): Promise<void>;
|
|
8
|
+
export declare function enableNginxConfig(name: string): Promise<void>;
|
|
9
|
+
export declare function disableNginxConfig(name: string): Promise<void>;
|
|
10
|
+
export declare function testNginxConfig(): Promise<{
|
|
11
|
+
valid: boolean;
|
|
12
|
+
error?: string;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function reloadNginx(): Promise<void>;
|
|
15
|
+
export declare function isNginxAvailable(): Promise<boolean>;
|
|
16
|
+
//# sourceMappingURL=nginx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nginx.d.ts","sourceRoot":"","sources":["../../src/lib/nginx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIhF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAyF7D;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA2E9D;AAGD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,MAAM,CAuFR;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAK7D;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInF;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWnE;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpE;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOnF;AAGD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzD"}
|