Browse Source

Move Tye to .NET 6 (#1215)

* Switch to .NET 6 runtimes.

* 1st pass at moving core project target frameworks.

* 2nd pass of nullable updates.

* Use .NET 6 SDK base image for Docker proxies.

* Move test projects to .NET 6.

* Fix formatting.

* Try running tests on MacOS 11 (Big Sur).

* Try disabling HTTPS on watch tests.

* Revert HTTPS changes and just disable E2E tests for now.

* Update docs references to .NET Core.
pull/1218/head
Phillip Hoff 5 years ago
committed by GitHub
parent
commit
1c8577f98f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      azure-pipelines.yml
  2. 2
      docs/FAQ.md
  3. 2
      docs/getting_started.md
  4. 8
      docs/recipes/githubactions_aks.md
  5. 2
      docs/reference/deployment.md
  6. 4
      global.json
  7. 3
      src/Microsoft.Tye.Core/ConfigFileFinder.cs
  8. 2
      src/Microsoft.Tye.Core/ConfigModel/ConfigApplication.cs
  9. 2
      src/Microsoft.Tye.Core/Microsoft.Tye.Core.csproj
  10. 2
      src/Microsoft.Tye.Extensions/Microsoft.Tye.Extensions.csproj
  11. 2
      src/Microsoft.Tye.Hosting.Diagnostics/Microsoft.Tye.Hosting.Diagnostics.csproj
  12. 2
      src/Microsoft.Tye.Hosting/DockerRunner.cs
  13. 2
      src/Microsoft.Tye.Hosting/HttpProxyService.cs
  14. 12
      src/Microsoft.Tye.Hosting/Infrastructure/ProxyExtensions.cs
  15. 13
      src/Microsoft.Tye.Hosting/Infrastructure/ServiceLoggerProvider.cs
  16. 2
      src/Microsoft.Tye.Hosting/Microsoft.Tye.Hosting.csproj
  17. 8
      src/Microsoft.Tye.Hosting/ProxyService.cs
  18. 4
      src/Microsoft.Tye.Hosting/TransformProjectsIntoContainers.cs
  19. 21
      src/Microsoft.Tye.Hosting/TyeHost.cs
  20. 2
      src/Microsoft.Tye.Proxy/Microsoft.Tye.Proxy.csproj
  21. 8
      src/Microsoft.Tye.Proxy/Program.cs
  22. 14
      src/shared/KubectlDetector.cs
  23. 2
      src/tye-diag-agent/tye-diag-agent.csproj
  24. 2
      src/tye/InitHost.cs
  25. 2
      src/tye/tye.csproj
  26. 7
      test/E2ETest/Microsoft.Tye.E2ETests.csproj
  27. 3
      test/E2ETest/TyeRunTests.cs
  28. 2
      test/E2ETest/testassets/projects/Console.Normalization.svc.Name/Console.Normalization.svc.Name.csproj
  29. 2
      test/E2ETest/testassets/projects/apps-with-ingress/ApplicationA/ApplicationA.csproj
  30. 2
      test/E2ETest/testassets/projects/apps-with-ingress/ApplicationB/ApplicationB.csproj
  31. 2
      test/E2ETest/testassets/projects/apps-with-ingress/ApplicationC-UI/ApplicationC-UI.csproj
  32. 2
      test/E2ETest/testassets/projects/azure-functions/backend/backend.csproj
  33. 2
      test/E2ETest/testassets/projects/azure-functions/frontend/frontend.csproj
  34. 2
      test/E2ETest/testassets/projects/dapr/dapr.csproj
  35. 2
      test/E2ETest/testassets/projects/dockerfile/frontend/frontend.csproj
  36. 2
      test/E2ETest/testassets/projects/frontend-backend/backend/backend-baseimage.csproj
  37. 2
      test/E2ETest/testassets/projects/frontend-backend/backend/backend.csproj
  38. 2
      test/E2ETest/testassets/projects/frontend-backend/frontend/frontend.csproj
  39. 2
      test/E2ETest/testassets/projects/generate-connectionstring-dependency/frontend/frontend.csproj
  40. 2
      test/E2ETest/testassets/projects/generate-named-binding/frontend/frontend.csproj
  41. 2
      test/E2ETest/testassets/projects/generate-uri-dependency/frontend/frontend.csproj
  42. 2
      test/E2ETest/testassets/projects/health-checks/api/api.csproj
  43. 2
      test/E2ETest/testassets/projects/multi-phase-dockerfile/multi-phase-dockerfile.csproj
  44. 2
      test/E2ETest/testassets/projects/multi-project/backend/backend.csproj
  45. 2
      test/E2ETest/testassets/projects/multi-project/frontend/frontend.csproj
  46. 2
      test/E2ETest/testassets/projects/multi-project/worker/worker.csproj
  47. 2
      test/E2ETest/testassets/projects/multirepo/results/results.csproj
  48. 2
      test/E2ETest/testassets/projects/multirepo/vote/vote.csproj
  49. 2
      test/E2ETest/testassets/projects/multirepo/worker/worker.csproj
  50. 2
      test/E2ETest/testassets/projects/nginx-ingress/ApplicationA/ApplicationA.csproj
  51. 2
      test/E2ETest/testassets/projects/nginx-ingress/ApplicationB/ApplicationB.csproj
  52. 2
      test/E2ETest/testassets/projects/non-standard-dashboard-port/test-project/test-project.csproj
  53. 2
      test/E2ETest/testassets/projects/project-types/app/app.csproj
  54. 2
      test/E2ETest/testassets/projects/project-types/class-library/class-library.csproj
  55. 2
      test/E2ETest/testassets/projects/project-types/test-project/test-project.csproj
  56. 2
      test/E2ETest/testassets/projects/single-phase-dockerfile-args-duplicates/single-phase-dockerfile-args.csproj
  57. 2
      test/E2ETest/testassets/projects/single-phase-dockerfile-args/single-phase-dockerfile-args.csproj
  58. 2
      test/E2ETest/testassets/projects/single-phase-dockerfile-multi-args/single-phase-dockerfile-multi-args.csproj
  59. 2
      test/E2ETest/testassets/projects/single-phase-dockerfile/single-phase-dockerfile.csproj
  60. 2
      test/E2ETest/testassets/projects/single-project/test-project/test-project.csproj
  61. 2
      test/E2ETest/testassets/projects/volume-test/volume-test.csproj
  62. 2
      test/E2ETest/testassets/projects/web-app/tye.yaml
  63. 2
      test/E2ETest/testassets/projects/web-app/web-app.csproj
  64. 2
      test/Microsoft.Tye.Extensions.Configuration.Tests/Microsoft.Tye.Extensions.Configuration.Tests.csproj
  65. 2
      test/Test.Infrastructure/Test.Infrastructure.csproj
  66. 2
      test/UnitTests/Microsoft.Tye.UnitTests.csproj

2
azure-pipelines.yml

@ -133,7 +133,7 @@ stages:
- job: OSX_10_14
displayName: 'OSX'
pool:
vmImage: macOS-10.14
vmImage: macOS-11
variables:
- name: _SignType
value: none

2
docs/FAQ.md

@ -4,7 +4,7 @@
A: Three main ways:
- Tye is optimized for .NET Core - we have built-in knowledge of how .NET projects work, which we use to power most experiences.
- Tye is optimized for .NET - we have built-in knowledge of how .NET projects work, which we use to power most experiences.
- Tye's development features are oriented towards *local development* (avoid running in a container unless necessary).
- Tye aims to solve problems along the whole spectrum of development to CI/CD based deployment.

2
docs/getting_started.md

@ -4,7 +4,7 @@ Tye is a tool that makes developing, testing, and deploying microservices and di
## Installing Tye
1. Install [.NET Core 3.1](<http://dot.net>).
1. Install [.NET 6](<https://dot.net>).
1. Install tye via the following command:
```text

8
docs/recipes/githubactions_aks.md

@ -51,17 +51,17 @@ env:
ACR_RESOURCE_URI: myregistry.azurecr.io
```
Next, ensure that the version of .NET Core and tye are installed.
Next, ensure that Tye and its dependent .NET runtime are installed.
```yaml
- name: 🧰 Setup .NET Core
- name: 🧰 Setup .NET
uses: actions/setup-dotnet@v1.5.0
with:
dotnet-version: 3.1.300
dotnet-version: 6.0.100
- name: 🛠 Install Tye tools
run: |
dotnet tool install -g Microsoft.Tye --version "0.2.0-alpha.20258.3"
dotnet tool install -g Microsoft.Tye --version "0.10.0-alpha.21420.1"
```
Using the name of the registry and the [Azure docker action](https://github.com/Azure/docker-login) to login to your registry. This step is needed prior to running the `deploy` command which will build and push the images to the registry.

2
docs/reference/deployment.md

@ -21,7 +21,7 @@ These steps are sequentially executed for each project or service.
### Configure defaults for docker
Sets defaults for any projects that will create docker images. For example, for any ASP.NET Core projects, this step will set the container base image to `mcr.microsoft.com/dotnet/core/aspnet`. It will also select the image tag based on the .NET version specified (2.1, 3.1, etc.).
Sets defaults for any projects that will create docker images. For example, for any ASP.NET Core projects, this step will set the container base image to `mcr.microsoft.com/dotnet/core/aspnet`. It will also select the image tag based on the .NET version specified (2.1, 3.1, 5, 6, etc.).
This is also where Tye requires a container registry to properly set the image name. If running `tye deploy` (no interactive), tye requires a registry to be defined in `tye.yaml`. If running interactively (`tye deploy -i`), tye will prompt the user for one if not specified in `tye.yaml`.

4
global.json

@ -6,10 +6,10 @@
"dotnet": "6.0.100",
"runtimes": {
"dotnet": [
"3.1.14"
"6.0.0"
],
"aspnetcore": [
"3.1.14"
"6.0.0"
]
}
},

3
src/Microsoft.Tye.Core/ConfigFileFinder.cs

@ -2,6 +2,7 @@
// 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.Diagnostics.CodeAnalysis;
using System.IO;
namespace Microsoft.Tye
@ -10,7 +11,7 @@ namespace Microsoft.Tye
{
private static readonly string[] FileFormats = { "tye.yaml", "tye.yml", "docker-compose.yaml", "docker-compose.yml", "*.csproj", "*.fsproj", "*.sln" };
public static bool TryFindSupportedFile(string directoryPath, out string? filePath, out string? errorMessage, string[]? fileFormats = null)
public static bool TryFindSupportedFile(string directoryPath, [NotNullWhen(true)] out string? filePath, [MaybeNullWhen(true)] out string? errorMessage, string[]? fileFormats = null)
{
fileFormats ??= FileFormats;
foreach (var format in fileFormats)

2
src/Microsoft.Tye.Core/ConfigModel/ConfigApplication.cs

@ -144,7 +144,7 @@ namespace Microsoft.Tye.ConfigModel
foreach (var probe in probes)
{
context = new ValidationContext(probe.Probe!);
if (!Validator.TryValidateObject(probe.Probe, context, results, validateAllProperties: true))
if (!Validator.TryValidateObject(probe.Probe!, context, results, validateAllProperties: true))
{
throw new TyeYamlException(
$"Probe '{probe.Name}' in service '{service.Name}' validation failed." + Environment.NewLine +

2
src/Microsoft.Tye.Core/Microsoft.Tye.Core.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Tye</RootNamespace>
<AssemblyName>Microsoft.Tye.Core</AssemblyName>
<PackageId>Microsoft.Tye.Core</PackageId>

2
src/Microsoft.Tye.Extensions/Microsoft.Tye.Extensions.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

2
src/Microsoft.Tye.Hosting.Diagnostics/Microsoft.Tye.Hosting.Diagnostics.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<Description>Diagnostics collector and exporter for .NET Core applications.</Description>
<AssemblyName>Microsoft.Tye.Hosting.Diagnostics</AssemblyName>
<PackageId>Microsoft.Tye.Hosting.Diagnostics</PackageId>

2
src/Microsoft.Tye.Hosting/DockerRunner.cs

@ -62,7 +62,7 @@ namespace Microsoft.Tye.Hosting
// Inject a proxy per non-container service. This allows the container to use normal host names within the
// container network to talk to services on the host
var proxyContainer = new DockerRunInfo($"mcr.microsoft.com/dotnet/core/sdk:3.1", "dotnet Microsoft.Tye.Proxy.dll")
var proxyContainer = new DockerRunInfo($"mcr.microsoft.com/dotnet/sdk:6.0", "dotnet Microsoft.Tye.Proxy.dll")
{
WorkingDirectory = "/app",
NetworkAlias = service.Description.Name,

2
src/Microsoft.Tye.Hosting/HttpProxyService.cs

@ -178,7 +178,7 @@ namespace Microsoft.Tye.Hosting
}
var uri = new UriBuilder(uris[next].Uri)
{
Path = rule.PreservePath ? $"{context.Request.Path}" : (string)context.Request.RouteValues["path"] ?? "/",
Path = rule.PreservePath ? $"{context.Request.Path}" : (string?)context.Request.RouteValues["path"] ?? "/",
Query = context.Request.QueryString.Value
};

12
src/Microsoft.Tye.Hosting/Infrastructure/ProxyExtensions.cs

@ -88,10 +88,14 @@ namespace Microsoft.AspNetCore.Proxy
// Append request forwarding headers
requestMessage.Headers.TryAddWithoutValidation("Via", $"{context.Request.Protocol} Tye");
requestMessage.Headers.TryAddWithoutValidation("X-Forwarded-For", context.Connection.RemoteIpAddress.ToString());
requestMessage.Headers.TryAddWithoutValidation("X-Forwarded-Proto", request.Scheme);
requestMessage.Headers.TryAddWithoutValidation("X-Forwarded-Host", request.Host.ToUriComponent());
if (context.Connection.RemoteIpAddress != null)
{
requestMessage.Headers.TryAddWithoutValidation("X-Forwarded-For", context.Connection.RemoteIpAddress.ToString());
}
requestMessage.Headers.Host = uri.Authority;
requestMessage.RequestUri = uri;
requestMessage.Method = new HttpMethod(request.Method);
@ -129,10 +133,14 @@ namespace Microsoft.AspNetCore.Proxy
}
AppendHeaderValue(client.Options, context.Request.Headers, "Via", context.Request.Protocol);
AppendHeaderValue(client.Options, context.Request.Headers, "X-Forwarded-For", context.Connection.RemoteIpAddress.ToString());
AppendHeaderValue(client.Options, context.Request.Headers, "X-Forwarded-Proto", context.Request.Scheme);
AppendHeaderValue(client.Options, context.Request.Headers, "X-Forwarded-Host", context.Request.Host.ToUriComponent());
if (context.Connection.RemoteIpAddress != null)
{
AppendHeaderValue(client.Options, context.Request.Headers, "X-Forwarded-For", context.Connection.RemoteIpAddress.ToString());
}
try
{
await client.ConnectAsync(destinationUri, context.RequestAborted);

13
src/Microsoft.Tye.Hosting/Infrastructure/ServiceLoggerProvider.cs

@ -37,9 +37,9 @@ namespace Microsoft.Tye.Hosting
_logs = logs;
}
public IDisposable? BeginScope<TState>(TState state)
public IDisposable BeginScope<TState>(TState state)
{
return null;
return null!;
}
public bool IsEnabled(LogLevel logLevel)
@ -47,12 +47,15 @@ namespace Microsoft.Tye.Hosting
return true;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception, string>? formatter)
{
_logs.OnNext($"[{logLevel}]: {formatter(state, exception)}");
if (exception != null)
{
if (formatter != null)
{
_logs.OnNext($"[{logLevel}]: {formatter(state, exception)}");
}
_logs.OnNext(exception.ToString());
}
}

2
src/Microsoft.Tye.Hosting/Microsoft.Tye.Hosting.csproj

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<Description>Orchestration host APIs.</Description>
<AssemblyName>Microsoft.Tye.Hosting</AssemblyName>
<PackageId>Microsoft.Tye.Hosting</PackageId>

8
src/Microsoft.Tye.Hosting/ProxyService.cs

@ -94,7 +94,7 @@ namespace Microsoft.Tye.Hosting
return;
}
using var _ = cts.Token.Register(() => notificationFeature.RequestClose());
using var _ = cts.Token.Register(() => notificationFeature?.RequestClose());
NetworkStream? targetStream = null;
@ -132,10 +132,10 @@ namespace Microsoft.Tye.Hosting
_logger.LogDebug("Proxying traffic to {ServiceName} {ExternalPort}:{InternalPort}", service.Description.Name, binding.Port, ports[next]);
// external -> internal
var reading = Task.Run(() => connection.Transport.Input.CopyToAsync(targetStream, notificationFeature.ConnectionClosedRequested));
var reading = Task.Run(() => connection.Transport.Input.CopyToAsync(targetStream, notificationFeature?.ConnectionClosedRequested ?? default));
// internal -> external
var writing = Task.Run(() => targetStream.CopyToAsync(connection.Transport.Output, notificationFeature.ConnectionClosedRequested));
var writing = Task.Run(() => targetStream.CopyToAsync(connection.Transport.Output, notificationFeature?.ConnectionClosedRequested ?? default));
await Task.WhenAll(reading, writing);
}
@ -149,7 +149,7 @@ namespace Microsoft.Tye.Hosting
}
catch (OperationCanceledException ex)
{
if (!notificationFeature.ConnectionClosedRequested.IsCancellationRequested)
if (notificationFeature is null || !notificationFeature.ConnectionClosedRequested.IsCancellationRequested)
{
_logger.LogDebug(0, ex, "Proxy error for service {ServiceName}", service.Description.Name);
}

4
src/Microsoft.Tye.Hosting/TransformProjectsIntoContainers.cs

@ -87,10 +87,10 @@ namespace Microsoft.Tye.Hosting
// This is .NET specific
var userSecretStore = GetUserSecretsPathFromSecrets();
Directory.CreateDirectory(userSecretStore);
if (!string.IsNullOrEmpty(userSecretStore))
{
Directory.CreateDirectory(userSecretStore);
// Map the user secrets on this drive to user secrets
dockerRunInfo.VolumeMappings.Add(new DockerVolume(source: userSecretStore, name: null, target: "/root/.microsoft/usersecrets", readOnly: true));
}

21
src/Microsoft.Tye.Hosting/TyeHost.cs

@ -102,9 +102,18 @@ namespace Microsoft.Tye.Hosting
await app.StartAsync();
_addresses = DashboardWebApplication.Services.GetRequiredService<IServer>().Features.Get<IServerAddressesFeature>().Addresses;
_addresses = DashboardWebApplication.Services.GetRequiredService<IServer>().Features.Get<IServerAddressesFeature>()?.Addresses;
_logger.LogInformation("Dashboard running on {Address}", _addresses.First());
var dashboardAddress = _addresses?.FirstOrDefault();
if (dashboardAddress != null)
{
_logger.LogInformation("Dashboard running on {Address}", dashboardAddress);
}
else
{
_logger.LogWarning("Dashboard is not running");
}
try
{
@ -117,9 +126,9 @@ namespace Microsoft.Tye.Hosting
_lifetime.StopApplication();
}
if (_options.Dashboard)
if (dashboardAddress != null && _options.Dashboard)
{
OpenDashboard(_addresses.First());
OpenDashboard(dashboardAddress);
}
return app;
@ -333,7 +342,7 @@ namespace Microsoft.Tye.Hosting
}
catch (Exception ex)
{
_logger.LogError(ex, "Error while shutting down");
_logger?.LogError(ex, "Error while shutting down");
}
finally
{
@ -375,7 +384,7 @@ namespace Microsoft.Tye.Hosting
}
catch (Exception ex)
{
_logger.LogError(ex, "Error launching dashboard.");
_logger?.LogError(ex, "Error launching dashboard.");
}
}

2
src/Microsoft.Tye.Proxy/Microsoft.Tye.Proxy.csproj

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

8
src/Microsoft.Tye.Proxy/Program.cs

@ -19,7 +19,7 @@ namespace Microsoft.Tye.Proxy
static async Task Main(string[] args)
{
var serviceName = Environment.GetEnvironmentVariable("APP_INSTANCE");
var containerHost = Environment.GetEnvironmentVariable("CONTAINER_HOST");
var containerHost = Environment.GetEnvironmentVariable("CONTAINER_HOST") ?? throw new ArgumentNullException("CONTAINER_HOST was not specified.");
using var host = new HostBuilder()
.ConfigureLogging(logging =>
@ -88,10 +88,10 @@ namespace Microsoft.Tye.Proxy
logger.LogDebug("Proxying traffic to {ServiceName} {Port}:{ExternalPort}", serviceName, mapping.Port, mapping.ExternalPort);
// external -> internal
var reading = Task.Run(() => connection.Transport.Input.CopyToAsync(targetStream, notificationFeature.ConnectionClosedRequested));
var reading = Task.Run(() => connection.Transport.Input.CopyToAsync(targetStream, notificationFeature?.ConnectionClosedRequested ?? default));
// internal -> external
var writing = Task.Run(() => targetStream.CopyToAsync(connection.Transport.Output, notificationFeature.ConnectionClosedRequested));
var writing = Task.Run(() => targetStream.CopyToAsync(connection.Transport.Output, notificationFeature?.ConnectionClosedRequested ?? default));
await Task.WhenAll(reading, writing);
}
@ -105,7 +105,7 @@ namespace Microsoft.Tye.Proxy
}
catch (OperationCanceledException ex)
{
if (!notificationFeature.ConnectionClosedRequested.IsCancellationRequested)
if (notificationFeature is null || !notificationFeature.ConnectionClosedRequested.IsCancellationRequested)
{
logger.LogDebug(0, ex, "Proxy error for service {ServiceName}", serviceName);
}

14
src/shared/KubectlDetector.cs

@ -47,10 +47,16 @@ namespace Microsoft.Tye
{
continue;
}
var major = int.Parse(element.Value.GetProperty("major").GetString());
var minor = int.Parse(element.Value.GetProperty("minor").GetString().Trim('+'));
var version = new Version(major, minor);
return version;
var majorString = element.Value.GetProperty("major").GetString();
var minorString = element.Value.GetProperty("minor").GetString();
if (majorString != null && minorString != null)
{
var major = int.Parse(majorString);
var minor = int.Parse(minorString.Trim('+'));
var version = new Version(major, minor);
return version;
}
}
return null;

2
src/tye-diag-agent/tye-diag-agent.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Microsoft.Tye</RootNamespace>
</PropertyGroup>

2
src/tye/InitHost.cs

@ -37,7 +37,7 @@ namespace Microsoft.Tye
throw new CommandException(errorMessage!);
}
path = new FileInfo(filePath);
path = new FileInfo(filePath!);
}
var template = @"

