This commit is contained in:
pavel 2026-05-15 00:01:40 +02:00
commit 8d9b05608f
5 changed files with 59 additions and 11 deletions

View file

@ -81,7 +81,8 @@ func (a *App) deployProjectFromMain(_ context.Context, p Project) error {
if err := a.syncProjectRepoFromMain(p, projectDir); err != nil {
return err
}
if err := a.buildProjectBinary(p); err != nil {
repoDir := filepath.Join(projectDir, "repo")
if err := a.buildProjectBinaryFromRepoDir(p, repoDir); err != nil {
return err
}
return runSystemctlUser(p.UnixUser, "restart", p.ServiceName)
@ -99,6 +100,14 @@ func (a *App) buildProjectBinary(p Project) error {
return err
}
repoDir := filepath.Join(projectDir, "repo")
return a.buildProjectBinaryFromRepoDir(p, repoDir)
}
func (a *App) buildProjectBinaryFromRepoDir(p Project, repoDir string) error {
projectDir, err := a.projectDirFor(p)
if err != nil {
return err
}
binDir := filepath.Join(projectDir, "bin")
if err := os.MkdirAll(binDir, 0o755); err != nil {
return err
@ -121,20 +130,30 @@ func (a *App) buildProjectBinary(p Project) error {
func (a *App) syncProjectRepoFromMain(p Project, projectDir string) error {
repoDir := filepath.Join(projectDir, "repo")
plainRepoURL := strings.TrimSpace(p.RepoURL)
repoCloneURL := a.repoURLForGitAuth(p.RepoURL)
if _, err := os.Stat(repoDir); os.IsNotExist(err) {
if err := runCmd("git", "clone", "--branch", "main", "--single-branch", repoCloneURL, repoDir); err != nil {
if err := os.MkdirAll(repoDir, 0o755); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "init"); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "remote", "add", "origin", plainRepoURL); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "fetch", repoCloneURL, "main", "--prune"); err != nil {
return err
}
if err := runCmd("git", "-C", repoDir, "reset", "--hard", "FETCH_HEAD"); err != nil {
return err
}
return nil
}
if err := runCmd("git", "-C", repoDir, "remote", "set-url", "origin", repoCloneURL); err != nil {
if err := runCmd("git", "-C", repoDir, "fetch", repoCloneURL, "main", "--prune"); 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 {
if err := runCmd("git", "-C", repoDir, "reset", "--hard", "FETCH_HEAD"); err != nil {
return err
}
return nil