pipeline

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2020 License: Apache-2.0 Imports: 4 Imported by: 12

Documentation

Overview

Package pipeline provides the defined pipeline types for Vela.

Usage:

import "github.com/go-vela/types/pipeline"

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildWithContext

func BuildWithContext(c context.Context, b *Build) context.Context

BuildWithContext inserts the Build type to the context.

func ContainerWithContext

func ContainerWithContext(c context.Context, s *Container) context.Context

ContainerWithContext inserts the Container type to the context.

func SecretWithContext

func SecretWithContext(c context.Context, s *Secret) context.Context

SecretWithContext inserts the Secret type to the context.

func StageWithContext

func StageWithContext(c context.Context, s *Stage) context.Context

StageWithContext inserts the Stage type to the context.

Types

type Build

type Build struct {
	ID       string         `json:"id,omitempty"       yaml:"id,omitempty"`
	Version  string         `json:"version,omitempty"  yaml:"version,omitempty"`
	Metadata Metadata       `json:"metadata,omitempty" yaml:"metadata,omitempty"`
	Worker   Worker         `json:"worker,omitempty"   yaml:"worker,omitempty"`
	Secrets  SecretSlice    `json:"secrets,omitempty"  yaml:"secrets,omitempty"`
	Services ContainerSlice `json:"services,omitempty" yaml:"services,omitempty"`
	Stages   StageSlice     `json:"stages,omitempty"   yaml:"stages,omitempty"`
	Steps    ContainerSlice `json:"steps,omitempty"    yaml:"steps,omitempty"`
}

Build is the pipeline representation of a build for a pipeline.

func BuildFromContext

func BuildFromContext(c context.Context) *Build

BuildFromContext retrieves the Build type from the context.

func (*Build) Purge

func (b *Build) Purge(r *RuleData) *Build

Purge removes the steps, in every stage, that contain a ruleset that do not match the provided ruledata. If all steps from a stage are removed, then the entire stage is removed from the pipeline. If no stages are provided in the pipeline, then the function will remove the steps that have a ruleset that do not match the provided ruledata. If both stages and steps are provided, then an empty pipeline is returned.

func (*Build) Sanitize added in v0.4.0

func (b *Build) Sanitize(driver string) *Build

Sanitize cleans the fields for every step in each stage so they can be safely executed on the worker. If no stages are provided in the pipeline, then the function will sanitize the fields for every step in the pipeline. The fields are sanitized based off of the provided runtime driver which is setup on every worker. Currently, this function supports the following runtimes:

  • Docker
  • Kubernetes

type Container

type Container struct {
	ID          string            `json:"id,omitempty"          yaml:"id,omitempty"`
	Commands    []string          `json:"commands,omitempty"    yaml:"commands,omitempty"`
	Detach      bool              `json:"detach,omitempty"      yaml:"detach,omitempty"`
	Directory   string            `json:"directory,omitempty"   yaml:"directory,omitempty"`
	Entrypoint  []string          `json:"entrypoint,omitempty"  yaml:"entrypoint,omitempty"`
	Environment map[string]string `json:"environment,omitempty" yaml:"environment,omitempty"`
	ExitCode    int               `json:"exit_code,omitempty"   yaml:"exit_code,omitempty"`
	Image       string            `json:"image,omitempty"       yaml:"image,omitempty"`
	Name        string            `json:"name,omitempty"        yaml:"name,omitempty"`
	Needs       []string          `json:"needs,omitempty"       yaml:"needs,omitempty"`
	Networks    []string          `json:"networks,omitempty"    yaml:"networks,omitempty"`
	Number      int               `json:"number,omitempty"      yaml:"number,omitempty"`
	Ports       []string          `json:"ports,omitempty"       yaml:"ports,omitempty"`
	Privileged  bool              `json:"privileged,omitempty"  yaml:"privileged,omitempty"`
	Pull        bool              `json:"pull,omitempty"        yaml:"pull,omitempty"`
	Ruleset     Ruleset           `json:"ruleset,omitempty"     yaml:"ruleset,omitempty"`
	Secrets     StepSecretSlice   `json:"secrets,omitempty"     yaml:"secrets,omitempty"`
	Ulimits     UlimitSlice       `json:"ulimits,omitempty"     yaml:"ulimits,omitempty"`
	Volumes     VolumeSlice       `json:"volumes,omitempty"     yaml:"volumes,omitempty"`
}