2
src/tye/tye.csproj

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Microsoft.Tye</RootNamespace>
<AssemblyName>tye</AssemblyName>
<PackageId>Microsoft.Tye</PackageId>

7
test/E2ETest/Microsoft.Tye.E2ETests.csproj

@ -2,12 +2,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Microsoft.Tye.E2ETest</AssemblyName>
<IsTestProject>true</IsTestProject>
<IsUnitTestProject>true</IsUnitTestProject>
<!-- TODO: Investigate Ubuntu >16.04 test hangs and re-enable E2E tests on Linux. -->
<IsUnitTestProject Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' ">false</IsUnitTestProject>
<!-- TODO: Investigate Ubuntu >16.04 test hangs and Mac test failures and re-enable E2E tests. -->
<IsUnitTestProject>false</IsUnitTestProject>
<TestRunnerName>XUnit</TestRunnerName>
</PropertyGroup>

3
test/E2ETest/TyeRunTests.cs

@ -799,7 +799,8 @@ services:
[Fact]
public async Task IngressAllIPTest()
{
await TestIngressIP($"'*'", GetLiveIPAddresses().FirstOrDefault());
var address = GetLiveIPAddresses().FirstOrDefault();
await TestIngressIP($"'*'", address == null ? Array.Empty<IPAddress>() : new[] { address });
}

