deployment arch
This commit is contained in:
42
deploy.go
42
deploy.go
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user