private static async Task ExecutePushAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive, bool force) { await application.ProcessExtensionsAsync(options : null, output, ExtensionContext.OperationKind.Deploy); ApplyRegistry(output, application, interactive, requireRegistry: true); var executor = new ApplicationExecutor(output) { ServiceSteps = { new ApplyContainerDefaultsStep(), new CombineStep() { Environment = environment, }, new PublishProjectStep(), new BuildDockerImageStep() { Environment = environment, }, new PushDockerImageStep() { Environment = environment, }, }, }; await executor.ExecuteAsync(application); }
public static async Task ExecuteGenerateAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive) { await application.ProcessExtensionsAsync(output, ExtensionContext.OperationKind.Deploy); Program.ApplyRegistry(output, application, interactive, requireRegistry: false); var executor = new ApplicationExecutor(output) { ServiceSteps = { new ApplyContainerDefaultsStep(), new CombineStep() { Environment = environment, }, new PublishProjectStep(), new BuildDockerImageStep() { Environment = environment, }, // Make an image but don't push it new GenerateServiceKubernetesManifestStep() { Environment = environment, }, }, IngressSteps = { new GenerateIngressKubernetesManifestStep(), }, ApplicationSteps = { new GenerateApplicationKubernetesManifestStep() { Environment = environment, }, } }; await executor.ExecuteAsync(application); }
private static async Task ExecuteDeployAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive, bool force) { var watch = System.Diagnostics.Stopwatch.StartNew(); if (!await KubectlDetector.IsKubectlInstalledAsync(output)) { throw new CommandException($"Cannot apply manifests because kubectl is not installed."); } if (!await KubectlDetector.IsKubectlConnectedToClusterAsync(output)) { throw new CommandException($"Cannot apply manifests because kubectl is not connected to a cluster."); } await application.ProcessExtensionsAsync(options : null, output, ExtensionContext.OperationKind.Deploy); ApplyRegistry(output, application, interactive, requireRegistry: true); var executor = new ApplicationExecutor(output) { ServiceSteps = { new ApplyContainerDefaultsStep(), new CombineStep() { Environment = environment, }, new PublishProjectStep(), new BuildDockerImageStep() { Environment = environment, }, new PushDockerImageStep() { Environment = environment, }, new ValidateSecretStep() { Environment = environment, Interactive= interactive, Force = force, }, new GenerateServiceKubernetesManifestStep() { Environment = environment, }, }, IngressSteps = { new ValidateIngressStep() { Environment = environment, Interactive = interactive, Force = force, }, new GenerateIngressKubernetesManifestStep(), }, ApplicationSteps = { new DeployApplicationKubernetesManifestStep(), } }; await executor.ExecuteAsync(application); watch.Stop(); TimeSpan elapsedTime = watch.Elapsed; output.WriteAlwaysLine($"Time Elapsed: {elapsedTime.Hours:00}:{elapsedTime.Minutes:00}:{elapsedTime.Seconds:00}:{elapsedTime.Milliseconds / 10:00}"); }
private static async Task ExecuteDeployAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive, bool force) { if (!await KubectlDetector.Instance.IsKubectlInstalled.Value) { throw new CommandException($"Cannot apply manifests because kubectl is not installed."); } if (!await KubectlDetector.Instance.IsKubectlConnectedToCluster.Value) { throw new CommandException($"Cannot apply manifests because kubectl is not connected to a cluster."); } await application.ProcessExtensionsAsync(output, ExtensionContext.OperationKind.Deploy); ApplyRegistry(output, application, interactive, requireRegistry: true); var executor = new ApplicationExecutor(output) { ServiceSteps = { new ApplyContainerDefaultsStep(), new CombineStep() { Environment = environment, }, new PublishProjectStep(), new BuildDockerImageStep() { Environment = environment, }, new PushDockerImageStep() { Environment = environment, }, new ValidateSecretStep() { Environment = environment, Interactive= interactive, Force = force, }, new GenerateServiceKubernetesManifestStep() { Environment = environment, }, }, IngressSteps = { new ValidateIngressStep() { Environment = environment, Interactive = interactive, Force = force, }, new GenerateIngressKubernetesManifestStep(), }, ApplicationSteps = { new DeployApplicationKubernetesManifestStep(), } }; await executor.ExecuteAsync(application); }