fix provisioning

This commit is contained in:
pavel 2026-05-14 22:32:14 +02:00
commit f14bdb39d1

View file

@ -77,29 +77,9 @@ func (a *App) deployProjectFromMain(_ context.Context, p Project) error {
if err != nil { if err != nil {
return err return err
} }
repoDir := filepath.Join(projectDir, "repo") if err := a.syncProjectRepoFromMain(p, projectDir); err != nil {
if _, err := os.Stat(repoDir); err != nil {
return fmt.Errorf("repo checkout missing at %s (trigger deploy webhook/push first)", repoDir)
}
binDir := filepath.Join(projectDir, "bin")
if err := os.MkdirAll(binDir, 0o755); err != nil {
return err return err
} }
if _, err := os.Stat(repoDir); os.IsNotExist(err) {
if err := runCmd("git", "clone", "--branch", "main", "--single-branch", p.RepoURL, repoDir); err != nil {
return err
}
} else {
if err := runCmd("git", "-C", repoDir, "remote", "set-url", "origin", p.RepoURL); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "fetch", "origin", "main", "--prune"); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "reset", "--hard", "origin/main"); err != nil {
return err
}
}
if err := a.buildProjectBinary(p); err != nil { if err := a.buildProjectBinary(p); err != nil {
return err return err
} }
@ -111,6 +91,12 @@ func (a *App) buildProjectBinary(p Project) error {
if err != nil { if err != nil {
return err return err
} }
if p.RepoURL == "" {
return errors.New("project has no repo_url to build from")
}
if err := a.syncProjectRepoFromMain(p, projectDir); err != nil {
return err
}
repoDir := filepath.Join(projectDir, "repo") repoDir := filepath.Join(projectDir, "repo")
binDir := filepath.Join(projectDir, "bin") binDir := filepath.Join(projectDir, "bin")
if err := os.MkdirAll(binDir, 0o755); err != nil { if err := os.MkdirAll(binDir, 0o755); err != nil {
@ -128,3 +114,23 @@ func (a *App) buildProjectBinary(p Project) error {
} }
return nil return nil
} }
func (a *App) syncProjectRepoFromMain(p Project, projectDir string) error {
repoDir := filepath.Join(projectDir, "repo")
if _, err := os.Stat(repoDir); os.IsNotExist(err) {
if err := runCmd("git", "clone", "--branch", "main", "--single-branch", p.RepoURL, repoDir); err != nil {
return err
}
return nil
}
if err := runCmd("git", "-C", repoDir, "remote", "set-url", "origin", p.RepoURL); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "fetch", "origin", "main", "--prune"); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "reset", "--hard", "origin/main"); err != nil {
return err
}
return nil
}