Documentation
¶
Overview ¶
Package manifest provides functionality to create Manifest files.
Index ¶
- Constants
- Variables
- func UnmarshalService(in []byte) (interface{}, error)
- type BackendService
- type BackendServiceConfig
- type BackendServiceProps
- type ContainerHealthCheck
- type ErrInvalidPipelineManifestVersion
- type ErrInvalidSvcManifestType
- type ErrUnknownProvider
- type GitHubProperties
- type LoadBalancedWebService
- type LoadBalancedWebServiceConfig
- type LoadBalancedWebServiceProps
- type LogConfig
- type PipelineManifest
- type PipelineSchemaMajorVersion
- type PipelineStage
- type Provider
- type RoutingRule
- type Service
- type ServiceImage
- type ServiceImageWithPort
- type ServiceProps
- type Sidecar
- type SidecarConfig
- type Source
- type TaskConfig
Constants ¶
const ( GithubProviderName = "GitHub" GithubSecretIdKeyName = "access_token_secret" )
const ( // LoadBalancedWebServiceType is a web service with a load balancer and Fargate as compute. LoadBalancedWebServiceType = "Load Balanced Web Service" // BackendServiceType is a service that cannot be accessed from the internet but can be reached from other services. BackendServiceType = "Backend Service" )
const (
// LogRetentionInDays is the default log retention time in days.
LogRetentionInDays = 30
)
Variables ¶
var ServiceTypes = []string{ LoadBalancedWebServiceType, BackendServiceType, }
ServiceTypes are the supported service manifest types.
Functions ¶
func UnmarshalService ¶
UnmarshalService deserializes the YAML input stream into a service manifest object. If an error occurs during deserialization, then returns the error. If the service type in the manifest is invalid, then returns an ErrInvalidManifestType.
Types ¶
type BackendService ¶
type BackendService struct {
Service `yaml:",inline"`
BackendServiceConfig `yaml:",inline"`
// Use *BackendServiceConfig because of https://github.com/imdario/mergo/issues/146
Environments map[string]*BackendServiceConfig `yaml:",flow"`
// contains filtered or unexported fields
}
BackendService holds the configuration to create a backend service manifest.
func NewBackendService ¶
func NewBackendService(props BackendServiceProps) *BackendService
NewBackendService applies the props to a default backend service configuration with minimal task sizes, single replica, no healthcheck, and then returns it.
func (BackendService) ApplyEnv ¶
func (s BackendService) ApplyEnv(envName string) (*BackendService, error)
ApplyEnv returns the service manifest with environment overrides. If the environment passed in does not have any overrides then it returns itself.
func (*BackendService) DockerfilePath ¶
func (s *BackendService) DockerfilePath() string
DockerfilePath returns the image build path.
func (*BackendService) MarshalBinary ¶
func (s *BackendService) MarshalBinary() ([]byte, error)
MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.
type BackendServiceConfig ¶
type BackendServiceConfig struct {
Image imageWithPortAndHealthcheck `yaml:",flow"`
TaskConfig `yaml:",inline"`
*LogConfig `yaml:"logging,flow"`
Sidecar `yaml:",inline"`
}
BackendServiceConfig holds the configuration that can be overriden per environments.
func (*BackendServiceConfig) LogConfigOpts ¶
func (bc *BackendServiceConfig) LogConfigOpts() *template.LogConfigOpts
LogConfigOpts converts the service's Firelens configuration into a format parsable by the templates pkg.
type BackendServiceProps ¶
type BackendServiceProps struct {
ServiceProps
Port uint16
HealthCheck *ContainerHealthCheck // Optional healthcheck configuration.
}
BackendServiceProps represents the configuration needed to create a backend service.
type ContainerHealthCheck ¶
type ContainerHealthCheck struct {
Command []string `yaml:"command"`
Interval *time.Duration `yaml:"interval"`
Retries *int `yaml:"retries"`
Timeout *time.Duration `yaml:"timeout"`
StartPeriod *time.Duration `yaml:"start_period"`
}
ContainerHealthCheck holds the configuration to determine if the service container is healthy. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html
type ErrInvalidPipelineManifestVersion ¶
type ErrInvalidPipelineManifestVersion struct {
// contains filtered or unexported fields
}
ErrInvalidPipelineManifestVersion occurs when the pipeline.yml file contains invalid schema version during unmarshalling.
func (*ErrInvalidPipelineManifestVersion) Error ¶
func (e *ErrInvalidPipelineManifestVersion) Error() string
func (*ErrInvalidPipelineManifestVersion) Is ¶
func (e *ErrInvalidPipelineManifestVersion) Is(target error) bool
Is compares the 2 errors. Only returns true if the errors are of the same type and contain the same information.
type ErrInvalidSvcManifestType ¶
type ErrInvalidSvcManifestType struct {
Type string
}
ErrInvalidSvcManifestType occurs when a user requested a manifest template type that doesn't exist.
func (*ErrInvalidSvcManifestType) Error ¶
func (e *ErrInvalidSvcManifestType) Error() string
type ErrUnknownProvider ¶
type ErrUnknownProvider struct {
// contains filtered or unexported fields
}
ErrUnknownProvider occurs CreateProvider() is called with configurations that do not map to any supported provider.
func (*ErrUnknownProvider) Error ¶
func (e *ErrUnknownProvider) Error() string
func (*ErrUnknownProvider) Is ¶
func (e *ErrUnknownProvider) Is(target error) bool
Is compares the 2 errors. Returns true if the errors are of the same type
type GitHubProperties ¶
type GitHubProperties struct {
// An example for OwnerAndRepository would be: "aws/copilot"
OwnerAndRepository string `structs:"repository" yaml:"repository"`
Branch string `structs:"branch" yaml:"branch"`
GithubSecretIdKeyName string `structs:"access_token_secret" yaml:"access_token_secret` // TODO fix naming
}
GitHubProperties contain information for configuring a Github source provider.
type LoadBalancedWebService ¶
type LoadBalancedWebService struct {
Service `yaml:",inline"`
LoadBalancedWebServiceConfig `yaml:",inline"`
// Use *LoadBalancedWebServiceConfig because of https://github.com/imdario/mergo/issues/146
Environments map[string]*LoadBalancedWebServiceConfig `yaml:",flow"` // Fields to override per environment.
// contains filtered or unexported fields
}
LoadBalancedWebService holds the configuration to build a container image with an exposed port that receives requests through a load balancer with AWS Fargate as the compute engine.
func NewLoadBalancedWebService ¶
func NewLoadBalancedWebService(input *LoadBalancedWebServiceProps) *LoadBalancedWebService
NewLoadBalancedWebService creates a new public load balanced web service, receives all the requests from the load balancer, has a single task with minimal CPU and memory thresholds, and sets the default health check path to "/".
func (LoadBalancedWebService) ApplyEnv ¶
func (s LoadBalancedWebService) ApplyEnv(envName string) (*LoadBalancedWebService, error)
ApplyEnv returns the service manifest with environment overrides. If the environment passed in does not have any overrides then it returns itself.
func (*LoadBalancedWebService) DockerfilePath ¶
func (s *LoadBalancedWebService) DockerfilePath() string
DockerfilePath returns the image build path.
func (*LoadBalancedWebService) MarshalBinary ¶
func (s *LoadBalancedWebService) MarshalBinary() ([]byte, error)
MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.
type LoadBalancedWebServiceConfig ¶
type LoadBalancedWebServiceConfig struct {
Image ServiceImageWithPort `yaml:",flow"`
RoutingRule `yaml:"http,flow"`
TaskConfig `yaml:",inline"`
*LogConfig `yaml:"logging,flow"`
Sidecar `yaml:",inline"`
}
LoadBalancedWebServiceConfig holds the configuration for a load balanced web service.
func (*LoadBalancedWebServiceConfig) LogConfigOpts ¶
func (lc *LoadBalancedWebServiceConfig) LogConfigOpts() *template.LogConfigOpts
LogConfigOpts converts the service's Firelens configuration into a format parsable by the templates pkg.
type LoadBalancedWebServiceProps ¶
type LoadBalancedWebServiceProps struct {
*ServiceProps
Path string
Port uint16
}
LoadBalancedWebServiceProps contains properties for creating a new load balanced fargate service manifest.
type LogConfig ¶
type LogConfig struct {
Image *string `yaml:"image"`
Destination map[string]string `yaml:"destination,flow"`
EnableMetadata *bool `yaml:"enableMetadata"`
SecretOptions map[string]string `yaml:"secretOptions"`
ConfigFile *string `yaml:"configFilePath"`
}
LogConfig holds configuration for Firelens to route your logs.
type PipelineManifest ¶
type PipelineManifest struct {
// Name of the pipeline
Name string `yaml:"name"`
Version PipelineSchemaMajorVersion `yaml:"version"`
Source *Source `yaml:"source"`
Stages []PipelineStage `yaml:"stages"`
// contains filtered or unexported fields
}
PipelineManifest contains information that defines the relationship and deployment ordering of your environments.
func CreatePipeline ¶
func CreatePipeline(pipelineName string, provider Provider, stageNames []string) (*PipelineManifest, error)
CreatePipeline returns a pipeline manifest object.
func UnmarshalPipeline ¶
func UnmarshalPipeline(in []byte) (*PipelineManifest, error)
UnmarshalPipeline deserializes the YAML input stream into a pipeline manifest object. It returns an error if any issue occurs during deserialization or the YAML input contains invalid fields.
func (*PipelineManifest) MarshalBinary ¶
func (m *PipelineManifest) MarshalBinary() ([]byte, error)
MarshalBinary serializes the pipeline manifest object into byte array that represents the pipeline.yml document.
type PipelineSchemaMajorVersion ¶
type PipelineSchemaMajorVersion int
PipelineSchemaMajorVersion is the major version number of the pipeline manifest schema
const ( // Ver1 is the current schema major version of the pipeline.yml file. Ver1 PipelineSchemaMajorVersion = iota + 1 )
type PipelineStage ¶
type PipelineStage struct {
Name string `yaml:"name"`
TestCommands []string `yaml:"test_commands,omitempty"`
}
PipelineStage represents a stage in the pipeline manifest
type Provider ¶
Provider defines a source of the artifacts that will be built and deployed via a pipeline
func NewProvider ¶
NewProvider creates a source provider based on the type of the provided provider-specific configurations
type RoutingRule ¶
type RoutingRule struct {
Path *string `yaml:"path"`
HealthCheckPath *string `yaml:"healthcheck"`
// TargetContainer is the container load balancer routes traffic to.
TargetContainer *string `yaml:"targetContainer"`
}
RoutingRule holds the path to route requests to the service.
type Service ¶
type Service struct {
Name *string `yaml:"name"`
Type *string `yaml:"type"` // must be one of the supported manifest types.
}
Service holds the basic data that every service manifest file needs to have.
type ServiceImage ¶
type ServiceImage struct {
Build *string `yaml:"build"` // Path to the Dockerfile.
}
ServiceImage represents the service's container image.
type ServiceImageWithPort ¶
type ServiceImageWithPort struct {
ServiceImage `yaml:",inline"`
Port *uint16 `yaml:"port"`
}
ServiceImageWithPort represents a container image with an exposed port.
type ServiceProps ¶
ServiceProps contains properties for creating a new service manifest.
type Sidecar ¶
type Sidecar struct {
Sidecars map[string]*SidecarConfig `yaml:"sidecars"`
}
Sidecar holds configuration for all sidecar containers in a service.
func (*Sidecar) SidecarsOpts ¶
func (s *Sidecar) SidecarsOpts() ([]*template.SidecarOpts, error)
SidecarsOpts converts the service's sidecar configuration into a format parsable by the templates pkg.
type SidecarConfig ¶
type SidecarConfig struct {
Port *string `yaml:"port"`
Image *string `yaml:"image"`
CredsParam *string `yaml:"credentialsParameter"`
}
SidecarConfig represents the configurable options for setting up a sidecar container.
type Source ¶
type Source struct {
ProviderName string `yaml:"provider"`
Properties map[string]interface{} `yaml:"properties"`
}
Source defines the source of the artifacts to be built and deployed.
type TaskConfig ¶
type TaskConfig struct {
CPU *int `yaml:"cpu"`
Memory *int `yaml:"memory"`
Count *int `yaml:"count"` // 0 is a valid value, so we want the default value to be nil.
Variables map[string]string `yaml:"variables"`
Secrets map[string]string `yaml:"secrets"`
}
TaskConfig represents the resource boundaries and environment variables for the containers in the task.