Skip to content

Commit af582c5

Browse files
authored
Merge branch 'main' into support-other-arch-and-os
2 parents 18ccb52 + cb86a38 commit af582c5

File tree

6 files changed

+24
-7
lines changed

6 files changed

+24
-7
lines changed

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PackageVersion Include="Microsoft.Build.Locator" Version="1.5.5" />
99
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.3.1" />
1010
<PackageVersion Include="Microsoft.Build" Version="17.3.1" />
11-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
11+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
1212
<PackageVersion Include="Microsoft.VisualStudioEng.MicroBuild.Core" Version="1.0.0" />
1313
<PackageVersion Include="MSTest.TestAdapter" Version="2.3.0-preview-20220810-02" />
1414
<PackageVersion Include="MSTest.TestFramework" Version="2.2.10" />

Microsoft.NET.Build.Containers/ContainerBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Microsoft.NET.Build.Containers;
77

88
public static class ContainerBuilder
99
{
10-
public static async Task Containerize(DirectoryInfo folder, string workingDir, string registryName, string baseName, string baseTag, string[] entrypoint, string[] entrypointArgs, string imageName, string[] imageTags, string outputRegistry, string[] labels, Port[] exposedPorts, string[] envVars, string containerRuntimeIdentifier, string ridGraphPath)
10+
public static async Task Containerize(DirectoryInfo folder, string workingDir, string registryName, string baseName, string baseTag, string[] entrypoint, string[] entrypointArgs, string imageName, string[] imageTags, string? outputRegistry, string[] labels, Port[] exposedPorts, string[] envVars, string containerRuntimeIdentifier, string ridGraphPath)
1111
{
1212
var isDockerPull = String.IsNullOrEmpty(registryName);
1313
if (isDockerPull) {
@@ -34,7 +34,7 @@ public static async Task Containerize(DirectoryInfo folder, string workingDir, s
3434
img.SetEntrypoint(entrypoint, entrypointArgs);
3535

3636
var isDockerPush = String.IsNullOrEmpty(outputRegistry);
37-
Registry? outputReg = isDockerPush ? null : new Registry(ContainerHelpers.TryExpandRegistryToUri(outputRegistry));
37+
Registry? outputReg = isDockerPush ? null : new Registry(ContainerHelpers.TryExpandRegistryToUri(outputRegistry!));
3838

3939
foreach (var label in labels)
4040
{

Microsoft.NET.Build.Containers/ContainerHelpers.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ public static class ContainerHelpers
2525

2626
public const string HostObjectPass = "SDK_CONTAINER_REGISTRY_PWORD";
2727

28-
private static Regex envVarRegex = new Regex(@"^[a-zA-Z_]+$");
28+
/// <summary>
29+
/// Matches an environment variable name - must start with a letter or underscore, and can only contain letters, numbers, and underscores.
30+
/// </summary>
31+
private static Regex envVarRegex = new Regex(@"^[a-zA-Z_]{1,}[a-zA-Z0-9_]*$");
2932

3033
/// <summary>
3134
/// DefaultRegistry is the canonical representation of something that lives in the local docker daemon. It's used as the inferred registry for repositories

Microsoft.NET.Build.Containers/CreateNewImageToolTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ protected override string GenerateCommandLineCommands()
7575
" --baseregistry " + BaseRegistry +
7676
" --baseimagename " + BaseImageName +
7777
" --baseimagetag " + BaseImageTag +
78-
" --outputregistry " + OutputRegistry +
78+
(OutputRegistry is not null ? " --outputregistry " + OutputRegistry : "") +
7979
" --imagename " + ImageName +
8080
" --workingdirectory " + WorkingDirectory +
8181
(Entrypoint.Length > 0 ? " --entrypoint " + String.Join(" ", Entrypoint.Select((i) => i.ItemSpec)) : "") +

Test.Microsoft.NET.Build.Containers/ContainerHelpersTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,18 @@ public void CanParsePort(string input, bool shouldParse, int? expectedPortNumber
9797
Assert.AreEqual(expectedError, errors);
9898
}
9999
}
100+
101+
[TestMethod]
102+
[DataRow("FOO", true)]
103+
[DataRow("foo_bar", true)]
104+
[DataRow("foo-bar", false)]
105+
[DataRow("foo.bar", false)]
106+
[DataRow("foo bar", false)]
107+
[DataRow("1_NAME", false)]
108+
[DataRow("ASPNETCORE_URLS", true)]
109+
[DataRow("ASPNETCORE_URLS2", true)]
110+
public void CanRecognizeEnvironmentVariableNames(string envVarName, bool isValid) {
111+
var success = ContainerHelpers.IsValidEnvironmentVariable(envVarName);
112+
Assert.AreEqual(isValid, success, $"Expected {envVarName} to be {(isValid ? "valid" : "invalid")}");
113+
}
100114
}

containerize/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
name: "--outputregistry",
3333
description: "The registry to push to.")
3434
{
35-
IsRequired = true
35+
IsRequired = false
3636
};
3737

3838
var imageNameOpt = new Option<string>(
@@ -180,7 +180,7 @@
180180
string _baseReg = context.ParseResult.GetValueForOption(baseRegistryOpt) ?? "";
181181
string _baseName = context.ParseResult.GetValueForOption(baseImageNameOpt) ?? "";
182182
string _baseTag = context.ParseResult.GetValueForOption(baseImageTagOpt) ?? "";
183-
string _outputReg = context.ParseResult.GetValueForOption(outputRegistryOpt) ?? "";
183+
string? _outputReg = context.ParseResult.GetValueForOption(outputRegistryOpt);
184184
string _name = context.ParseResult.GetValueForOption(imageNameOpt) ?? "";
185185
string[] _tags = context.ParseResult.GetValueForOption(imageTagsOpt) ?? Array.Empty<string>();
186186
string _workingDir = context.ParseResult.GetValueForOption(workingDirectoryOpt) ?? "";

0 commit comments

Comments
 (0)