Documentation
¶
Index ¶
- Constants
- Variables
- type ExecutionGraph
- func (g *ExecutionGraph) AddStage(stage *Stage) error
- func (g *ExecutionGraph) Duration() time.Duration
- func (g *ExecutionGraph) From(name string) []string
- func (g *ExecutionGraph) LastError() error
- func (g *ExecutionGraph) Node(name string) (*Stage, error)
- func (g *ExecutionGraph) Nodes() map[string]*Stage
- func (g *ExecutionGraph) To(name string) []string
- type Scheduler
- type Stage
Examples ¶
Constants ¶
const ( StatusWaiting = iota StatusRunning StatusSkipped StatusDone StatusError StatusCanceled )
Stage statuses
Variables ¶
var ErrCycleDetected = errors.New("cycle detected")
ErrCycleDetected occurs when added edge causes cycle to appear
Functions ¶
This section is empty.
Types ¶
type ExecutionGraph ¶
ExecutionGraph is a DAG whose nodes are Stages and edges are their dependencies
func NewExecutionGraph ¶
func NewExecutionGraph(stages ...*Stage) (*ExecutionGraph, error)
NewExecutionGraph creates new ExecutionGraph instance. It accepts zero or more stages and adds them to resulted graph
func (*ExecutionGraph) AddStage ¶
func (g *ExecutionGraph) AddStage(stage *Stage) error
AddStage adds Stage to ExecutionGraph. If newly added stage causes a cycle to appear in the graph it return an error
func (*ExecutionGraph) Duration ¶
func (g *ExecutionGraph) Duration() time.Duration
Duration returns execution duration
func (*ExecutionGraph) From ¶
func (g *ExecutionGraph) From(name string) []string
From returns stages that depend on the given stage
func (*ExecutionGraph) LastError ¶
func (g *ExecutionGraph) LastError() error
LastError returns latest error appeared during stages execution
func (*ExecutionGraph) Node ¶
func (g *ExecutionGraph) Node(name string) (*Stage, error)
Node returns stage by its name
func (*ExecutionGraph) Nodes ¶
func (g *ExecutionGraph) Nodes() map[string]*Stage
Nodes returns ExecutionGraph stages
func (*ExecutionGraph) To ¶
func (g *ExecutionGraph) To(name string) []string
To returns stages on whiсh given stage depends on
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
Scheduler executes ExecutionGraph
func NewScheduler ¶
NewScheduler create new Scheduler instance
func (*Scheduler) Schedule ¶
func (s *Scheduler) Schedule(g *ExecutionGraph) error
Schedule starts execution of the given ExecutionGraph
Example ¶
format := task.FromCommands("t1", "go fmt ./...") build := task.FromCommands("t2", "go build ./..") r, _ := runner.NewTaskRunner() s := NewScheduler(r) graph, err := NewExecutionGraph( &Stage{Name: "format", Task: format}, &Stage{Name: "build", Task: build, DependsOn: []string{"format"}}, ) if err != nil { return } err = s.Schedule(graph) if err != nil { fmt.Println(err) }
Output:
type Stage ¶
type Stage struct { Name string Condition string Task *task.Task Pipeline *ExecutionGraph DependsOn []string Dir string AllowFailure bool Status int32 Env variables.Container Variables variables.Container Start time.Time End time.Time }
Stage is a structure that describes execution stage
func (*Stage) ReadStatus ¶
ReadStatus is a helper to read stage's status atomically
func (*Stage) UpdateStatus ¶
UpdateStatus updates stage's status atomically