deploy

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Command *cli.Command = &cli.Command{
	Name:    "deploy",
	Aliases: []string{"d"},
	Usage:   "Deploy an application to a Kubernetes cluster",
	Hidden:  true,
	Flags: []cli.Flag{
		shared.SystemNameFlag(
			"The name of the system (Kubernetes namespace) to deploy to.",
			true,
		),
		shared.RuntimeCloudProviderFlag(),
		shared.HelmValuesFileFlag(),
		&cli.StringFlag{
			Name:     "image-tag",
			Aliases:  []string{"i"},
			Usage:    "The image tag to deploy.",
			Required: true,
		},
		&cli.StringFlag{
			Name:    "environment",
			Aliases: []string{"e"},
			Usage:   "The environment to deploy to: sandbox, dev, test or prod",
			Value:   "dev",
			Action: func(c *cli.Context, environment string) error {
				allowedEnvironments := []string{"sandbox", "dev", "test", "prod"}
				if !slices.Contains(allowedEnvironments, environment) {
					return cli.Exit(fmt.Sprintf("Invalid environment provided: must be one of %v", allowedEnvironments), 1)
				}

				return nil
			},
		},
		&cli.StringFlag{
			Name:    "workload-type",
			Aliases: []string{"w"},
			Usage:   "The Kubernetes workload type to use: deployment or statefulset",
			Value:   "deployment",
			Action: func(c *cli.Context, workloadType string) error {
				allowedWorkloadTypes := []string{"deployment", "statefulset"}
				if !slices.Contains(allowedWorkloadTypes, workloadType) {
					return cli.Exit(fmt.Sprintf("Invalid workload type provided: must be one of %v", allowedWorkloadTypes), 1)
				}

				return nil
			},
		},
		&cli.StringFlag{
			Name:    "commit-hash",
			Aliases: []string{"c"},
			Usage:   "The commit hash of the commit being deployed. Used for deployment annotations. If you are running this command from a git repository, the commit hash of the latest commit in the currently checked out branch will be used by default.",
		},
		&cli.StringFlag{
			Name:    "commit-message",
			Aliases: []string{"m"},
			Usage:   "The commit message of the commit being deployed. Used for deployment annotations. If you are running this command from a git repository, the commit message of the latest commit in the currently checked out branch will be used by default.",
		},
		&cli.StringFlag{
			Name:    "repository-name",
			Aliases: []string{"n"},
			Usage:   "Name of the repository the code of the application is stored in. Used for deployment annotations. If you are running this command from a git repository, that repository name will be used by default.",
		},
		&cli.BoolFlag{
			Name:    "dry-run",
			Aliases: []string{"D"},
			Usage:   "Simulate the deployment without actually deploying.",
		},
		&cli.StringFlag{
			Name:    "azure-tenant-id",
			Usage:   "The AKS tenant ID to use",
			EnvVars: []string{"3LV_AZURE_TENANT_ID"},
		},
		&cli.StringFlag{
			Name:    "azure-client-id",
			Usage:   "The client ID to use when authenticating with the registry. Must be combined with --azure-federated-token.",
			EnvVars: []string{"3LV_AZURE_CLIENT_ID"},
		},
		&cli.StringFlag{
			Name:    "azure-federated-token",
			Usage:   "The federated token to use when authenticating with the Azure Container Registry. Must be combined with --client-id.",
			EnvVars: []string{"3LV_AZURE_FEDERATED_TOKEN"},
		},
		&cli.StringFlag{
			Name:    "aks-subscription-id",
			Usage:   "Subscription ID of the AKS cluster to deploy to.",
			EnvVars: []string{"3LV_AKS_SUBSCRIPTION_ID"},
		},
		&cli.StringFlag{
			Name:    "aks-cluster-name",
			Usage:   "Name of the AKS cluster to deploy to.",
			EnvVars: []string{"3LV_AKS_CLUSTER_NAME"},
		},
		&cli.StringFlag{
			Name:    "aks-resource-group-name",
			Usage:   "Resource group name of the AKS cluster to deploy to.",
			EnvVars: []string{"3LV_AKS_RESOURCE_GROUP_NAME"},
		},
		&cli.StringFlag{
			Name:    "gke-project-id",
			Usage:   "Project ID of the GKE cluster to deploy to.",
			EnvVars: []string{"3LV_GKE_PROJECT_ID"},
		},
		&cli.StringFlag{
			Name:    "gke-cluster-name",
			Usage:   "Name of the GKE cluster to deploy to.",
			EnvVars: []string{"3LV_GKE_CLUSTER_NAME"},
		},
		&cli.StringFlag{
			Name:    "gke-cluster-location",
			Usage:   "Location of the GKE cluster to deploy to.",
			Hidden:  true,
			EnvVars: []string{"3LV_GKE_CLUSTER_LOCATION"},
		},
		&cli.BoolFlag{
			Name:  "add-deployment-annotation",
			Usage: "Add a deployment annotation to Grafana. Requires --grafana-url and --grafana-api-key to be set.",
		},
		&cli.StringFlag{
			Name:  "grafana-url",
			Usage: "The Grafana URL to use for deployment annotations.",
		},
		&cli.StringFlag{
			Name:  "grafana-api-key",
			Usage: "The Grafana API key to use for deployment annotations.",
		},
		&cli.StringFlag{
			Name:  "run-id",
			Usage: "The GitHub Actions run ID to use for deployment annotations.",
		},
		&cli.BoolFlag{
			Name:    "allow-deploy",
			Hidden:  true,
			EnvVars: []string{"CI"},
		},
	},
	Action: Deploy,
}

Functions

func Deploy

func Deploy(c *cli.Context) error

Types

type FormatDeploymentMessageOptions added in v0.12.0

type FormatDeploymentMessageOptions struct {
	RunID string
}

type GcloudGetCredentialsCommandOptions added in v0.11.19

type GcloudGetCredentialsCommandOptions struct {
	ProjectID       string
	ClusterName     string
	ClusterLocation string
	RunOptions      *command.RunOptions
}

type GrafanaAnnotation added in v0.12.0

type GrafanaAnnotation struct {
	What string   `json:"what"` // required
	Data string   `json:"data"` // required
	Tags []string `json:"tags"` // required
}

type PostGrafanaAnnotationOptions added in v0.12.0

type PostGrafanaAnnotationOptions struct {
	RunID string
}

type SetupAKSOptions added in v0.11.4

type SetupAKSOptions struct {
	SubscriptionID    string
	ClusterName       string
	ResourceGroupName string
	AzLoginOptions    *auth.AzLoginCommandOptions
}

type SetupGKEOptions added in v0.11.4

type SetupGKEOptions struct {
	ProjectID       string
	ClusterName     string
	ClusterLocation string
}

Jump to

Keyboard shortcuts

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