Container is the pipeline representation of a Container in a pipeline.

func ContainerFromContext

func ContainerFromContext(c context.Context) *Container

ContainerFromContext retrieves the container type from the context.

type ContainerSlice

type ContainerSlice []*Container

ContainerSlice is the pipeline representation of the Containers block for a pipeline.

func (*ContainerSlice) Purge

func (c *ContainerSlice) Purge(r *RuleData) *ContainerSlice

Purge removes the Containers that have a ruleset that do not match the provided ruledata.

func (*ContainerSlice) Sanitize added in v0.4.0

func (c *ContainerSlice) Sanitize(driver string) *ContainerSlice

Sanitize cleans the fields for every step in the pipeline so they can be safely executed on the worker. The fields are sanitized based off of the provided runtime driver which is setup on every worker. Currently, this function supports the following runtimes:

  • Docker
  • Kubernetes

type Metadata

type Metadata struct {
	Template bool `json:"template,omitempty" yaml:"template,omitempty"`
}

Metadata is the yaml representation of the metadata block for a pipeline.

type Port

type Port struct {
	Port     int    `json:"port,omitempty"     yaml:"port,omitempty"`
	Host     int    `json:"host,omitempty"     yaml:"host,omitempty"`
	Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"`
}

Port is the pipeline representation of a port for a step in a pipeline.

type PortSlice

type PortSlice []*Port

PortSlice is the pipeline representation of the ports for a step in a pipeline.

type RuleData

type RuleData struct {
	Branch  string   `json:"branch,omitempty"  yaml:"branch,omitempty"`
	Comment string   `json:"comment,omitempty" yaml:"comment,omitempty"`
	Event   string   `json:"event,omitempty"   yaml:"event,omitempty"`
	Path    []string `json:"path,omitempty"    yaml:"path,omitempty"`
	Repo    string   `json:"repo,omitempty"    yaml:"repo,omitempty"`
	Status  string   `json:"status,omitempty"  yaml:"status,omitempty"`
	Tag     string   `json:"tag,omitempty"     yaml:"tag,omitempty"`
	Target  string   `json:"target,omitempty"  yaml:"target,omitempty"`
}

RuleData is the data to check our ruleset against for a step in a pipeline.

type Rules

type Rules struct {
	Branch  Ruletype `json:"branch,omitempty"  yaml:"branch,omitempty"`
	Comment Ruletype `json:"comment,omitempty" yaml:"comment,omitempty"`
	Event   Ruletype `json:"event,omitempty"   yaml:"event,omitempty"`
	Path    Ruletype `json:"path,omitempty"    yaml:"path,omitempty"`
	Repo    Ruletype `json:"repo,omitempty"    yaml:"repo,omitempty"`
	Status  Ruletype `json:"status,omitempty"  yaml:"status,omitempty"`
	Tag     Ruletype `json:"tag,omitempty"     yaml:"tag,omitempty"`
	Target  Ruletype `json:"target,omitempty"  yaml:"target,omitempty"`
}

Rules is the pipeline representation of the ruletypes from a ruleset block for a step in a pipeline.

func (*Rules) Empty

func (r *Rules) Empty() bool

Empty returns true if the provided ruletypes are empty.

func (*Rules) Match

func (r *Rules) Match(from *RuleData, op string) bool

Match returns true for the or operator when one of the ruletypes from the rules match the provided ruledata. Match returns true for the and operator when all of the ruletypes from the rules match the provided ruledata. For both operators, when none of the ruletypes from the rules match the provided ruledata, the function returns false.

type Ruleset

type Ruleset struct {
	If       Rules  `json:"if,omitempty"       yaml:"if,omitempty"`
	Unless   Rules  `json:"unless,omitempty"   yaml:"unless,omitempty"`
	Operator string `json:"operator,omitempty" yaml:"operator,omitempty"`
	Continue bool   `json:"continue,omitempty" yaml:"continue,omitempty"`
}

Ruleset is the pipeline representation of a ruleset block for a step in a pipeline.

func (*Ruleset) Match

func (r *Ruleset) Match(from *RuleData) bool

Match returns true when the provided ruledata matches the if rules and does not match any of the unless rules. When the provided if rules are empty, the function returns true. When both the provided if and unless rules are empty, the function also returns true.

type Ruletype

type Ruletype []string

