Skip to content

Add Azure sandbox deployment target#17873

Draft
davidfowl wants to merge 1 commit into
mainfrom
davidfowl/sandbox-deployment-target
Draft

Add Azure sandbox deployment target#17873
davidfowl wants to merge 1 commit into
mainfrom
davidfowl/sandbox-deployment-target

Conversation

@davidfowl

@davidfowl davidfowl commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a new experimental Aspire hosting package for Azure Container Apps Sandboxes so we can investigate this deployment target end to end. The deployment path is container-image based: Aspire builds and pushes compute resources, converts the pushed OCI image into a sandbox disk image, creates a sandbox from that disk image, applies lifecycle settings, exposes endpoint-derived ports, persists endpoint state, and cleans up sandbox/disk state during destroy.

Sandbox ARM resources are modeled with Azure.Provisioning/Bicep. Sandbox runtime operations use an internal ADC HTTP client for the regional Azure Dev Compute management endpoint (https://management.{region}.azuredevcompute.io) with api-version=2026-02-01-preview.

This includes:

  • Aspire.Hosting.Azure.Sandboxes package and sandbox group deployment environment resource.
  • Container and project-resource deployment to ACA Sandboxes.
  • C# and TypeScript AppHost coverage for publishing resources as ACA Sandboxes.
  • Sandbox runtime options for CPU, memory, disk, lifecycle, egress inspection, and endpoint access.
  • Endpoint state persistence so other resources can reference deployed sandbox URLs.
  • Azure Storage + managed identity/RBAC validation for sandbox-hosted apps.
  • Mixed Azure App Service + sandbox deployment validation.
  • Connector gateway ARM model support for connections, connection access policies, MCP server configs, and late-bound trigger configs.
  • Sandbox group RBAC modeled in Bicep for both the deployment principal and connector gateway system-assigned identity.

User-facing usage

C# AppHost:

var sandboxGroup = builder.AddAzureSandboxGroup("sandboxes");

builder.AddProject<Projects.ApiService>("api", launchProfileName: null)
    .WithHttpEndpoint(targetPort: 8080)
    .WithExternalHttpEndpoints()
    .PublishAsSandbox(sandboxGroup, new AzureSandboxOptions
    {
        Cpu = "1000m",
        Memory = "2048Mi",
        Disk = "20480Mi"
    });

TypeScript AppHost:

import { createBuilder } from './.aspire/modules/aspire.mjs';

const builder = await createBuilder();
const sandboxGroup = await builder.addAzureSandboxGroup('sandboxes');

await builder.addDockerfile('site', './site')
    .withHttpEndpoint({ name: 'http', targetPort: 80 })
    .withExternalHttpEndpoints()
    .publishAsSandbox(sandboxGroup, {
        cpu: '1000m',
        memory: '2048Mi',
        disk: '20480Mi'
    });

await builder.build().run();

Connector trigger callback into a sandbox-hosted app:

var gateway = builder.AddAzureConnectorGateway("gateway");
gateway.WithRoleAssignments(sandboxGroup, AzureSandboxGroupBuiltInRole.SandboxGroupDataOwner);

var sharePoint = gateway.AddConnection("sharepoint", "sharepointonline");

sharePoint.AddTriggerConfig(
    "newfile",
    "GetOnNewFileItems",
    node.GetEndpoint("http"),
    callbackPath: "/webhook",
    parameters:
    [
        new("dataset", "https://contoso.sharepoint.com/sites/demo"),
        new("table", "Documents")
    ]);

Running aspire deploy builds and pushes images, provisions Azure resources, creates sandbox disk images and sandboxes through ADC APIs, exposes modeled HTTP endpoints through the sandbox proxy, and then provisions late trigger configs once sandbox callback URLs exist.

Validation

  • dotnet test --project tests/Aspire.Hosting.Azure.Tests/Aspire.Hosting.Azure.Tests.csproj --no-launch-profile -- --filter-class "*.AzureSandboxesTests" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true" (20 tests)
  • dotnet build playground/AzureSandboxes/SandboxAllFeatures.AppHost/SandboxAllFeatures.AppHost.csproj /p:SkipNativeBuild=true
  • aspire deploy --list-steps --apphost playground/AzureSandboxes/SandboxAllFeatures.AppHost/SandboxAllFeatures.AppHost.csproj --non-interactive
  • dotnet build tests/Aspire.Deployment.EndToEnd.Tests/Aspire.Deployment.EndToEnd.Tests.csproj /p:SkipNativeBuild=true --nologo
  • GITHUB_ACTIONS=true ASPIRE_DEPLOYMENT_TEST_ENABLE_SANDBOXES=false dotnet test --project tests/Aspire.Deployment.EndToEnd.Tests/Aspire.Deployment.EndToEnd.Tests.csproj --no-build --no-launch-profile -- --filter-class "*.AzureSandboxesDeploymentTests" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"

Live Azure E2E validation completed against subscription 39a289cd-f0fc-4d59-a745-17cf49d6aafd, region westus3:

  • Project-resource sandbox deploy: completed 21/21 steps; verified HTTP endpoint and /environment; destroyed and verified resource group deletion.
  • Node + Azure Storage sandbox deploy: completed 24/24 steps; verified UI, /storage, and blob create/list/read with managed identity; destroyed and verified resource group deletion.
  • Mixed App Service + sandbox deploy: completed 31/31 steps; verified App Service backend and sandbox-hosted nginx frontend proxying /api/message; destroyed and verified resource group deletion.
  • All-up deploy: completed 39/39 steps against rg-aspire-sbx-all-0604-2249; verified App Service backend, sandbox frontend, sandbox Node + Storage APIs, sandbox /webhook, connector gateway connections, MCP server config, trigger config, gateway connection access policy, sandbox group RBAC for deployment principal and gateway service principal, and Storage data-plane RBAC for the Node managed identity. Destroy completed 13/13 steps and az group exists returned false.

The guarded deployment E2E test now uses a TypeScript AppHost and is opt-in for live sandbox deployment through ASPIRE_DEPLOYMENT_TEST_ENABLE_SANDBOXES.

The SharePoint connector resources provision successfully, but the live SharePoint connections remain unauthenticated until interactive OAuth consent is completed. Actual SharePoint event firing was not exercised in the automated E2E validation.

Security considerations

This change creates public sandbox proxy endpoints for external endpoints, obtains ACR refresh tokens for private image disk conversion, invokes the local container runtime for image build/push/inspect, sends resolved environment values to the sandbox data-plane API, and grants Azure RBAC roles for sandbox deployment/runtime operations. No threat model or security review has been completed yet; this PR is draft.

Fixes # (issue)

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17873

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17873"

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

CLI E2E Tests unknown — 110 passed, 0 failed, 3 unknown (commit 1c44bdf)

View all recordings
- Test Detail
AddPackageInteractiveWhileAppHostRunningDetached Recording · Job · CLI logs
AddPackageWhileAppHostRunningDetached Recording · Job · CLI logs
AgentCommands_AllHelpOutputs_AreCorrect Recording · Job · CLI logs
AgentInitCommand_DefaultSelection_InstallsDefaultSkills Recording · Job · CLI logs
AgentInitCommand_MigratesDeprecatedConfig Recording · Job · CLI logs
AgentInit_NonInteractive_BundleOnlySkillsNotInCatalog Recording · Job · CLI logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp Recording · Job · CLI logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_DevLocalhost Recording · Job · CLI logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_Isolated Recording · Job · CLI logs
AllPublishMethodsBuildDockerImages Recording · Job · CLI logs
AspireAddAndStartWorkAgainstLegacyAppHostTs Recording · Job · CLI logs
AspireAddPackageVersionToDirectoryPackagesProps Recording · Job · CLI logs
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost Recording · Job · CLI logs
AspireInit_ExistingAppHostDir_RecreatesNuGetConfigKeepsFiles Recording · Job · CLI logs
AspireInit_SolutionFile_BuildsAgainstChannelHive Recording · Job · CLI logs
AspireStartUpdatesStaleTypeScriptAppHostPath Recording · Job · CLI logs
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps Recording · Job · CLI logs
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent Recording · Job · CLI logs
Banner_DisplayedOnFirstRun Recording · Job · CLI logs
Banner_DisplayedWithExplicitFlag Recording · Job · CLI logs
Banner_NotDisplayedWithNoLogoFlag Recording · Job · CLI logs
CertificatesClean_RemovesCertificates Recording · Job · CLI logs
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate Recording · Job · CLI logs
CertificatesTrust_WithUntrustedCert_TrustsCertificate Recording · Job · CLI logs
ConfigSetGet_CreatesNestedJsonFormat Recording · Job · CLI logs
CreateAndRunAspireStarterProject Recording · Job · CLI logs
CreateAndRunAspireStarterProjectWithBundle Recording · Job · CLI logs
CreateAndRunEmptyAppHostProject Recording · Job · CLI logs
CreateAndRunJavaEmptyAppHostProject Recording · Job · CLI logs
CreateAndRunJsReactProject Recording · Job · CLI logs
CreateAndRunPolyglotAppHostWithDevLocalhostUrls Recording · Job · CLI logs
CreateAndRunPythonReactProject Recording · Job · CLI logs
CreateAndRunTypeScriptEmptyAppHostProject Recording · Job · CLI logs
CreateAndRunTypeScriptStarterProject Recording · Job · CLI logs
CreateJavaAppHostWithViteApp Recording · Job · CLI logs
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain Recording · Job · CLI logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces Recording · Job · CLI logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces_DevLocalhost Recording · Job · CLI logs
DashboardRunWithOtelTracesReturnsNoTraces Recording · Job · CLI logs
DashboardRunWithOtelTracesReturnsNoTraces_DevLocalhost Recording · Job · CLI logs
DeployK8sBasicApiService Recording · Job · CLI logs
DeployK8sWithExternalHelmChart Recording · Job · CLI logs
DeployK8sWithGarnet Recording · Job · CLI logs
DeployK8sWithMongoDB Recording · Job · CLI logs
DeployK8sWithMySql Recording · Job · CLI logs
DeployK8sWithPostgres Recording · Job · CLI logs
DeployK8sWithRabbitMQ Recording · Job · CLI logs
DeployK8sWithRedis Recording · Job · CLI logs
DeployK8sWithSqlServer Recording · Job · CLI logs
DeployK8sWithValkey Recording · Job · CLI logs
DeployTypeScriptAppToKubernetes Recording · Job · CLI logs
DescribeCommandResolvesReplicaNames Recording · Job · CLI logs
DescribeCommandShowsRunningResources Recording · Job · CLI logs
DetachFormatJsonProducesValidJson Recording · Job · CLI logs
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance Recording · Job · CLI logs
DoPublishAndDeployListStepsWork Recording · Job · CLI logs
DocsCommand_RendersInteractiveMarkdownFromLocalSource Recording · Job · CLI logs
DoctorCommand_DetectsDeprecatedAgentConfig Recording · Job · CLI logs
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain Recording · Job · CLI logs
DoctorCommand_WithSslCertDir_ShowsTrusted Recording · Job · CLI logs
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted Recording · Job · CLI logs
DotNetRunFileBasedAppHostUsesAspireCliBundle Recording · Job · CLI logs
DotNetRunProjectAppHostUsesAspireCliBundle Recording · Job · CLI logs
GatewayWithoutExternalEndpoint_FailsPublishWithGuidance Recording · Job · CLI logs
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain Recording · Job · CLI logs
GlobalMigration_HandlesCommentsAndTrailingCommas Recording · Job · CLI logs
GlobalMigration_HandlesMalformedLegacyJson Recording · Job · CLI logs
GlobalMigration_PreservesAllValueTypes Recording · Job · CLI logs
GlobalMigration_SkipsWhenNewConfigExists Recording · Job · CLI logs
GlobalSettings_MigratedFromLegacyFormat Recording · Job · CLI logs
IngressWithoutExternalEndpoint_FailsPublishWithGuidance Recording · Job · CLI logs
InitTypeScriptAppHost_AugmentsExistingViteRepoInWorkspaceSubdirectory Recording · Job · CLI logs
InteractiveCSharpInitCreatesExpectedFiles Recording · Job · CLI logs
InvalidAppHostPathWithComments_IsHealedOnRun Recording · Job · CLI logs
JavaScriptHostingApisRunFromTypeScriptAppHost Recording · Job · CLI logs
LatestCliCanStartStableChannelAppHost Recording · Job · CLI logs
LatestCliCanStartStableChannelTypeScriptAppHost Recording · Job · CLI logs
LegacySettingsMigration_AdjustsRelativeAppHostPath Recording · Job · CLI logs
LogsCommandShowsResourceLogs Recording · Job · CLI logs
OtelLogsReturnsStructuredLogsFromStarterApp Recording · Job · CLI logs
OtelLogsReturnsStructuredLogsFromStarterAppIsolated Recording · Job · CLI logs
PersistentContainersPreserveDataAcrossAppHostRuns Recording · Job · CLI logs
PsCommandListsRunningAppHost Recording · Job · CLI logs
PsFormatJsonOutputsOnlyJsonToStdout Recording · Job · CLI logs
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts Recording · Job · CLI logs
PublishWithConfigureEnvFileUpdatesEnvOutput Recording · Job · CLI logs
PublishWithDockerComposeServiceCallbackSucceeds Recording · Job · CLI logs
PublishWithoutOutputPathUsesAppHostDirectoryDefault Recording · Job · CLI logs
ResourceCommand_FailedExec_ShowsLogPathAndLogHasEntries Recording · Job · CLI logs
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput Recording · Job · CLI logs
RestoreGeneratesSdkFiles Recording · Job · CLI logs
RestoreGeneratesSdkFiles_WithConfiguredToolchain Recording · Job · CLI logs
RestoreRefreshesGeneratedSdkAfterAddingIntegration Recording · Job · CLI logs
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes Recording · Job · CLI logs
RunFromParentDirectory_UsesExistingConfigNearAppHost Recording · Job · CLI logs
RunReportsSyntaxErrorsForDotNetAppHost Recording · Job · CLI logs
RunReportsSyntaxErrorsForTypeScriptAppHost Recording · Job · CLI logs
SecretCrudOnDotNetAppHost Recording · Job · CLI logs
SecretCrudOnTypeScriptAppHost Recording · Job · CLI logs
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels Recording · Job · CLI logs
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets Recording · Job · CLI logs
StartReportsSyntaxErrorsForDotNetAppHost Recording · Job · CLI logs
StartReportsSyntaxErrorsForTypeScriptAppHost Recording · Job · CLI logs
StopAllAppHostsFromAppHostDirectory Recording · Job · CLI logs
StopJavaPolyglotAppHostUsingApphostDirectory Recording · Job · CLI logs
StopNonInteractiveSingleAppHost Recording · Job · CLI logs
StopTypeScriptPolyglotAppHostUsingApphostDirectory Recording · Job · CLI logs
StopWithNoRunningAppHostExitsSuccessfully Recording · Job · CLI logs
TypeScriptAppHostRunDoesNotDeadlockWhenLazyOptionsInvokeAsyncCallback Recording · Job · CLI logs
TypeScriptAppHostWithVite_AllowsDifferentGuestPkgManager Recording · Job · CLI logs
UnAwaitedChainsCompileWithAutoResolvePromises Recording · Job · CLI logs
UpdateToStable_CSharpEmptyAppHost_KeepsConfigChannel Recording · Job · CLI logs
UpdateToStable_TypeScript_PreviewsStablePkgsAndKeepsChannel Recording · Job · CLI logs

📹 Recordings uploaded automatically from CI run #26998344395

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@davidfowl davidfowl force-pushed the davidfowl/sandbox-deployment-target branch from f6a4720 to 9f7b6cf Compare June 17, 2026 06:42
Copilot AI review requested due to automatic review settings June 17, 2026 06:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new experimental Aspire.Hosting.Azure.Sandboxes hosting package that enables deploying Aspire compute resources (projects, containers, Dockerfiles) to Azure Container Apps Sandboxes. The deployment flow builds and pushes container images, converts them into sandbox disk images via the Azure Dev Compute (ADC) management API, provisions sandbox ARM resources with Bicep, exposes HTTP endpoints through the sandbox proxy, and persists endpoint state. The PR also models Azure Connector Gateway resources (connections, access policies, MCP server configs, trigger configs) for SharePoint-style webhook integration.

Changes:

  • Adds ~34 new C# files in src/Aspire.Hosting.Azure.Sandboxes/ covering resource types, deployment logic, provisioning models, ADC HTTP client, extension methods, and TypeScript API surface.
  • Extends core hosting infrastructure: ContainerRuntimeBase gains IProcessRunner injection and new InspectImageConfigAsync/InspectImageManifestAsync methods; DefaultUserPrincipalProvider adds app-token (service principal) detection; BicepProvisioner propagates UserPrincipalId and PrincipalType parameters; AcrLoginService exposes registry refresh tokens for disk image creation.
  • Adds comprehensive unit tests (20 in AzureSandboxesTests) and a guarded E2E deployment test using Hex1b terminal automation against a TypeScript AppHost.
Show a summary per file
File Description
src/Aspire.Hosting.Azure.Sandboxes/ (34 files) New package: resource types, deployment steps, ADC client, Bicep provisioning models, extension methods, options, and value providers
src/Aspire.Hosting/Publishing/ContainerRuntimeBase.cs Injects IProcessRunner, adds ExecuteContainerCommandForOutputAsync, InspectImageConfigAsync, InspectImageManifestAsync
src/Aspire.Hosting/Publishing/IContainerRuntime.cs Adds InspectImageConfigAsync and InspectImageManifestAsync to the interface
src/Aspire.Hosting/Publishing/DockerContainerRuntime.cs Updated constructor to accept IProcessRunner
src/Aspire.Hosting/Publishing/PodmanContainerRuntime.cs Updated constructor to accept IProcessRunner
src/Aspire.Hosting.Azure/Provisioning/ProvisioningContext.cs UserPrincipal extended with RoleManagementPrincipalType
src/Aspire.Hosting.Azure/Provisioning/Internal/DefaultUserPrincipalProvider.cs Detects app-only tokens via idtyp/appid JWT claims
src/Aspire.Hosting.Azure/Provisioning/Provisioners/BicepProvisioner.cs Populates UserPrincipalId and PrincipalType well-known parameters
src/Aspire.Hosting.Azure/Provisioning/BicepUtilities.cs Threads ValueProviderContext to IValueProvider.GetValueAsync
src/Aspire.Hosting.Azure/AcrLoginService.cs Extracts retry logic, adds GetRefreshTokenAsync
src/Aspire.Hosting.Azure/IAcrLoginService.cs Adds GetRefreshTokenAsync and AcrRefreshToken record
src/Aspire.Hosting.Azure.Sandboxes/README.md New hosting README (has guideline violations)
tests/Aspire.Hosting.Azure.Tests/AzureSandboxesTests.cs 20 unit tests for sandbox resources, ADC client, provisioning
tests/Aspire.Hosting.Tests/Publishing/FakeContainerRuntime.cs Implements new InspectImage* methods
tests/Aspire.Hosting.Tests/Publishing/ContainerRuntimeBaseTests.cs Tests ExecuteContainerCommandForOutputAsync
tests/Aspire.Deployment.EndToEnd.Tests/AzureSandboxesDeploymentTests.cs Guarded E2E deployment test using TypeScript AppHost
tests/Aspire.Hosting.Azure.Tests/Snapshots/ (10+ files) Verified Bicep and JSON snapshot files
playground/AzureSandboxes/ Playground apps for manual validation
.github/workflows/deployment-tests.yml CI config for sandbox deployment tests

Copilot's findings

Files not reviewed (4)
  • playground/AzureSandboxes/NodeStorageApp/package-lock.json: Generated file
  • playground/AzureSandboxes/SandboxAppServiceMixed.Frontend/package-lock.json: Generated file
  • playground/TypeScriptApps/SandboxStaticSite/package-lock.json: Generated file
  • playground/TypeScriptApps/SandboxStaticSite/site/package-lock.json: Generated file
  • Files reviewed: 112/117 changed files
  • Comments generated: 2

Comment on lines +1 to +49
# Aspire.Hosting.Azure.Sandboxes library

Provides extension methods and resource definitions for an Aspire AppHost to configure Azure Container Apps sandboxes and connector gateway resources.

## Getting started

### Prerequisites

* An Azure subscription with access to the Azure Container Apps sandbox and connector gateway preview features.
* Azure permissions to create resource groups, sandbox groups, connector gateways, role assignments, and any referenced Azure resources.

### Install the package

In your AppHost project, install the Aspire Azure Sandboxes Hosting library with [NuGet](https://www.nuget.org):

```dotnetcli
dotnet add package Aspire.Hosting.Azure.Sandboxes
```

## Usage example

Then, in the _AppHost.cs_ file of `AppHost`, add an Azure sandbox group and publish a compute resource to it using the following methods:

```csharp
var sandboxGroup = builder.AddAzureSandboxGroup("sandboxes");

builder.AddProject<Projects.ApiService>("api")
.WithExternalHttpEndpoints()
.PublishAsSandbox(sandboxGroup);
```

## Connector trigger limitations

Connector gateway, connection, MCP server config, access policy, and trigger config resources can be modeled and provisioned by the AppHost. The current implementation does not run an interactive OAuth consent flow for connector connections. For connectors that require user consent, such as SharePoint, complete the connection authorization outside Aspire before relying on authenticated connector trigger delivery.

## Configure Azure Provisioning for local development

Adding Azure resources to the Aspire application model will automatically enable development-time provisioning for Azure resources so that you don't need to configure them manually. Provisioning requires a number of settings to be available via .NET configuration. The Aspire dashboard will prompt you to set these values if they are not already configured. See [Local Azure Provisioning](https://aspire.dev/integrations/cloud/azure/local-provisioning/) for more details.

> NOTE: Developers must have Owner access to the target subscription so that role assignments can be configured for the provisioned resources.

## Additional documentation

* https://learn.microsoft.com/azure/container-apps/sessions-code-interpreter
* https://learn.microsoft.com/azure/connectors/connectors-create-api-sharepointonline

## Feedback & contributing

https://github.com/microsoft/aspire
Comment on lines +98 to +118
public virtual Task<string> InspectImageConfigAsync(string imageName, CancellationToken cancellationToken)
{
ArgumentException.ThrowIfNullOrWhiteSpace(imageName);

return ExecuteContainerCommandForOutputAsync(
$"image inspect \"{imageName}\" --format \"{{{{json .Config}}}}\"",
"inspect image config",
imageName,
cancellationToken);
}

public virtual Task<string> InspectImageManifestAsync(string imageName, CancellationToken cancellationToken)
{
ArgumentException.ThrowIfNullOrWhiteSpace(imageName);

return ExecuteContainerCommandForOutputAsync(
$"manifest inspect \"{imageName}\"",
"inspect image manifest",
imageName,
cancellationToken);
}
@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

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

Successfully merging this pull request may close these issues.

2 participants