Documentation ¶
Index ¶
- Constants
- Variables
- func BlueGreenStrategy(md *machineDeployment, blueMachines []*machineUpdateEntry) *blueGreen
- func DeployWithConfig(ctx context.Context, appConfig *appconfig.Config, userID int, forceYes bool) (err error)
- type AppState
- type Command
- type MachineDeployment
- type MachineDeploymentArgs
- type ProcessGroupsDiff
- type RollbackLog
Constants ¶
View Source
const ( DefaultWaitTimeout = 5 * time.Minute DefaultReleaseCommandTimeout = 5 * time.Minute DefaultLeaseTtl = 13 * time.Second DefaultVolumeInitialSizeGB = 1 DefaultGPUVolumeInitialSizeGB = 100 )
View Source
const ErrNoLogsFound = "no logs found"
Variables ¶
View Source
var ( ErrAborted = errors.New("deployment aborted by user") ErrWaitTimeout = errors.New("wait timeout") ErrCreateGreenMachine = errors.New("failed to create green machines") ErrWaitForStartedState = errors.New("could not get all green machines into started state") ErrWaitForHealthy = errors.New("could not get all green machines to be healthy") ErrMarkReadyForTraffic = errors.New("failed to mark green machines as ready") ErrCordonBlueMachines = errors.New("failed to cordon blue machines") ErrStopBlueMachines = errors.New("failed to stop blue machines") ErrWaitForStoppedState = errors.New("could not get all blue machines into stopped state") ErrDestroyBlueMachines = errors.New("failed to destroy previous deployment") ErrValidationError = errors.New("app not in valid state for bluegreen deployments") ErrOrgLimit = errors.New("app can't undergo bluegreen deployment due to org limits") ErrMultipleImageVersions = errors.New("found multiple image versions") )
View Source
var CommonFlags = flag.Set{ flag.Image(), flag.Now(), flag.RemoteOnly(false), flag.LocalOnly(), flag.Push(), flag.Wireguard(), flag.HttpsFailover(), flag.Detach(), flag.Strategy(), flag.Dockerfile(), flag.Ignorefile(), flag.ImageLabel(), flag.BuildArg(), flag.BuildSecret(), flag.BuildTarget(), flag.NoCache(), flag.Nixpacks(), flag.BuildOnly(), flag.BpDockerHost(), flag.BpVolume(), flag.RecreateBuilder(), flag.Yes(), flag.VMSizeFlags, flag.StringArray{ Name: "env", Shorthand: "e", Description: "Set of environment variables in the form of NAME=VALUE pairs. Can be specified multiple times.", }, flag.String{ Name: "wait-timeout", Description: "Time duration to wait for individual machines to transition states and become healthy.", Default: DefaultWaitTimeout.String(), }, flag.String{ Name: "release-command-timeout", Description: "Time duration to wait for a release command finish running, or 'none' to disable.", Default: DefaultReleaseCommandTimeout.String(), }, flag.String{ Name: "lease-timeout", Description: "Time duration to lease individual machines while running deployment." + " All machines are leased at the beginning and released at the end." + "The lease is refreshed periodically for this same time, which is why it is short." + "flyctl releases leases in most cases.", Default: DefaultLeaseTtl.String(), }, flag.Bool{ Name: "force-machines", Description: "Use the Apps v2 platform built with Machines", Default: false, Hidden: true, }, flag.Bool{ Name: "ha", Description: "Create spare machines that increases app availability", Default: true, }, flag.Bool{ Name: "smoke-checks", Description: "Perform smoke checks during deployment", Default: true, }, flag.Bool{ Name: "dns-checks", Description: "Perform DNS checks during deployment", Default: true, }, flag.Float64{ Name: "max-unavailable", Description: "Max number of unavailable machines during rolling updates. A number between 0 and 1 means percent of total machines", Default: DefaultMaxUnavailable, }, flag.Bool{ Name: "no-public-ips", Description: "Do not allocate any new public IP addresses", }, flag.Bool{ Name: "flycast", Description: "Allocate a private IPv6 addresses", }, flag.StringArray{ Name: "file-local", Description: "Set of files in the form of /path/inside/machine=<local/path> pairs. Can be specified multiple times.", }, flag.StringArray{ Name: "file-literal", Description: "Set of literals in the form of /path/inside/machine=VALUE pairs where VALUE is the content. Can be specified multiple times.", }, flag.StringArray{ Name: "file-secret", Description: "Set of secrets in the form of /path/inside/machine=SECRET pairs where SECRET is the name of the secret. Can be specified multiple times.", }, flag.StringSlice{ Name: "regions", Aliases: []string{"only-regions"}, Description: "Deploy to machines only in these regions. Multiple regions can be specified with comma separated values or by providing the flag multiple times.", }, flag.StringSlice{ Name: "exclude-regions", Description: "Deploy to all machines except machines in these regions. Multiple regions can be specified with comma separated values or by providing the flag multiple times.", }, flag.StringSlice{ Name: "only-machines", Description: "Deploy to machines only with these IDs. Multiple IDs can be specified with comma separated values or by providing the flag multiple times.", }, flag.StringSlice{ Name: "exclude-machines", Description: "Deploy to all machines except machines with these IDs. Multiple IDs can be specified with comma separated values or by providing the flag multiple times.", }, flag.StringSlice{ Name: "process-groups", Description: "Deploy to machines only in these process groups", }, flag.StringArray{ Name: "label", Description: "Add custom metadata to an image via docker labels", }, flag.Int{ Name: "max-concurrent", Description: "Maximum number of machines to operate on concurrently.", Default: defaultMaxConcurrent, }, flag.Int{ Name: "immediate-max-concurrent", Description: "Maximum number of machines to update concurrently when using the immediate deployment strategy.", Default: defaultMaxConcurrent, Hidden: true, }, flag.Int{ Name: "volume-initial-size", Description: "The initial size in GB for volumes created on first deploy", }, flag.String{ Name: "signal", Shorthand: "s", Description: "Signal to stop the machine with for bluegreen strategy (default: SIGINT)", }, flag.String{ Name: "deploy-retries", Description: "Number of times to retry a deployment if it fails", Default: "auto", }, }
Functions ¶
func BlueGreenStrategy ¶ added in v0.1.40
func BlueGreenStrategy(md *machineDeployment, blueMachines []*machineUpdateEntry) *blueGreen
Types ¶
type MachineDeployment ¶ added in v0.0.452
func NewMachineDeployment ¶ added in v0.0.452
func NewMachineDeployment(ctx context.Context, args MachineDeploymentArgs) (_ MachineDeployment, err error)
type MachineDeploymentArgs ¶ added in v0.0.452
type MachineDeploymentArgs struct { AppCompact *fly.AppCompact DeploymentImage string Strategy string EnvFromFlags []string PrimaryRegionFlag string SkipSmokeChecks bool SkipHealthChecks bool SkipDNSChecks bool SkipReleaseCommand bool RestartOnly bool WaitTimeout *time.Duration StopSignal string LeaseTimeout *time.Duration ReleaseCmdTimeout *time.Duration Guest *fly.MachineGuest IncreasedAvailability bool AllocIP string Org string UpdateOnly bool Files []*fly.File ExcludeRegions map[string]bool OnlyRegions map[string]bool ExcludeMachines map[string]bool OnlyMachines map[string]bool ProcessGroups map[string]bool MaxConcurrent int VolumeInitialSize int RestartPolicy *fly.MachineRestartPolicy RestartMaxRetries int DeployRetries int }
type ProcessGroupsDiff ¶ added in v0.0.490
type ProcessGroupsDiff struct {
// contains filtered or unexported fields
}
type RollbackLog ¶ added in v0.2.32
type RollbackLog struct {
// contains filtered or unexported fields
}
Click to show internal directories.
Click to hide internal directories.