deployment arch

This commit is contained in:
2026-01-13 12:19:13 +00:00
parent 10e7191c8f
commit ab077d45eb
2 changed files with 22 additions and 33 deletions

View File

@@ -21,7 +21,6 @@ const (
type pbToml struct {
Server serverConfig `toml:"server"`
PocketBase pocketBaseConfig `toml:"pocketbase"`
Deployment deploymentConfig `toml:"deployment"`
}
type serverConfig struct {
@@ -35,11 +34,6 @@ type pocketBaseConfig struct {
ServiceName string `toml:"service_name"`
}
type deploymentConfig struct {
ServiceDir string `toml:"service_dir"`
EnvironmentFile string `toml:"environment_file"`
}
func runDeploy() error {
cwd, err := os.Getwd()
if err != nil {
@@ -77,26 +71,16 @@ func runDeploy() error {
version = defaultPocketbaseVersion
}
serviceDirTemplate := cfg.Deployment.ServiceDir
if serviceDirTemplate == "" {
serviceDirTemplate = defaultServiceDirTemplate
}
envFileTemplate := cfg.Deployment.EnvironmentFile
if envFileTemplate == "" {
envFileTemplate = defaultEnvFileTemplate
}
serviceDir := renderServiceTemplate(serviceDirTemplate, serviceName)
envFile := renderServiceTemplate(envFileTemplate, serviceName)
unitServiceDir := renderServiceTemplate(serviceDirTemplate, "%i")
unitEnvFile := renderServiceTemplate(envFileTemplate, "%i")
serviceDir := renderServiceTemplate(defaultServiceDirTemplate, serviceName)
envFile := renderServiceTemplate(defaultEnvFileTemplate, serviceName)
unitServiceDir := renderServiceTemplate(defaultServiceDirTemplate, "%i")
unitEnvFile := renderServiceTemplate(defaultEnvFileTemplate, "%i")
step := 1
printStep(step, totalDeploySteps, "validating configuration")
step++
printStep(step, totalDeploySteps, "probing remote host")
remoteOS, err := runSSHOutput(serverIP, "uname -s")
remoteOS, err := runSSHOutput(serverIP, "/bin/uname -s")
if err != nil {
return fmt.Errorf("failed to determine remote OS: %w", err)
}
@@ -104,7 +88,7 @@ func runDeploy() error {
return fmt.Errorf("unsupported remote OS %q", remoteOS)
}
machineArch, err := runSSHOutput(serverIP, "uname -m")
machineArch, err := runSSHOutput(serverIP, "/bin/uname -m")
if err != nil {
return fmt.Errorf("failed to determine remote architecture: %w", err)
}
@@ -292,14 +276,14 @@ systemctl restart pb@%s
}
func runSSHCommand(server, script string) error {
cmd := exec.Command("ssh", "-o", "BatchMode=yes", fmt.Sprintf("root@%s", server), "bash", "-lc", script)
cmd := exec.Command("ssh", append(sshArgs(server), "bash", "-lc", script)...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
}
func runSSHOutput(server, script string) (string, error) {
cmd := exec.Command("ssh", "-o", "BatchMode=yes", fmt.Sprintf("root@%s", server), "bash", "-lc", script)
cmd := exec.Command("ssh", append(sshArgs(server), "bash", "-lc", script)...)
var out bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = os.Stderr
@@ -326,7 +310,7 @@ func syncLocalDirectories(server, remoteBase string, dirs []string) error {
}
remotePath := fmt.Sprintf("root@%s:%s/%s", server, remoteBase, dir)
cmd := exec.Command("rsync", "-az", "--delete", localPath+"/", remotePath)
cmd := exec.Command("rsync", "-e", "ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new", "-az", "--delete", localPath+"/", remotePath)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
@@ -335,3 +319,11 @@ func syncLocalDirectories(server, remoteBase string, dirs []string) error {
}
return nil
}
func sshArgs(server string) []string {
return []string{
"-o", "BatchMode=yes",
"-o", "StrictHostKeyChecking=accept-new",
fmt.Sprintf("root@%s", server),
}
}

13
main.go
View File

@@ -283,18 +283,15 @@ func init() {
}
func writePBConfig(path, serviceName string) error {
const tmpl = `[server]
const tmpl = `[pocketbase]
version = "%s"
service_name = "%s"
[server]
ip = "127.0.0.1"
port = 8090
domain = "example.com"
[pocketbase]
version = "%s"
service_name = "%s"
[deployment]
service_dir = "/root/pb/{service}"
environment_file = "/root/pb/{service}/.env"
`
return os.WriteFile(path, []byte(fmt.Sprintf(tmpl, defaultPocketbaseVersion, serviceName)), 0o644)
}