types

package
v2.6.0 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2024 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoCliContextFound = errors.New("no CliContext in context found")

Functions

This section is empty.

Types

type Auth

type Auth struct {
	Username string `json:"username,omitempty"`
	Password string `json:"password,omitempty"`
}

Auth defines registry authentication credentials.

type Backend

type Backend interface {
	// Name returns the name of the backend.
	Name() string

	// IsAvailable check if the backend is available.
	IsAvailable(ctx context.Context) bool

	// Flags return the configuration flags of the backend.
	Flags() []cli.Flag

	// Load loads the backend engine.
	Load(ctx context.Context) (*BackendInfo, error)

	// SetupWorkflow sets up the workflow environment.
	SetupWorkflow(ctx context.Context, conf *Config, taskUUID string) error

	// StartStep starts the workflow step.
	StartStep(ctx context.Context, step *Step, taskUUID string) error

	// WaitStep waits for the workflow step to complete and returns
	// the completion results.
	WaitStep(ctx context.Context, step *Step, taskUUID string) (*State, error)

	// TailStep tails the workflow step logs.
	TailStep(ctx context.Context, step *Step, taskUUID string) (io.ReadCloser, error)

	// DestroyStep destroys the workflow step.
	DestroyStep(ctx context.Context, step *Step, taskUUID string) error

	// DestroyWorkflow destroys the workflow environment.
	DestroyWorkflow(ctx context.Context, conf *Config, taskUUID string) error
}

Backend defines a container orchestration backend and is used to create and manage container resources.

type BackendInfo

type BackendInfo struct {
	Platform string
}

BackendInfo represents the reported information of a loaded backend.

type Config

type Config struct {
	Stages   []*Stage   `json:"pipeline"` // workflow stages
	Networks []*Network `json:"networks"` // network definitions
	Volumes  []*Volume  `json:"volumes"`  // volume definitions
	Secrets  []*Secret  `json:"secrets"`  // secret definitions
}

Config defines the runtime configuration of a workflow.

type Conn

type Conn struct {
	Name    string   `json:"name"`
	Aliases []string `json:"aliases"`
}

Conn defines a container network connection.

type ContextKey

type ContextKey struct{}

ContextKey is just an empty struct. It exists so CliContext can be an immutable public variable with a unique type. It's immutable because nobody else can create a ContextKey, being unexported.

var CliContext ContextKey

CliContext is the context key to pass cli context to backends if needed.

type HostAlias

type HostAlias struct {
	Name string `json:"name,omitempty"`
	IP   string `json:"ip,omitempty"`
}

type Network

type Network struct {
	Name string `json:"name,omitempty"`
}

Network defines a container network.

type Port added in v2.2.0

type Port struct {
	Number   uint16 `json:"number,omitempty"`
	Protocol string `json:"protocol,omitempty"`
}

type Secret

type Secret struct {
	Name  string `json:"name,omitempty"`
	Value string `json:"value,omitempty"`
}

Secret defines a runtime secret.

type Stage

type Stage struct {
	Steps []*Step `json:"steps,omitempty"`
}

Stage denotes a collection of one or more steps.

type State

type State struct {
	// Container exit code
	ExitCode int `json:"exit_code"`
	// Container exited, true or false
	Exited bool `json:"exited"`
	// Container is oom killed, true or false
	OOMKilled bool `json:"oom_killed"`
	// Container error
	Error error
}

State defines a container state.

type Step

type Step struct {
	Name           string            `json:"name"`
	UUID           string            `json:"uuid"`
	Type           StepType          `json:"type,omitempty"`
	Image          string            `json:"image,omitempty"`
	Pull           bool              `json:"pull,omitempty"`
	Detached       bool              `json:"detach,omitempty"`
	Privileged     bool              `json:"privileged,omitempty"`
	WorkingDir     string            `json:"working_dir,omitempty"`
	Environment    map[string]string `json:"environment,omitempty"`
	Entrypoint     []string          `json:"entrypoint,omitempty"`
	Commands       []string          `json:"commands,omitempty"`
	ExtraHosts     []HostAlias       `json:"extra_hosts,omitempty"`
	Volumes        []string          `json:"volumes,omitempty"`
	Tmpfs          []string          `json:"tmpfs,omitempty"`
	Devices        []string          `json:"devices,omitempty"`
	Networks       []Conn            `json:"networks,omitempty"`
	DNS            []string          `json:"dns,omitempty"`
	DNSSearch      []string          `json:"dns_search,omitempty"`
	MemSwapLimit   int64             `json:"memswap_limit,omitempty"`
	MemLimit       int64             `json:"mem_limit,omitempty"`
	ShmSize        int64             `json:"shm_size,omitempty"`
	CPUQuota       int64             `json:"cpu_quota,omitempty"`
	CPUShares      int64             `json:"cpu_shares,omitempty"`
	CPUSet         string            `json:"cpu_set,omitempty"`
	OnFailure      bool              `json:"on_failure,omitempty"`
	OnSuccess      bool              `json:"on_success,omitempty"`
	Failure        string            `json:"failure,omitempty"`
	AuthConfig     Auth              `json:"auth_config,omitempty"`
	NetworkMode    string            `json:"network_mode,omitempty"`
	Ports          []Port            `json:"ports,omitempty"`
	BackendOptions map[string]any    `json:"backend_options,omitempty"`
}

Step defines a container process.

type StepType

type StepType string

StepType identifies the type of step.

const (
	StepTypeClone    StepType = "clone"
	StepTypeService  StepType = "service"
	StepTypePlugin   StepType = "plugin"
	StepTypeCommands StepType = "commands"
	StepTypeCache    StepType = "cache"
)

type Volume

type Volume struct {
	Name string `json:"name,omitempty"`
}

Volume defines a container volume.

Jump to

Keyboard shortcuts

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