Skip to content

Commit 905b60d

Browse files
gfraiteurclaude
andcommitted
Update Docker components for multi-OS support
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent d13fa84 commit 905b60d

24 files changed

+60
-31
lines changed

Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ ENV LC_ALL=C.UTF-8
2020
ENV DOTNET_CLI_UI_LANGUAGE=en
2121
ENV VSLANG=1033
2222

23-
# Set base PATH explicitly to avoid issues with ${PATH} expansion
23+
# Set base PATH explicitly to avoid issues with expansion
2424
ENV PATH="C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0"
2525

2626
# Enable long path support
@@ -63,6 +63,9 @@ RUN & .\dotnet-install.ps1 -Version 9.0.310 -InstallDir 'C:\Program Files\dotnet
6363

6464

6565
# Epilogue
66+
# Link to private repository for GHCR visibility
67+
LABEL org.opencontainers.image.source=https://github.com/postsharp/PostSharp.Engineering.Images
68+
6669
# Create docker-context directory for build scripts
6770
RUN New-Item -ItemType Directory -Path c:\docker-context -Force | Out-Null
6871

Dockerfile.claude

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ ENV LC_ALL=C.UTF-8
2020
ENV DOTNET_CLI_UI_LANGUAGE=en
2121
ENV VSLANG=1033
2222

23-
# Set base PATH explicitly to avoid issues with ${PATH} expansion
23+
# Set base PATH explicitly to avoid issues with expansion
2424
ENV PATH="C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0"
2525

2626
# Enable long path support
@@ -96,6 +96,9 @@ SHELL ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "-Comma
9696

9797

9898
# Epilogue
99+
# Link to private repository for GHCR visibility
100+
LABEL org.opencontainers.image.source=https://github.com/postsharp/PostSharp.Engineering.Images
101+
99102
# Create docker-context directory for build scripts
100103
RUN New-Item -ItemType Directory -Path c:\docker-context -Force | Out-Null
101104

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/GenerateScriptsCommand.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,18 @@ public static bool Execute( BuildContext context, CommonCommandSettings settings
4040
EmbeddedResourceHelper.ExtractScript( context, "RunClaude.ps1", "eng" );
4141
var image = (ContainerRequirements) product.OverriddenBuildAgentRequirements!;
4242

43-
if ( !image.WriteDockerfile( context ) )
43+
if ( !image.WriteDockerfile( context, ContainerOperatingSystem.Windows2025, "Dockerfile" ) )
44+
{
45+
return false;
46+
}
47+
48+
if ( !image.WriteDockerfile( context, ContainerOperatingSystem.Windows2022, "Dockerfile.win2022" ) )
4449
{
4550
return false;
4651
}
4752

4853
// Generate Claude Dockerfile (will auto-add NodeJs if not present)
49-
if ( !image.WriteClaudeDockerfile( context ) )
54+
if ( !image.WriteClaudeDockerfile( context, ContainerOperatingSystem.Windows2025, "Dockerfile.claude" ) )
5055
{
5156
return false;
5257
}

src/PostSharp.Engineering.BuildTools/Docker/AzureArtifactsCredentialProviderComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public sealed class AzureArtifactsCredentialProviderComponent : ContainerCompone
1212

1313
public override ContainerComponentKind Kind => ContainerComponentKind.AzureArtifactsCredentialProvider;
1414

15-
public override void WriteDockerfile( TextWriter writer )
15+
public override void WriteDockerfile( TextWriter writer, ContainerOperatingSystem operatingSystem )
1616
{
1717
writer.WriteLine(
1818
"""

src/PostSharp.Engineering.BuildTools/Docker/AzureCliComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public sealed class AzureCliComponent : ContainerComponent
1212

1313
public override ContainerComponentKind Kind => ContainerComponentKind.AzureCli;
1414

15-
public override void WriteDockerfile( TextWriter writer )
15+
public override void WriteDockerfile( TextWriter writer, ContainerOperatingSystem operatingSystem )
1616
{
1717
writer.WriteLine(
1818
"""

src/PostSharp.Engineering.BuildTools/Docker/ChocolateyComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class ChocolateyComponent : ContainerComponent
1010

1111
public override ContainerComponentKind Kind => ContainerComponentKind.Chocolatey;
1212

13-
public override void WriteDockerfile( TextWriter writer )
13+
public override void WriteDockerfile( TextWriter writer, ContainerOperatingSystem operatingSystem )
1414
{
1515
writer.WriteLine(
1616
"""

src/PostSharp.Engineering.BuildTools/Docker/ClaudeAddInsComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class ClaudeAddInsComponent : ContainerComponent
3838
"eng"
3939
];
4040

41-
public override void WriteDockerfile( TextWriter writer )
41+
public override void WriteDockerfile( TextWriter writer, ContainerOperatingSystem operatingSystem )
4242
{
4343
// Use cmd shell to avoid HCS issues with PowerShell
4444
writer.WriteLine(

src/PostSharp.Engineering.BuildTools/Docker/ClaudeComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class ClaudeComponent : ContainerComponent
1919

2020
public override ContainerComponentKind Kind => ContainerComponentKind.Claude;
2121

22-
public override void WriteDockerfile( TextWriter writer )
22+
public override void WriteDockerfile( TextWriter writer, ContainerOperatingSystem operatingSystem )
2323
{
2424
// We don't use the native installer because it's very slow to download.
2525
// At least the NPM version is stored on fast CDNs.

src/PostSharp.Engineering.BuildTools/Docker/ContainerComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public abstract class ContainerComponent : IComparable<ContainerComponent>
1313

1414
public abstract ContainerComponentKind Kind { get; }
1515

16-
public abstract void WriteDockerfile( TextWriter writer );
16+
public abstract void WriteDockerfile( TextWriter writer, ContainerOperatingSystem operatingSystem );
1717

1818
public virtual void AddRequirements( IReadOnlyList<ContainerComponent> components, Action<ContainerComponent> add ) { }
1919

src/PostSharp.Engineering.BuildTools/Docker/ContainerOperatingSystem.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,11 @@ public enum ContainerOperatingSystem
66
Default = Windows2025,
77
Windows2022,
88
Linux
9+
}
10+
11+
12+
public enum OperatingSystemFamily
13+
{
14+
Windows,
15+
Linux
916
}

0 commit comments

Comments
 (0)