feat: Mount SSH keys for Git authentication and disable interactive prompts in the update service.

This commit is contained in:
syntaxbullet
2026-01-30 15:21:41 +01:00
parent 1a3f5c6654
commit dabcb4cab3
2 changed files with 11 additions and 3 deletions

View File

@@ -58,6 +58,10 @@ services:
volumes: volumes:
# Project directory - allows git pull and rebuild # Project directory - allows git pull and rebuild
- .:/app/deploy - .:/app/deploy
# SSH Keys for git authentication
- ~/.ssh/id_rsa:/home/bun/.ssh/id_rsa:ro
- ~/.ssh/id_ed25519:/home/bun/.ssh/id_ed25519:ro
- ~/.ssh/known_hosts:/home/bun/.ssh/known_hosts:ro
working_dir: /app working_dir: /app
environment: environment:
- NODE_ENV=production - NODE_ENV=production

View File

@@ -24,7 +24,10 @@ async function execWithTimeout(
options: { cwd?: string } = {} options: { cwd?: string } = {}
): Promise<{ stdout: string; stderr: string }> { ): Promise<{ stdout: string; stderr: string }> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const process = exec(cmd, { cwd: options.cwd }, (error: ExecException | null, stdout: string, stderr: string) => { const child = exec(cmd, {
cwd: options.cwd,
env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }
}, (error: ExecException | null, stdout: string, stderr: string) => {
if (error) { if (error) {
reject(error); reject(error);
} else { } else {
@@ -33,11 +36,11 @@ async function execWithTimeout(
}); });
const timer = setTimeout(() => { const timer = setTimeout(() => {
process.kill("SIGTERM"); child.kill("SIGTERM");
reject(new Error(`Command timed out after ${timeoutMs}ms: ${cmd}`)); reject(new Error(`Command timed out after ${timeoutMs}ms: ${cmd}`));
}, timeoutMs); }, timeoutMs);
process.on("exit", () => clearTimeout(timer)); child.on("exit", () => clearTimeout(timer));
}); });
} }
@@ -572,6 +575,7 @@ export class UpdateService {
deployProcess.unref(); deployProcess.unref();
output += `🚀 Deploy triggered - container will restart\n`; output += `🚀 Deploy triggered - container will restart\n`;
console.log("Deploy triggered successfully:", output);
return { return {
success: true, success: true,