2
test/E2ETest/testassets/projects/Console.Normalization.svc.Name/Console.Normalization.svc.Name.csproj

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/apps-with-ingress/ApplicationA/ApplicationA.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/apps-with-ingress/ApplicationB/ApplicationB.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/apps-with-ingress/ApplicationC-UI/ApplicationC-UI.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/azure-functions/backend/backend.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>

2
test/E2ETest/testassets/projects/azure-functions/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Frontend</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/dapr/dapr.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/dockerfile/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Frontend</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/frontend-backend/backend/backend-baseimage.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Backend</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/frontend-backend/backend/backend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Backend</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/frontend-backend/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Frontend</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/generate-connectionstring-dependency/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/generate-named-binding/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/generate-uri-dependency/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/health-checks/api/api.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

2
test/E2ETest/testassets/projects/multi-phase-dockerfile/multi-phase-dockerfile.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>multi_phase_dockerfile</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/multi-project/backend/backend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Backend</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/multi-project/frontend/frontend.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

2
test/E2ETest/testassets/projects/multi-project/worker/worker.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<UserSecretsId>dotnet-worker-E4419EA1-F496-4FE1-A024-7E75E40B9E10</UserSecretsId>
<RootNamespace>Worker</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/multirepo/results/results.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Results</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/multirepo/vote/vote.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Vote</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/multirepo/worker/worker.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<UserSecretsId>dotnet-worker-A47A7C4B-4BF2-4243-9BBE-E6B3CB3E9C6F</UserSecretsId>
<RootNamespace>Worker</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/nginx-ingress/ApplicationA/ApplicationA.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/nginx-ingress/ApplicationB/ApplicationB.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/non-standard-dashboard-port/test-project/test-project.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>test_project</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/project-types/app/app.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>