Ruletype is the pipeline representation of an element for a ruleset block for a step in a pipeline.

func (*Ruletype) MatchAnd

func (r *Ruletype) MatchAnd(data string) bool

MatchAnd returns true when the provided ruletype matches the provided ruledata. When the provided ruletype is empty, the function returns true.

func (*Ruletype) MatchOr

func (r *Ruletype) MatchOr(data string) bool

MatchOr returns true when the provided ruletype matches the provided ruledata. When the provided ruletype is empty, the function returns false.

type Secret

type Secret struct {
	Name   string `json:"name,omitempty"   yaml:"name,omitempty"`
	Value  string `json:"value,omitempty"  yaml:"value,omitempty"`
	Key    string `json:"key,omitempty"    yaml:"key,omitempty"`
	Engine string `json:"engine,omitempty" yaml:"engine,omitempty"`
	Type   string `json:"type,omitempty"   yaml:"type,omitempty"`
}

Secret is the pipeline representation of a secret from the secrets block for a pipeline.

func SecretFromContext

func SecretFromContext(c context.Context) *Secret

SecretFromContext retrieves the Secret type from the context.

type SecretSlice

type SecretSlice []*Secret

SecretSlice is the pipeline representation of the secrets block for a pipeline.

type Stage

type Stage struct {
	Done  chan error     `json:"-"               yaml:"-"`
	Name  string         `json:"name,omitempty"  yaml:"name,omitempty"`
	Needs []string       `json:"needs,omitempty" yaml:"needs,omitempty"`
	Steps ContainerSlice `json:"steps,omitempty" yaml:"steps,omitempty"`
}

Stage is the pipeline representation of a stage in a pipeline.

func StageFromContext

func StageFromContext(c context.Context) *Stage

StageFromContext retrieves the Stage type from the context.

type StageSlice

type StageSlice []*Stage

StageSlice is the pipeline representation of the stages block for a pipeline.

func (*StageSlice) Purge

func (s *StageSlice) Purge(r *RuleData) *StageSlice

Purge removes the steps, from the stages, that have a ruleset that do not match the provided ruledata. If all steps from a stage are removed, then the entire stage is removed from the pipeline.

func (*StageSlice) Sanitize added in v0.4.0

func (s *StageSlice) Sanitize(driver string) *StageSlice

Sanitize cleans the fields for every step in each stage so they can be safely executed on the worker. The fields are sanitized based off of the provided runtime driver which is setup on every worker. Currently, this function supports the following runtimes:

  • Docker
  • Kubernetes

type StepSecret

type StepSecret struct {
	Source string `json:"source,omitempty" yaml:"source,omitempty"`
	Target string `json:"target,omitempty" yaml:"target,omitempty"`
}

StepSecret is the pipeline representation of a secret from a secrets block for a step in a pipeline.

type StepSecretSlice

type StepSecretSlice []*StepSecret

StepSecretSlice is the pipeline representation of the secrets block for a step in a pipeline.

type Ulimit

type Ulimit struct {
	Name string `json:"name,omitempty" yaml:"name,omitempty"`
	Soft int64  `json:"soft,omitempty" yaml:"soft,omitempty"`
	Hard int64  `json:"hard,omitempty" yaml:"hard,omitempty"`
}

Ulimit is the pipeline representation of a ulimit from the ulimits block for a step in a pipeline.

type UlimitSlice

type UlimitSlice []*Ulimit

UlimitSlice is the pipeline representation of the ulimits block for a step in a pipeline.

type Volume

type Volume struct {
	Source      string `json:"source,omitempty"      yaml:"source,omitempty"`
	Destination string `json:"destination,omitempty" yaml:"destination,omitempty"`
	AccessMode  string `json:"access_mode,omitempty" yaml:"access_mode,omitempty"`
}

Volume is the pipeline representation of a volume from a volumes block for a step in a pipeline.

type VolumeSlice

type VolumeSlice []*Volume

VolumeSlice is the pipeline representation of the volumes block for a step in a pipeline.

type Worker added in v0.2.0

type Worker struct {
	Flavor   string `json:"flavor,omitempty"   yaml:"flavor,omitempty"`
	Platform string `json:"platform,omitempty" yaml:"platform,omitempty"`
}

Worker is the yaml representation of the worker block for a pipeline.

func (*Worker) Empty added in v0.2.0

func (w *Worker) Empty() bool

Empty returns true if the provided worker is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL