git-push-deploy-cli 0.1.0 → 0.1.1
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/README.md +66 -121
- package/dist/commands/deploy.d.ts +2 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +23 -1
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/init.d.ts +6 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +23 -202
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/logs.d.ts +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +19 -25
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +3 -35
- package/dist/commands/status.js.map +1 -1
- package/dist/config/types.d.ts +7 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.js +6 -12
- package/dist/index.js.map +1 -1
- package/dist/utils/shell.d.ts +6 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +9 -0
- package/dist/utils/shell.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/install.d.ts +0 -10
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -67
- package/dist/commands/install.js.map +0 -1
- package/dist/utils/pm2.d.ts +0 -39
- package/dist/utils/pm2.d.ts.map +0 -1
- package/dist/utils/pm2.js +0 -83
- package/dist/utils/pm2.js.map +0 -1
- package/dist/utils/process-manager.d.ts +0 -37
- package/dist/utils/process-manager.d.ts.map +0 -1
- package/dist/utils/process-manager.js +0 -17
- package/dist/utils/process-manager.js.map +0 -1
- package/dist/utils/systemd.d.ts +0 -34
- package/dist/utils/systemd.d.ts.map +0 -1
- package/dist/utils/systemd.js +0 -79
- package/dist/utils/systemd.js.map +0 -1
- package/templates/post-receive.sh +0 -55
package/dist/utils/systemd.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { exec, execOutput } from './shell.js';
|
|
2
|
-
/**
|
|
3
|
-
* Systemd Process Manager implementation
|
|
4
|
-
*
|
|
5
|
-
* Uses systemctl to manage services. The processName is expected to be
|
|
6
|
-
* a systemd service name (e.g., "myapp.service" or just "myapp").
|
|
7
|
-
*/
|
|
8
|
-
export class SystemdProcessManager {
|
|
9
|
-
name = 'systemd';
|
|
10
|
-
serviceName(name) {
|
|
11
|
-
return name.endsWith('.service') ? name : `${name}.service`;
|
|
12
|
-
}
|
|
13
|
-
restart(processName, options) {
|
|
14
|
-
const service = this.serviceName(processName);
|
|
15
|
-
exec(`sudo systemctl restart ${service}`, { silent: options?.silent });
|
|
16
|
-
}
|
|
17
|
-
list(options) {
|
|
18
|
-
// List all running services
|
|
19
|
-
return execOutput('systemctl list-units --type=service --state=running --no-pager');
|
|
20
|
-
}
|
|
21
|
-
save(options) {
|
|
22
|
-
// systemd auto-saves, but we can enable the service for boot
|
|
23
|
-
// This is a no-op for systemd as it manages state automatically
|
|
24
|
-
console.log('Note: systemd manages service state automatically.');
|
|
25
|
-
}
|
|
26
|
-
show(processName, options) {
|
|
27
|
-
const service = this.serviceName(processName);
|
|
28
|
-
return execOutput(`systemctl status ${service} --no-pager`);
|
|
29
|
-
}
|
|
30
|
-
exists(processName, options) {
|
|
31
|
-
const service = this.serviceName(processName);
|
|
32
|
-
try {
|
|
33
|
-
execOutput(`systemctl cat ${service} 2>/dev/null`);
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
asUser(user, command, options) {
|
|
41
|
-
// For systemd, we use systemctl directly (no user switching needed)
|
|
42
|
-
// The 'command' here should be a systemctl action like 'restart myapp'
|
|
43
|
-
exec(`sudo systemctl ${command}`, { silent: options?.silent });
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Enable service to start on boot
|
|
47
|
-
*/
|
|
48
|
-
enable(processName) {
|
|
49
|
-
const service = this.serviceName(processName);
|
|
50
|
-
exec(`sudo systemctl enable ${service}`, { silent: true });
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Disable service from starting on boot
|
|
54
|
-
*/
|
|
55
|
-
disable(processName) {
|
|
56
|
-
const service = this.serviceName(processName);
|
|
57
|
-
exec(`sudo systemctl disable ${service}`, { silent: true });
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Reload systemd daemon (after changing unit files)
|
|
61
|
-
*/
|
|
62
|
-
daemonReload() {
|
|
63
|
-
exec('sudo systemctl daemon-reload', { silent: true });
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Check if service is active
|
|
67
|
-
*/
|
|
68
|
-
isActive(processName) {
|
|
69
|
-
const service = this.serviceName(processName);
|
|
70
|
-
try {
|
|
71
|
-
const result = execOutput(`systemctl is-active ${service}`);
|
|
72
|
-
return result.trim() === 'active';
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=systemd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"systemd.js","sourceRoot":"","sources":["../../src/utils/systemd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,SAAS,CAAC;IAElB,WAAW,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,WAAmB,EAAE,OAA+B;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,0BAA0B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,OAA+B;QAClC,4BAA4B;QAC5B,OAAO,UAAU,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,OAA+B;QAClC,6DAA6D;QAC7D,gEAAgE;QAChE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,OAA+B;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC,oBAAoB,OAAO,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,WAAmB,EAAE,OAA+B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,UAAU,CAAC,iBAAiB,OAAO,cAAc,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,OAA+B;QACnE,oEAAoE;QACpE,uEAAuE;QACvE,IAAI,CAAC,kBAAkB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAmB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,yBAAyB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,WAAmB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,0BAA0B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAAmB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Post-receive hook template
|
|
3
|
-
# Copy this to your bare repo: hooks/post-receive
|
|
4
|
-
# Or use: git-deploy init <service>
|
|
5
|
-
|
|
6
|
-
set -e
|
|
7
|
-
|
|
8
|
-
# Configuration - adjust these values
|
|
9
|
-
SERVICE="my-service"
|
|
10
|
-
TARGET_DIR="/opt/myapp/my-service"
|
|
11
|
-
LOG_FILE="/var/log/deploy-my-service.log"
|
|
12
|
-
PM2_NAME="my-service"
|
|
13
|
-
PM2_HOME="/opt/myapp/.pm2"
|
|
14
|
-
PACKAGES=("my-service")
|
|
15
|
-
MAIN_PKG="my-service"
|
|
16
|
-
USER="myapp"
|
|
17
|
-
|
|
18
|
-
log() {
|
|
19
|
-
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | sudo tee -a "$LOG_FILE"
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
log "=== Deployment started ==="
|
|
23
|
-
|
|
24
|
-
while read oldrev newrev refname; do
|
|
25
|
-
BRANCH=$(echo "$refname" | sed 's|refs/heads/||')
|
|
26
|
-
log "Received push to branch: $BRANCH"
|
|
27
|
-
|
|
28
|
-
if [ "$BRANCH" != "main" ] && [ "$BRANCH" != "master" ]; then
|
|
29
|
-
log "Ignoring non-main branch"
|
|
30
|
-
continue
|
|
31
|
-
fi
|
|
32
|
-
|
|
33
|
-
# Extract packages using git archive
|
|
34
|
-
for pkg in "${PACKAGES[@]}"; do
|
|
35
|
-
log "Extracting $pkg..."
|
|
36
|
-
git archive "$BRANCH" "$pkg/" 2>/dev/null | sudo tar -x -C "$TARGET_DIR/" || true
|
|
37
|
-
done
|
|
38
|
-
|
|
39
|
-
# Set ownership
|
|
40
|
-
sudo chown -R $USER:$USER "$TARGET_DIR"
|
|
41
|
-
|
|
42
|
-
# Install dependencies
|
|
43
|
-
log "Installing dependencies..."
|
|
44
|
-
cd "$TARGET_DIR/$MAIN_PKG"
|
|
45
|
-
sudo -u $USER npm install --omit=dev 2>&1 | sudo tee -a "$LOG_FILE"
|
|
46
|
-
|
|
47
|
-
# Restart PM2
|
|
48
|
-
log "Restarting $PM2_NAME..."
|
|
49
|
-
sudo -u $USER PM2_HOME=$PM2_HOME pm2 restart "$PM2_NAME" --no-color 2>&1 | sudo tee -a "$LOG_FILE"
|
|
50
|
-
|
|
51
|
-
log "Current status:"
|
|
52
|
-
sudo -u $USER PM2_HOME=$PM2_HOME pm2 list --no-color 2>&1 | sudo tee -a "$LOG_FILE"
|
|
53
|
-
done
|
|
54
|
-
|
|
55
|
-
log "=== Deployment completed ==="
|