initial commit [ci skip]
This commit is contained in:
115
engine/spec.go
Normal file
115
engine/spec.go
Normal file
@@ -0,0 +1,115 @@
|
||||
// Copyright 2019 Drone.IO Inc. All rights reserved.
|
||||
// Use of this source code is governed by the Polyform License
|
||||
// that can be found in the LICENSE file.
|
||||
|
||||
package engine
|
||||
|
||||
type (
|
||||
// Spec provides the pipeline spec. This provides the
|
||||
// required instructions for reproducible pipeline
|
||||
// execution.
|
||||
Spec struct {
|
||||
Platform Platform `json:"platform,omitempty"`
|
||||
Files []*File `json:"files,omitempty"`
|
||||
Steps []*Step `json:"steps,omitempty"`
|
||||
Volumes []*Volume `json:"volumes,omitempty"`
|
||||
Network Network `json:"network"`
|
||||
}
|
||||
|
||||
// Step defines a pipeline step.
|
||||
Step struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Command []string `json:"args,omitempty"`
|
||||
Detach bool `json:"detach,omitempty"`
|
||||
DependsOn []string `json:"depends_on,omitempty"`
|
||||
DNS []string `json:"dns,omitempty"`
|
||||
DNSSearch []string `json:"dns_search,omitempty"`
|
||||
Entrypoint []string `json:"entrypoint,omitempty"`
|
||||
Envs map[string]string `json:"environment,omitempty"`
|
||||
ExtraHosts []string `json:"extra_hosts,omitempty"`
|
||||
Files []*File `json:"files,omitempty"`
|
||||
IgnoreErr bool `json:"ignore_err,omitempty"`
|
||||
IgnoreStdout bool `json:"ignore_stderr,omitempty"`
|
||||
IgnoreStderr bool `json:"ignore_stdout,omitempty"`
|
||||
Image string `json:"image,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Network string `json:"network,omitempty"`
|
||||
Networks []string `json:"networks,omitempty"`
|
||||
Privileged bool `json:"privileged,omitempty"`
|
||||
Pull PullPolicy `json:"pull,omitempty"`
|
||||
RunPolicy RunPolicy `json:"run_policy,omitempty"`
|
||||
Secrets []*Secret `json:"secrets,omitempty"`
|
||||
User string `json:"user,omitempty"`
|
||||
Volumes []*VolumeMount `json:"volumes,omitempty"`
|
||||
WorkingDir string `json:"working_dir,omitempty"`
|
||||
}
|
||||
|
||||
// File defines a file that should be uploaded or
|
||||
// mounted somewhere in the step container or virtual
|
||||
// machine prior to command execution.
|
||||
File struct {
|
||||
Path string `json:"path,omitempty"`
|
||||
Mode uint32 `json:"mode,omitempty"`
|
||||
Data []byte `json:"data,omitempty"`
|
||||
IsDir bool `json:"is_dir,omitempty"`
|
||||
}
|
||||
|
||||
// Platform defines the target platform.
|
||||
Platform struct {
|
||||
OS string `json:"os,omitempty"`
|
||||
Arch string `json:"arch,omitempty"`
|
||||
Variant string `json:"variant,omitempty"`
|
||||
Version string `json:"version,omitempty"`
|
||||
}
|
||||
|
||||
// Secret represents a secret variable.
|
||||
Secret struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Env string `json:"env,omitempty"`
|
||||
Data []byte `json:"data,omitempty"`
|
||||
Mask bool `json:"mask,omitempty"`
|
||||
}
|
||||
|
||||
// State represents the process state.
|
||||
State struct {
|
||||
ExitCode int // Container exit code
|
||||
Exited bool // Container exited
|
||||
OOMKilled bool // Container is oom killed
|
||||
}
|
||||
|
||||
// Volume that can be mounted by containers.
|
||||
Volume struct {
|
||||
EmptyDir *VolumeEmptyDir `json:"temp,omitempty"`
|
||||
HostPath *VolumeHostPath `json:"host,omitempty"`
|
||||
}
|
||||
|
||||
// VolumeMount describes a mounting of a Volume
|
||||
// within a container.
|
||||
VolumeMount struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
}
|
||||
|
||||
// VolumeEmptyDir mounts a temporary directory from the
|
||||
// host node's filesystem into the container. This can
|
||||
// be used as a shared scratch space.
|
||||
VolumeEmptyDir struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Medium string `json:"medium,omitempty"`
|
||||
SizeLimit int64 `json:"size_limit,omitempty"`
|
||||
}
|
||||
|
||||
// VolumeHostPath mounts a file or directory from the
|
||||
// host node's filesystem into your container.
|
||||
VolumeHostPath struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
}
|
||||
|
||||
// Network that is created and attached to containers
|
||||
Network struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user