···
"github.com/docker/docker/pkg/stdcopy"
"golang.org/x/sync/errgroup"
"tangled.sh/tangled.sh/core/api/tangled"
21
+
"tangled.sh/tangled.sh/core/knotserver/notifier"
"tangled.sh/tangled.sh/core/log"
"tangled.sh/tangled.sh/core/spindle/db"
···
34
+
n *notifier.Notifier
35
-
func New(ctx context.Context, db *db.DB) (*Engine, error) {
37
+
func New(ctx context.Context, db *db.DB, n *notifier.Notifier) (*Engine, error) {
dcli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
···
l := log.FromContext(ctx).With("component", "spindle")
43
-
return &Engine{docker: dcli, l: l, db: db}, nil
45
+
return &Engine{docker: dcli, l: l, db: db, n: n}, nil
// SetupPipeline sets up a new network for the pipeline, and possibly volumes etc.
···
74
-
err = e.db.CreatePipeline(id)
76
+
err = e.db.CreatePipeline(id, e.n)
func (e *Engine) StartWorkflows(ctx context.Context, pipeline *tangled.Pipeline, id string) error {
e.l.Info("starting all workflows in parallel", "pipeline", id)
81
-
err := e.db.MarkPipelineRunning(id)
83
+
err := e.db.MarkPipelineRunning(id, e.n)
···
reader, err := e.docker.ImagePull(ctx, cimg, image.PullOptions{})
e.l.Error("pipeline failed!", "id", id, "error", err.Error())
104
-
err := e.db.MarkPipelineFailed(id, -1, err.Error())
106
+
err := e.db.MarkPipelineFailed(id, -1, err.Error(), e.n)
···
err = e.StartSteps(ctx, w.Steps, id, cimg)
e.l.Error("pipeline failed!", "id", id, "error", err.Error())
116
-
return e.db.MarkPipelineFailed(id, -1, err.Error())
118
+
return e.db.MarkPipelineFailed(id, -1, err.Error(), e.n)
···
e.l.Error("pipeline failed!", "id", id, "error", err.Error())
126
-
return e.db.MarkPipelineFailed(id, -1, err.Error())
128
+
return e.db.MarkPipelineFailed(id, -1, err.Error(), e.n)
e.l.Info("pipeline success!", "id", id)
130
-
return e.db.MarkPipelineSuccess(id)
132
+
return e.db.MarkPipelineSuccess(id, e.n)
// StartSteps starts all steps sequentially with the same base image.
···
e.l.Error("pipeline failed!", "id", id, "error", state.Error, "exit_code", state.ExitCode)
184
-
return e.db.MarkPipelineFailed(id, state.ExitCode, state.Error)
186
+
return e.db.MarkPipelineFailed(id, state.ExitCode, state.Error, e.n)