Browse Source

Move container defaults to a step

pull/412/head
Ryan Nowak 6 years ago
parent
commit
b2a70b2daa
  1. 29
      src/Microsoft.Tye.Core/ApplyContainerDefaultsStep.cs
  2. 3
      src/tye/BuildHost.cs
  3. 3
      src/tye/GenerateHost.cs
  4. 13
      src/tye/Program.DeployCommand.cs
  5. 3
      src/tye/Program.PushCommand.cs

29
src/Microsoft.Tye.Core/ApplyContainerDefaultsStep.cs

@ -0,0 +1,29 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Threading.Tasks;
namespace Microsoft.Tye
{
public sealed class ApplyContainerDefaultsStep : ApplicationExecutor.ServiceStep
{
public override string DisplayText => "Applying container defaults...";
public override Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service)
{
if (SkipWithoutProject(output, service, out var project))
{
return Task.CompletedTask;
}
if (SkipWithoutContainerInfo(output, service, out var container))
{
return Task.CompletedTask;
}
DockerfileGenerator.ApplyContainerDefaults(application, project, container);
return Task.CompletedTask;
}
}
}

3
src/tye/BuildHost.cs

@ -26,12 +26,13 @@ namespace Microsoft.Tye
public static async Task ExecuteBuildAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive)
{
await application.ProcessExtensionsAsync(output, ExtensionContext.OperationKind.Deploy);
Program.ApplyRegistryAndDefaults(output, application, interactive, requireRegistry: false);
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, },

3
src/tye/GenerateHost.cs

@ -33,12 +33,13 @@ namespace Microsoft.Tye
public static async Task ExecuteGenerateAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive)
{
await application.ProcessExtensionsAsync(output, ExtensionContext.OperationKind.Deploy);
Program.ApplyRegistryAndDefaults(output, application, interactive, requireRegistry: false);
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

13
src/tye/Program.DeployCommand.cs

@ -70,12 +70,13 @@ namespace Microsoft.Tye
}
await application.ProcessExtensionsAsync(output, ExtensionContext.OperationKind.Deploy);
ApplyRegistryAndDefaults(output, application, interactive, requireRegistry: true);
ApplyRegistry(output, application, interactive, requireRegistry: true);
var executor = new ApplicationExecutor(output)
{
ServiceSteps =
{
new ApplyContainerDefaultsStep(),
new CombineStep() { Environment = environment, },
new PublishProjectStep(),
new BuildDockerImageStep() { Environment = environment, },
@ -130,7 +131,7 @@ namespace Microsoft.Tye
step.MarkComplete();
}
internal static void ApplyRegistryAndDefaults(OutputContext output, ApplicationBuilder application, bool interactive, bool requireRegistry)
internal static void ApplyRegistry(OutputContext output, ApplicationBuilder application, bool interactive, bool requireRegistry)
{
if (application.Registry is null && interactive)
{
@ -148,14 +149,6 @@ namespace Microsoft.Tye
{
// No registry specified, and that's OK!
}
foreach (var service in application.Services)
{
if (service is ProjectServiceBuilder project && project.ContainerInfo is ContainerInfo container)
{
DockerfileGenerator.ApplyContainerDefaults(application, project, container);
}
}
}
}
}

3
src/tye/Program.PushCommand.cs

@ -52,12 +52,13 @@ namespace Microsoft.Tye
private static async Task ExecutePushAsync(OutputContext output, ApplicationBuilder application, string environment, bool interactive, bool force)
{
await application.ProcessExtensionsAsync(output, ExtensionContext.OperationKind.Deploy);
ApplyRegistryAndDefaults(output, application, interactive, requireRegistry: true);
ApplyRegistry(output, application, interactive, requireRegistry: true);
var executor = new ApplicationExecutor(output)
{
ServiceSteps =
{
new ApplyContainerDefaultsStep(),
new CombineStep() { Environment = environment, },
new PublishProjectStep(),
new BuildDockerImageStep() { Environment = environment, },

Loading…
Cancel
Save