Skip to content

Commit b07874a

Browse files
authored
OpenSSF Scorecard - pin docker images to exact digest - ASP.NET Framework (#4124)
1 parent de5f026 commit b07874a

File tree

4 files changed

+36
-27
lines changed

4 files changed

+36
-27
lines changed

build/Build.Steps.Windows.cs

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,7 @@ partial class Build
136136
.Executes(() =>
137137
{
138138
var aspNetProject = Solution.GetProjectByName(Projects.Tests.Applications.AspNet);
139-
BuildDockerImage(aspNetProject);
140-
141-
DockerBuild(x => x
142-
.SetPath(".")
143-
.SetFile(aspNetProject.Directory / "Classic.Dockerfile")
144-
.EnableRm()
145-
.SetTag(($"{Path.GetFileNameWithoutExtension(aspNetProject).Replace(".", "-")}-classic").ToLowerInvariant())
146-
.SetProcessWorkingDirectory(aspNetProject.Directory)
147-
);
139+
BuildDockerImage(aspNetProject, "integrated", "classic");
148140

149141
var wcfProject = Solution.GetProjectByName(Projects.Tests.Applications.WcfIis);
150142
BuildDockerImage(wcfProject);
@@ -153,7 +145,7 @@ partial class Build
153145
BuildDockerImage(owinProject);
154146
});
155147

156-
void BuildDockerImage(Project project)
148+
void BuildDockerImage(Project project, params string[] targets)
157149
{
158150
const string moduleName = "OpenTelemetry.DotNet.Auto.psm1";
159151
var sourceModulePath = InstallationScriptsDirectory / moduleName;
@@ -176,13 +168,31 @@ void BuildDockerImage(Project project)
176168
project.Directory / "Properties" / "PublishProfiles" / $"FolderProfile.{BuildConfiguration}.pubxml")
177169
.SetTargetPath(project));
178170

179-
DockerBuild(x => x
180-
.SetPath(".")
181-
.SetBuildArg($"configuration={BuildConfiguration}")
182-
.EnableRm()
183-
.SetTag(Path.GetFileNameWithoutExtension(project).Replace(".", "-").ToLowerInvariant())
184-
.SetProcessWorkingDirectory(project.Directory)
185-
);
171+
if (targets.Length > 0)
172+
{
173+
foreach (var target in targets)
174+
{
175+
DockerBuild(x => x
176+
.SetPath(".")
177+
.SetBuildArg($"configuration={BuildConfiguration}")
178+
.EnableRm()
179+
.SetProcessWorkingDirectory(project.Directory)
180+
.SetTag($"{Path.GetFileNameWithoutExtension(project).Replace(".", "-")}-{target}".ToLowerInvariant())
181+
.SetTarget(target)
182+
);
183+
184+
}
185+
}
186+
else
187+
{
188+
DockerBuild(x => x
189+
.SetPath(".")
190+
.SetBuildArg($"configuration={BuildConfiguration}")
191+
.EnableRm()
192+
.SetProcessWorkingDirectory(project.Directory)
193+
.SetTag(Path.GetFileNameWithoutExtension(project).Replace(".", "-").ToLowerInvariant())
194+
);
195+
}
186196
}
187197
finally
188198
{

test/IntegrationTests/AspNetTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public async Task TracesResource()
146146
};
147147

148148
var webPort = TcpPortProvider.GetOpenPort();
149-
await using var container = await IISContainerTestHelper.StartContainerAsync("testapplication-aspnet-netframework", webPort, environmentVariables, Output);
149+
await using var container = await IISContainerTestHelper.StartContainerAsync("testapplication-aspnet-netframework-integrated", webPort, environmentVariables, Output);
150150
await CallTestApplicationEndpoint(webPort);
151151

152152
collector.ResourceExpector.AssertExpectations();
@@ -175,15 +175,15 @@ public async Task SubmitMetrics()
175175
["OTEL_DOTNET_AUTO_METRICS_ASPNET_INSTRUMENTATION_ENABLED"] = "true" // Helps to reduce noise by enabling only AspNet metrics.
176176
};
177177
var webPort = TcpPortProvider.GetOpenPort();
178-
await using var container = await IISContainerTestHelper.StartContainerAsync("testapplication-aspnet-netframework", webPort, environmentVariables, Output);
178+
await using var container = await IISContainerTestHelper.StartContainerAsync("testapplication-aspnet-netframework-integrated", webPort, environmentVariables, Output);
179179
await CallTestApplicationEndpoint(webPort);
180180

181181
collector.AssertExpectations();
182182
}
183183

184184
private static string GetTestImageName(string appPoolMode)
185185
{
186-
return appPoolMode == "Classic" ? "testapplication-aspnet-netframework-classic" : "testapplication-aspnet-netframework";
186+
return appPoolMode == "Classic" ? "testapplication-aspnet-netframework-classic" : "testapplication-aspnet-netframework-integrated";
187187
}
188188

189189
private async Task CallTestApplicationEndpoint(int webPort)

test/test-applications/integrations/TestApplication.AspNet.NetFramework/Classic.Dockerfile

Lines changed: 0 additions & 6 deletions
This file was deleted.

test/test-applications/integrations/TestApplication.AspNet.NetFramework/Dockerfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# escape=`
22

3-
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022@sha256:84079c734ab5aec702409ef7967ec47af9468c56ff4046882239cabacda78097
3+
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022@sha256:84079c734ab5aec702409ef7967ec47af9468c56ff4046882239cabacda78097 AS integrated
44
ARG configuration=Debug
55
ARG platform=x64
66
WORKDIR /opentelemetry
@@ -16,3 +16,8 @@ ENV OTEL_DOTNET_AUTO_LOG_DIRECTORY=C:\inetpub\wwwroot\logs `
1616
OTEL_LOG_LEVEL=debug
1717
WORKDIR /inetpub/wwwroot
1818
COPY bin/${configuration}/app.publish .
19+
20+
FROM integrated AS classic
21+
RUN Start-IISCommitDelay;`
22+
(Get-IISAppPool -Name DefaultAppPool).ManagedPipelineMode = 'Classic';`
23+
Stop-IISCommitDelay -Commit $True

0 commit comments

Comments
 (0)