2
test/E2ETest/testassets/projects/project-types/class-library/class-library.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>class_library</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/project-types/test-project/test-project.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>test_project</RootNamespace>
<IsPackable>false</IsPackable>

2
test/E2ETest/testassets/projects/single-phase-dockerfile-args-duplicates/single-phase-dockerfile-args.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>single_phase_dockerfile_args</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/single-phase-dockerfile-args/single-phase-dockerfile-args.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>single_phase_dockerfile_args</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/single-phase-dockerfile-multi-args/single-phase-dockerfile-multi-args.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>single_phase_dockerfile_args</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/single-phase-dockerfile/single-phase-dockerfile.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>single_phase_dockerfile</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/single-project/test-project/test-project.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>test_project</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/volume-test/volume-test.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>volume_test</RootNamespace>
</PropertyGroup>

2
test/E2ETest/testassets/projects/web-app/tye.yaml

@ -7,4 +7,4 @@
name: web-app
services:
- name: web-app
project: web-app.csproj
project: web-app.csproj

2
test/E2ETest/testassets/projects/web-app/web-app.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>web_app</RootNamespace>
</PropertyGroup>

2
test/Microsoft.Tye.Extensions.Configuration.Tests/Microsoft.Tye.Extensions.Configuration.Tests.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<IsTestProject>true</IsTestProject>
</PropertyGroup>

2
test/Test.Infrastructure/Test.Infrastructure.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
<TestRunnerName>XUnit</TestRunnerName>
<Nullable>disable</Nullable>

2
test/UnitTests/Microsoft.Tye.UnitTests.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Microsoft.Tye.UnitTests</AssemblyName>
<IsTestProject>true</IsTestProject>
<IsUnitTestProject>true</IsUnitTestProject>

Loading…
Cancel
Save