pipeline

package
v0.23.3 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: Apache-2.0 Imports: 14 Imported by: 28

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

View Source
var (
	// ErrInvalidEngine defines the error type when the
	// SecretEngine provided to the client is unsupported.
	ErrInvalidEngine = errors.New("invalid secret engine")
	// ErrInvalidOrg defines the error type when the
	// org in key does not equal the name of the organization.
	ErrInvalidOrg = errors.New("invalid organization in key")
	// ErrInvalidRepo defines the error type when the
	// repo in key does not equal the name of the repository.
	ErrInvalidRepo = errors.New("invalid repository in key")
	// ErrInvalidShared defines the error type when the
	// org in key does not equal the name of the team.
	ErrInvalidShared = errors.New("invalid team in key")
	// ErrInvalidPath defines the error type when the
	// path provided for a type (org, repo, shared) is invalid.
	ErrInvalidPath = errors.New("invalid secret path")
	// ErrInvalidName defines the error type when the name
	// contains restricted characters or is empty.
	ErrInvalidName = errors.New("invalid secret name")
)

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"`
	Environment raw.StringSliceMap `json:"environment,omitempty" yaml:"environment,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.

swagger:model PipelineBuild

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, error)

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 CancelOptions added in v0.22.0

type CancelOptions struct {
	Running       bool `yaml:"running,omitempty" json:"running,omitempty"`
	Pending       bool `yaml:"pending,omitempty" json:"pending,omitempty"`
	DefaultBranch bool `yaml:"default_branch,omitempty" json:"default_branch,omitempty"`
}

CancelOptions is the pipeline representation of the auto_cancel block for a pipeline.

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        string            `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"`
	User        string            `json:"user,omitempty"        yaml:"user,omitempty"`
}

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

swagger:model PipelineContainer

func ContainerFromContext

func ContainerFromContext(c context.Context) *Container

ContainerFromContext retrieves the container type from the context.

func (*Container) Empty added in v0.5.0

func (c *Container) Empty() bool

Empty returns true if the provided container is empty.

func (*Container) Execute added in v0.4.2

func (c *Container) Execute(r *RuleData) (bool, error)

Execute returns true when the provided ruledata matches the conditions when we should be running the container on the worker.

func (*Container) MergeEnv added in v0.7.3

func (c *Container) MergeEnv(environment map[string]string) error

MergeEnv takes a list of environment variables and attempts to set them in the container environment. If the environment variable already exists in the container, then this will overwrite the existing environment variable.

func (*Container) Sanitize added in v0.1.4

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

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

func (*Container) Substitute added in v0.7.0

func (c *Container) Substitute() error

Substitute replaces every reference (${VAR} or $${VAR}) to an environment variable in the container configuration with the corresponding value for that environment variable.

type ContainerSlice

type ContainerSlice []*Container

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

swagger:model PipelineContainerSlice

swagger:model PipelineContainerSlice

func (*ContainerSlice) Purge

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

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"`
	Clone       bool           `json:"clone,omitempty" yaml:"clone,omitempty"`
	Environment []string       `json:"environment,omitempty" yaml:"environment,omitempty"`
	AutoCancel  *CancelOptions `json:"auto_cancel,omitempty" yaml:"auto_cancel,omitempty"`
}

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

swagger:model PipelineMetadata

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.

swagger:model PipelinePort

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"`
	Parallel bool     `json:"-"                 yaml:"-"`
}

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"`
	Parallel bool     `json:"-"                 yaml:"-"`
}

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

swagger:model PipelineRules

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, matcher, op string) (bool, error)

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.

func (*Rules) NoStatus added in v0.4.3

func (r *Rules) NoStatus() bool

NoStatus returns true if the status field is empty.

type Ruleset

type Ruleset struct {
	If       Rules  `json:"if,omitempty"       yaml:"if,omitempty"`
	Unless   Rules  `json:"unless,omitempty"   yaml:"unless,omitempty"`
	Matcher  string `json:"matcher,omitempty"  yaml:"matcher,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.

swagger:model PipelineRuleset

func (*Ruleset) Match

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

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.

swagger:model PipelineRuletype

func (*Ruletype) Match added in v0.22.0

func (r *Ruletype) Match(data, matcher, logic string) (bool, error)

Match returns true when the provided ruletype matches the provided ruledata. When the provided ruletype is empty, the function returns true for the `and` operator and false for the `or` operator.

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"`
	Origin *Container `json:"origin,omitempty" yaml:"origin,omitempty"`
	Pull   string     `json:"pull,omitempty"   yaml:"pull,omitempty"`
}

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

swagger:model PipelineSecret

func SecretFromContext

func SecretFromContext(c context.Context) *Secret

SecretFromContext retrieves the Secret type from the context.

func (*Secret) ParseOrg added in v0.5.0

func (s *Secret) ParseOrg(org string) (string, string, error)

ParseOrg returns the parts (org, key) of the secret path when the secret is valid for a given organization.

func (*Secret) ParseRepo added in v0.5.0

func (s *Secret) ParseRepo(org, repo string) (string, string, string, error)

ParseRepo returns the parts (org, repo, key) of the secret path when the secret is valid for a given organization and repository.

func (*Secret) ParseShared added in v0.5.0

func (s *Secret) ParseShared() (string, string, string, error)

ParseShared returns the parts (org, team, key) of the secret path when the secret is valid for a given organization and team.

type SecretSlice

type SecretSlice []*Secret

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

swagger:model PipelineSecretSlice

func (*SecretSlice) Purge added in v0.5.0

func (s *SecretSlice) Purge(r *RuleData) (*SecretSlice, error)

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

type Stage

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

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

swagger:model PipelineStage

func StageFromContext

func StageFromContext(c context.Context) *Stage

StageFromContext retrieves the Stage type from the context.

func (*Stage) Empty added in v0.12.0

func (s *Stage) Empty() bool

Empty returns true if the provided stage is empty.

func (*Stage) MergeEnv added in v0.12.0

func (s *Stage) MergeEnv(environment map[string]string) error

MergeEnv takes a list of environment variables and attempts to set them in the stage environment. If the environment variable already exists in the stage, then this will overwrite the existing environment variable.

type StageSlice

type StageSlice []*Stage

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

swagger:model PipelineStageSlice

func (*StageSlice) Purge

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

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.

swagger:model PipelineStepSecret

type StepSecretSlice

type StepSecretSlice []*StepSecret

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

swagger:model PipelineStepSecretSlice

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.

swagger:model PipelineUlimit

type UlimitSlice

type UlimitSlice []*Ulimit

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

swagger:model PipelineUlimitSlice

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.

swagger:model PipelineVolume

type VolumeSlice

type VolumeSlice []*Volume

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

swagger:model PipelineVolumeSlice

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.

swagger:model PipelineWorker

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