Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InputValidation ¶
func InputValidation(sl validator.StructLevel)
Types ¶
type Config ¶
type Config struct {
// Set by container overrides
AccountID string `mapstructure:"account_id"` // The cloud account id to deploy to (AWS Account, Azure Subscription or GCP Project)
TargetAccountID string `mapstructure:"account_id"` // The target account being deployed to using the delivery framework (use ACCOUNT_ID env for compatibility)
RegionalRegions []string `mapstructure:"regional_regions"` // runiac will apply regional step deployments across these regions
PrimaryRegion string `mapstructure:"primary_region" required:"true"`
DryRun bool `mapstructure:"dry_run"` // DryRun will only execute up to Terraform plan, describing what will happen if deployed
UniqueExternalExecutionID string
DeploymentRing string `mapstructure:"deployment_ring"`
SelfDestroy bool `mapstructure:"self_destroy"` // Destroy will automatically execute Terraform Destroy after running deployments & tests
RegionGroup string
StepWhitelist []string `mapstructure:"step_whitelist"` // Target_Steps is a comma separated list of step ids to reflect the whitelisted steps to be executed, e.g. core#logging#final_destination_bucket, core#logging#bridge_azu
TargetAll bool // This is a global whitelist and overrules targeted tracks and targeted steps, primarily for dev and testing
Version string `mapstructure:"version"` // Version override
MaxRetries int `mapstructure:"max_retries"`
MaxTestRetries int `mapstructure:"max_test_retries"`
LogLevel string `mapstructure:"log_level"`
CoreAccounts CoreAccountsMap `mapstructure:"core_accounts"`
RegionGroups RegionGroupsMap `mapstructure:"region_grouprs"`
// Set at task definition creation
Namespace string `mapstructure:"namespace"` // The namespace to use in the Terraform run.
Environment string `mapstructure:"environment" required:"true"` // The name of the environment (e.g. pr, nonprod, prod)
Project string `mapstructure:"project" required:"true"`
}
Config struct is a representation of the environment variables passed into the container
type CoreAccountsMap ¶
func (*CoreAccountsMap) Decode ¶
func (ipd *CoreAccountsMap) Decode(value string) error
type DeployMetadata ¶
type DeployMetadata struct {
Version string `json:"version"`
Region string `json:"pr_region"`
BaseImage string `json:"base_image"`
}
DeployMetadata ...
type DeployResult ¶
type DeployResult int
const ( Fail DeployResult = iota Success Unstable Skipped Na // not applicable (e.g. no regional resources exist or step was disabled for execution) )
func (DeployResult) String ¶
func (d DeployResult) String() string
type Deployment ¶
Deployment ...
type RegionDeployType ¶
type RegionDeployType int
TFProviderType represents a Terraform provider type
const ( // Primary region typedeploys to the designated primary region, this usually consists of global resources such as IAM // In runiac world, this means it would only deploy the step's parent directory resources PrimaryRegionDeployType RegionDeployType = iota // Regional region type deploys to each of the targeted regions, this consists of region specific resources and does not include global resources such as IAM // In runiac world, this means it would only deploy the step's /regional/ directory resources to each of the targeted regions RegionalRegionDeployType )
func (RegionDeployType) String ¶
func (p RegionDeployType) String() string
type RegionGroupsMap ¶
func (*RegionGroupsMap) Decode ¶
func (ipd *RegionGroupsMap) Decode(value string) error
type Step ¶
type Step struct {
ID string
Name string
TrackName string
Dir string
ProgressionLevel int // 1, 2, 3...
RegionalResourcesExist bool
TestsExist bool
RegionalTestsExist bool // TODO: remove the need for these TestsExists and evaulate in real time during evaluation vs gather?
DeployConfig Config
CommonInputVariables map[string]string // Common input variables that all steps receive
Output StepOutput
TestOutput StepTestOutput
Runner Stepper
}
Step represents a delivery framework step, e.g. the executions needed to implement a track
type StepExecution ¶
type StepExecution struct {
RegionDeployType RegionDeployType
Region string `json:"region"`
Logger *logrus.Entry
Fs afero.Fs
UniqueExternalExecutionID string
RegionGroupRegions []string
TargetAccountID string
RegionGroup string
PrimaryRegion string
Dir string
Environment string `json:"environment"`
AppVersion string `json:"app_version"`
AccountID string `json:"account_id"`
MaxRetries int
MaxTestRetries int
CoreAccounts map[string]Account
RegionGroups RegionGroupsMap
Namespace string
CommonRegion string
StepName string
StepID string
DeploymentRing string
Project string
TrackName string
DryRun bool
SelfDestroy bool
DefaultStepOutputVariables map[string]map[string]string // Previous step output variables are available in this map. K=StepName,V=map[VarName:VarVal]
OptionalStepParams map[string]string
RequiredStepParams map[string]interface{}
}
type StepOutput ¶
type StepOutput struct {
Status DeployResult
RegionDeployType RegionDeployType
Region string
StepName string
StreamOutput string
Err error
OutputVariables map[string]interface{}
}
StepOutput represents the output of a step
type StepTestOutput ¶
StepTestOutput represents the output of a step's test
type Stepper ¶
type Stepper interface {
// ExecuteStep will handle the deployment of this step. In Terraform this will include init, plan, verify plan, and apply.
PreExecute(execution StepExecution) (exec StepExecution, err error)
ExecuteStep(execution StepExecution) (resp StepOutput)
ExecuteStepTests(execution StepExecution) (resp StepTestOutput)
ExecuteStepDestroy(execution StepExecution) (output StepOutput)
}
Stepper is an interface for working with delivery framework steps, e.g. the executions needed to implement a track All Step methods will handle logging of errors while logger has appropriate fields set. Therefore, there should be no need to logger Output.Errs from this interface
Click to show internal directories.
Click to hide internal directories.