syntax

package
v1.3.1028 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2019 License: Apache-2.0 Imports: 15 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// TektonAPIVersion the APIVersion for using Tekton
	TektonAPIVersion = "tekton.dev/v1alpha1"

	// LabelStageName - the name for the label that will have the stage name on the Task.
	LabelStageName = "jenkins.io/task-stage-name"

	// DefaultStageNameForBuildPack - the name we use for the single stage created from build packs currently.
	DefaultStageNameForBuildPack = "from-build-pack"
)

Variables

This section is empty.

Functions

func MangleToRfc1035Label

func MangleToRfc1035Label(body string, suffix string) string

MangleToRfc1035Label - Task/Step names need to be RFC 1035/1123 compliant DNS labels, so we mangle them to make them compliant. Results should match the following regex and be no more than 63 characters long:

[a-z]([-a-z0-9]*[a-z0-9])?

cf. https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names body is assumed to have at least one ASCII letter. suffix is assumed to be alphanumeric and non-empty. TODO: Combine with kube.ToValidName (that function needs to handle lengths)

Types

type Agent

type Agent struct {
	// One of label or image is required.
	Label string `json:"label,omitempty"`
	Image string `json:"image,omitempty"`
}

Agent defines where the pipeline, stage, or step should run.

type EnvVar

type EnvVar struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

EnvVar is a key/value pair defining an environment variable

type Loop

type Loop struct {
	// The variable name.
	Variable string `json:"variable"`
	// The list of values to iterate over
	Values []string `json:"values"`
	// The steps to run
	Steps []Step `json:"steps"`
}

Loop is a special step that defines a variable, a list of possible values for that variable, and a set of steps to repeat for each value for the variable, with the variable set with that value in the environment for the execution of those steps.

type ParsedPipeline

type ParsedPipeline struct {
	Agent       Agent       `json:"agent,omitempty"`
	Environment []EnvVar    `json:"environment,omitempty"`
	Options     RootOptions `json:"options,omitempty"`
	Stages      []Stage     `json:"stages"`
	Post        []Post      `json:"post,omitempty"`
}

ParsedPipeline is the internal representation of the Pipeline, used to validate and create CRDs

func (*ParsedPipeline) GenerateCRDs

func (j *ParsedPipeline) GenerateCRDs(pipelineIdentifier string, buildIdentifier string, namespace string, podTemplates map[string]*corev1.Pod, taskParams []tektonv1alpha1.TaskParam) (*tektonv1alpha1.Pipeline, []*tektonv1alpha1.Task, *v1.PipelineStructure, error)

GenerateCRDs translates the Pipeline structure into the corresponding Pipeline and Task CRDs

func (*ParsedPipeline) Validate

func (j *ParsedPipeline) Validate() *apis.FieldError

Validate checks the parsed ParsedPipeline to find any errors in it. TODO: Improve validation to actually return all the errors via the nested errors? TODO: Add validation for the not-yet-supported-for-CRD-generation sections

type Post

type Post struct {
	// TODO: Conditional execution of something after a Task or Pipeline completes is not yet implemented
	Condition PostCondition `json:"condition"`
	Actions   []PostAction  `json:"actions"`
}

Post contains a PostCondition and one more actions to be executed after a pipeline or stage if the condition is met.

type PostAction

type PostAction struct {
	// TODO: Notifications are not yet supported in Build Pipeline per se.
	Name string `json:"name"`
	// Also, we'll need to do some magic to do type verification during translation - i.e., this action wants a number
	// for this option, so translate the string value for that option to a number.
	Options map[string]string `json:"options,omitempty"`
}

PostAction contains the name of a built-in post action and options to pass to that action.

type PostCondition

type PostCondition string

PostCondition is used to specify under what condition a post action should be executed.

const (
	PostConditionSuccess PostCondition = "success"
	PostConditionFailure PostCondition = "failure"
	PostConditionAlways  PostCondition = "always"
)

Probably extensible down the road

type RootOptions

type RootOptions struct {
	Timeout Timeout `json:"timeout,omitempty"`
	// TODO: Not yet implemented in build-pipeline
	Retry int8 `json:"retry,omitempty"`
}

RootOptions contains options that can be configured on either a pipeline or a stage

type Stage

type Stage struct {
	Name        string       `json:"name"`
	Agent       Agent        `json:"agent,omitempty"`
	Options     StageOptions `json:"options,omitempty"`
	Environment []EnvVar     `json:"environment,omitempty"`
	Steps       []Step       `json:"steps,omitempty"`
	Stages      []Stage      `json:"stages,omitempty"`
	Parallel    []Stage      `json:"parallel,omitempty"`
	Post        []Post       `json:"post,omitempty"`
}

Stage is a unit of work in a pipeline, corresponding either to a Task or a set of Tasks to be run sequentially or in parallel with common configuration.

type StageOptions

type StageOptions struct {
	RootOptions `json:",inline"`

	// TODO: Not yet implemented in build-pipeline
	Stash   Stash   `json:"stash,omitempty"`
	Unstash Unstash `json:"unstash,omitempty"`

	Workspace *string `json:"workspace,omitempty"`
}

StageOptions contains both options that can be configured on either a pipeline or a stage, via RootOptions, or stage-specific options.

type Stash

type Stash struct {
	Name string `json:"name"`
	// Eventually make this optional so that you can do volumes instead
	Files string `json:"files"`
}

Stash defines files to be saved for use in a later stage, marked with a name

type Step

type Step struct {
	// One of command, step, or loop is required.
	Command string `json:"command,omitempty"`
	// args is optional, but only allowed with command
	Arguments []string `json:"args,omitempty"`
	// dir is optional, but only allowed with command. Refers to subdirectory of workspace
	Dir string `json:"dir,omitempty"`

	Step string `json:"step,omitempty"`
	// options is optional, but only allowed with step
	// Also, we'll need to do some magic to do type verification during translation - i.e., this step wants a number
	// for this option, so translate the string value for that option to a number.
	Options map[string]string `json:"options,omitempty"`

	Loop Loop `json:"loop,omitempty"`

	// agent can be overridden on a step
	Agent Agent `json:"agent,omitempty"`

	// Image alows the docker image for a step to be specified
	Image string `json:"image,omitempty"`
}

Step defines a single step, from the author's perspective, to be executed within a stage.

type Timeout

type Timeout struct {
	Time int64 `json:"time"`
	// Has some sane default - probably seconds
	Unit TimeoutUnit `json:"unit,omitempty"`
}

Timeout defines how long a stage or pipeline can run before timing out.

type TimeoutUnit

type TimeoutUnit string

TimeoutUnit is used for calculating timeout duration

const (
	TimeoutUnitSeconds TimeoutUnit = "seconds"
	TimeoutUnitMinutes TimeoutUnit = "minutes"
	TimeoutUnitHours   TimeoutUnit = "hours"
	TimeoutUnitDays    TimeoutUnit = "days"
)

The available time units.

type Unstash

type Unstash struct {
	Name string `json:"name"`
	Dir  string `json:"dir,omitempty"`
}

Unstash defines a previously-defined stash to be copied into this stage's workspace

Jump to

Keyboard shortcuts

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