Skip to content

Add ContainerBuildOptions support for ResourceContainerImageBuilder #10001

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Jun 23, 2025

This PR adds support for passing additional MSBuild arguments to the dotnet publish command when building container images from project resources.

Changes Made

New ContainerBuildOptions Class

[Experimental("ASPIREPUBLISHERS001", UrlFormat = "https://aka.ms/aspire/diagnostics/{0}")]
public class ContainerBuildOptions
{
    public string[]? AdditionalPublishArguments { get; init; }
}

Updated IResourceContainerImageBuilder Interface

Task BuildImageAsync(IResource resource, ContainerBuildOptions? options = null, CancellationToken cancellationToken = default);
Task BuildImagesAsync(IEnumerable<IResource> resources, ContainerBuildOptions? options = null, CancellationToken cancellationToken = default);

Enhanced Implementation

The BuildProjectContainerImageAsync method now supports appending additional arguments to the base dotnet publish command:

Before:

dotnet publish {projectPath} --configuration Release /t:PublishContainer /p:ContainerRepository={resourceName}

After (with options):

dotnet publish {projectPath} --configuration Release /t:PublishContainer /p:ContainerRepository={resourceName} {additionalArgs}

Usage Examples

// Set container image format
var options = new ContainerBuildOptions
{
    AdditionalPublishArguments = ["/p:ContainerImageFormat=oci"]
};
await imageBuilder.BuildImageAsync(resource, options, cancellationToken);

// Set output path for container archive
var options = new ContainerBuildOptions
{
    AdditionalPublishArguments = ["/p:ContainerArchiveOutputPath=/tmp/container.tar"]
};

// Set runtime identifier
var options = new ContainerBuildOptions
{
    AdditionalPublishArguments = ["/p:ContainerRuntimeIdentifier=linux-x64"]
};

// Multiple properties
var options = new ContainerBuildOptions
{
    AdditionalPublishArguments = [
        "/p:ContainerImageFormat=oci",
        "/p:ContainerRuntimeIdentifier=linux-x64",
        "/p:ContainerArchiveOutputPath=/output/container.tar"
    ]
};

Backward Compatibility

All existing code continues to work unchanged. The new parameters are optional with default values:

  • options = null (existing behavior)
  • cancellationToken = default (existing behavior)

Testing

Added comprehensive test coverage including:

  • API functionality with additional arguments
  • Null options handling
  • Multiple resource scenarios
  • Backward compatibility verification

Fixes #10000.


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

…lder

Co-authored-by: captainsafia <1857993+captainsafia@users.noreply.github.com>
@Copilot Copilot AI changed the title [WIP] ResourceContainerImageBuilder should support setting additional arguments for dotnet publish built images Add ContainerBuildOptions support for ResourceContainerImageBuilder Jun 23, 2025
@Copilot Copilot AI requested a review from captainsafia June 23, 2025 18:15
Copilot finished work on behalf of captainsafia June 23, 2025 18:15
@captainsafia
Copy link
Member

Closing in favor of a refined model.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Error loading sessions

Retrying...

Successfully merging this pull request may close these issues.

ResourceContainerImageBuilder should support setting additional arguments for dotnet publish built images
2 participants