pipeline

package
v0.26.0-rc3 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2025 License: Apache-2.0 Imports: 16 Imported by: 8

Documentation

Overview

Package pipeline provides the defined pipeline types for Vela.

Usage:

import "github.com/go-vela/server/compiler/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"`
	Deployment  Deployment         `json:"deployment,omitempty"  yaml:"deployment,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

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

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"`
	ReportAs    string            `json:"report_as,omitempty"   yaml:"report_as,omitempty"`
	IDRequest   string            `json:"id_request,omitempty"  yaml:"id_request,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

func (c *Container) Empty() bool

Empty returns true if the provided container is empty.

func (*Container) Execute

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

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

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

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

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 Deployment

type Deployment struct {
	Targets    []string     `json:"targets,omitempty"    yaml:"targets,omitempty"`
	Parameters ParameterMap `json:"parameters,omitempty" yaml:"parameters,omitempty"`
}

Deployment is the pipeline representation of the deployment block for a pipeline.

swagger:model PipelineDeployment

func (*Deployment) Empty

func (d *Deployment) Empty() bool

Empty returns true if the provided deployment is empty.

func (*Deployment) Validate

func (d *Deployment) Validate(target string, inputParams map[string]string) error

Validate checks the build ruledata and parameters against the deployment configuration.

type Git

type Git struct {
	Token *Token `json:"token,omitempty" yaml:"token,omitempty"`
}

Git is the pipeline representation of git configurations for a pipeline.

swagger:model PipelineGit

func (*Git) Empty

func (g *Git) Empty() bool

Empty returns true if the provided struct is empty.

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 Parameter

type Parameter struct {
	Description string   `json:"description,omitempty" yaml:"description,omitempty"`
	Type        string   `json:"type,omitempty"        yaml:"type,omitempty"`
	Required    bool     `json:"required,omitempty"    yaml:"required,omitempty"`
	Options     []string `json:"options,omitempty"     yaml:"options,omitempty"`
	Min         int      `json:"min,omitempty"         yaml:"min,omitempty"`
	Max         int      `json:"max,omitempty"         yaml:"max,omitempty"`
}

Parameters is the pipeline representation of the deploy parameters from a deployment block in a pipeline.

swagger:model PipelineParameters

type ParameterMap

type ParameterMap map[string]*Parameter

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"`
	Sender   string   `json:"sender,omitempty"   yaml:"sender,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"`
	Label    []string `json:"label,omitempty"    yaml:"label,omitempty"`
	Instance string   `json:"instance,omitempty" yaml:"instance,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"`
	Sender   Ruletype `json:"sender,omitempty"   yaml:"sender,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"`
	Label    Ruletype `json:"label,omitempty"    yaml:"label,omitempty"`
	Instance Ruletype `json:"instance,omitempty" yaml:"instance,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

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) MatchMultiple

func (r *Ruletype) MatchMultiple(data []string, matcher, logic string) (bool, error)

MatchMultiple 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.

func (*Ruletype) MatchSingle

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

MatchSingle 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

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

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

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

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

func (s *Stage) Empty() bool

Empty returns true if the provided stage is empty.

func (*Stage) MergeEnv

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

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 Token

type Token struct {
	Repositories []string          `json:"repositories,omitempty" yaml:"repositories,omitempty"`
	Permissions  map[string]string `json:"permissions,omitempty"  yaml:"permissions,omitempty"`
}

Token is the pipeline representation of git token access configurations for a pipeline.

swagger:model PipelineGitToken

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

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

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