From fe48824093fd0caa287901b603fac05be4bc5e9c Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch
Date: Sun, 22 Dec 2024 09:00:02 +0100 Subject: WIP: Add an optional deployment stage --- acid.go | 236 +++++++++++++++++++++++++++++++++++++++++++++--------- acid.yaml.example | 7 +- go.mod | 10 ++- go.sum | 69 ++++++++++++++-- 4 files changed, 270 insertions(+), 52 deletions(-) diff --git a/acid.go b/acid.go index f938d02..a9589b8 100644 --- a/acid.go +++ b/acid.go @@ -21,6 +21,7 @@ import ( "os" "os/exec" "os/signal" + "path/filepath" "sort" "strconv" "strings" @@ -30,6 +31,7 @@ import ( "time" _ "github.com/mattn/go-sqlite3" + "github.com/pkg/sftp" "golang.org/x/crypto/ssh" "gopkg.in/yaml.v3" ) @@ -96,6 +98,7 @@ func (cf *ConfigProject) AutomaticRunners() (runners []string) { type ConfigProjectRunner struct { Setup string `yaml:"setup"` // project setup script (SSH) Build string `yaml:"build"` // project build script (SSH) + Deploy string `yaml:"deploy"` // project deploy script (local) Timeout string `yaml:"timeout"` // timeout duration } @@ -153,7 +156,8 @@ func giteaNewRequest(ctx context.Context, method, path string, body io.Reader) ( func getTasks(ctx context.Context, query string, args ...any) ([]Task, error) { rows, err := gDB.QueryContext(ctx, ` SELECT id, owner, repo, hash, runner, - state, detail, notified, runlog, tasklog FROM task `+query, args...) + state, detail, notified, + runlog, tasklog, deploylog FROM task `+query, args...) if err != nil { return nil, err } @@ -163,7 +167,8 @@ func getTasks(ctx context.Context, query string, args ...any) ([]Task, error) { for rows.Next() { var t Task err := rows.Scan(&t.ID, &t.Owner, &t.Repo, &t.Hash, &t.Runner, - &t.State, &t.Detail, &t.Notified, &t.RunLog, &t.TaskLog) + &t.State, &t.Detail, &t.Notified, + &t.RunLog, &t.TaskLog, &t.DeployLog) if err != nil { return nil, err } @@ -259,6 +264,10 @@ var templateTask = template.Must(template.New("tasks").Parse(`
{{printf "%s" .TaskLog}}{{end}} +{{if .DeployLog}} +
{{printf "%s" .DeployLog}}+{{end}}