Fix confusing error messages when Docker image builds fail during aspire publish
#10656
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When
dotnet publish
fails during container image building inaspire publish
, users see confusing "unexpected error" messages instead of clear, actionable error information. This happens because theExecuteDotnetPublishAsync
method inResourceContainerImageBuilder
is missing theThrowOnNonZeroReturnCode = false
setting in itsProcessSpec
configuration.Root Cause
The issue stems from inconsistent
ProcessSpec
configuration between different build paths:Docker/Podman builds (working correctly):
dotnet publish builds (problematic):
When
ThrowOnNonZeroReturnCode
is not explicitly set tofalse
,ProcessUtil.Run()
throws an exception on command failure instead of allowing graceful error handling through exit code checking.Solution
This PR adds
ThrowOnNonZeroReturnCode = false
to theProcessSpec
inExecuteDotnetPublishAsync
to match the behavior of Docker/Podman builds. This allows:false
instead of throwing exceptionsChanges
ThrowOnNonZeroReturnCode = false
to ProcessSpec inExecuteDotnetPublishAsync
methodBuildImageAsync_WithInvalidProject_ReturnsFalseWithoutThrowing
to validate the fixValidation
The fix has been validated to ensure consistency across all container runtime implementations:
ThrowOnNonZeroReturnCode = false
ThrowOnNonZeroReturnCode = false
ThrowOnNonZeroReturnCode = false
This minimal change ensures that failed
dotnet publish
commands during container builds are handled gracefully with proper error reporting, matching the established patterns used throughout the codebase.This pull request was created as a result of the following prompt from Copilot chat.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.