Skip to content

Add proxyless endpoint port allocator#17924

Open
danegsta wants to merge 12 commits into
mainfrom
danegsta/port-allocator
Open

Add proxyless endpoint port allocator#17924
danegsta wants to merge 12 commits into
mainfrom
danegsta/port-allocator

Conversation

@danegsta
Copy link
Copy Markdown
Member

@danegsta danegsta commented Jun 4, 2026

Description

Proxyless endpoints without explicit public ports currently have inconsistent run-mode behavior: executable endpoints can fail validation, while container endpoints can depend on delayed allocation. This PR gives DCP a single allocation path for undefined proxyless public ports so both resource types get predictable host ports before workload creation.

The implementation adds a singleton proxyless endpoint port allocator that scans a configurable stable port range, pre-excludes fixed public ports, and tracks allocator-assigned ports to avoid duplicates. Persistent resources store dynamically assigned proxyless public ports in user secrets and reuse them on later runs; if persistence fails, Aspire logs a warning that explains how to avoid recreating the persistent resource each run. The old delayed on-demand endpoint allocation callback path is removed.

User-facing usage

Proxyless endpoints without an explicit public port now get an assigned public port during DCP service preparation:

builder.AddExecutable("worker", "worker", Environment.CurrentDirectory)
       .WithEndpoint(name: "http", isProxied: false);

builder.AddContainer("database", "image")
       .WithEndpoint(name: "tcp", targetPort: 5432, isProxied: false);

The default allocation range is 10000-32767. It can be overridden with:

ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE=12000-13000

Persistent resources reuse the assigned port from user secrets when available.

Breaking changes

This changes proxyless endpoint allocation timing and behavior in run mode. Code or tests that expected executable proxyless endpoints without a public port to fail, or expected container proxyless public ports to be allocated later by DCP/container startup, should update to expect Aspire to assign the public port during service preparation.

Security considerations

This change assigns host public ports for proxyless endpoints and can persist selected port numbers in user secrets for persistent resources. The allocator probes candidate ports only to determine availability, and stored user-secrets values are port numbers rather than credentials.

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
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

🚀 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 -- 17924

Or

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

@danegsta danegsta added breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. and removed breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. labels Jun 4, 2026
@danegsta
Copy link
Copy Markdown
Member Author

danegsta commented Jun 4, 2026

PR Testing Report

PR Information

CLI Version Verification

  • Expected Commit: 8abafda
  • Installed Version: 13.5.0-pr.17924.g8abafdae
  • Status: Verified. The installed CLI version contains the PR head short SHA.

Changes Analyzed

Change Categories

  • CLI changes
  • Hosting changes: proxyless endpoint public-port allocation, fixed-port exclusion, and persisted ports for persistent resources.
  • Dashboard changes
  • Component/integration coverage exercised through Azure Storage emulator resources.
  • Test changes

Test Scenarios Executed

Scenario 1: Proxyless executable endpoints

Objective: Verify undefined proxyless executable endpoints receive non-ephemeral public ports and persistent executable endpoints keep their port across restart and a fresh AppHost start.
Coverage Type: Happy path and persistence
Status: Passed

Evidence:

  • Log directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.YSdjfCBpQx/scenarios/MinimalProxyPorts/test-logs-final
  • Summary:
describe1.json {'dynamic-exe': [30708], 'persistent-exe': [30709]}
describe-after-restart.json {'dynamic-exe': [30708], 'persistent-exe': [30709]}
describe2.json {'dynamic-exe': [32470], 'persistent-exe': [30709]}
persistent-stable-across-restart True
persistent-stable-across-new-start True

Observations: The non-persistent executable received a new allocated port on the second AppHost start. The persistent executable reused the same allocated port across restart and across a fresh AppHost start.


Scenario 2: Proxyless container endpoints

Objective: Verify undefined proxyless container endpoints use Aspire-assigned host ports, and a persistent container keeps its assigned host port across restart and a fresh AppHost start.
Coverage Type: Happy path and persistence
Status: Passed

Evidence:

  • Log directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.YSdjfCBpQx/scenarios/MinimalContainerPorts/test-logs-final
  • Summary:
describe1.json {'persistent-web': [25296], 'web': [25295]}
describe-after-restart.json {'persistent-web': [25296], 'web': [25295]}
describe2.json {'persistent-web': [25296], 'web': []}
persistent-stable-across-restart True
persistent-stable-across-new-start True

Observations: Both container endpoints received host ports in the stable allocator range, and the persistent container reused its host port across restart and a fresh AppHost start.


Scenario 3: Two persistent Azure Storage emulators

Objective: Verify multiple persistent Azure Storage emulator resources can allocate distinct proxyless endpoint ports and reuse them on a fresh AppHost start.
Coverage Type: Integration happy path and persistence
Status: Passed

Evidence:

  • Log directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.YSdjfCBpQx/scenarios/MinimalAzureStorage/test-logs-final
  • Summary:
describe1 {'storage1': {'type': 'AzureStorageResource', 'state': 'Running', 'ports': [26686, 26685, 26684], 'urls': ['http://localhost:26686', 'http://localhost:26685', 'http://localhost:26684']}, 'storage2': {'type': 'AzureStorageResource', 'state': 'Running', 'ports': [26689, 26688, 26687], 'urls': ['http://localhost:26689', 'http://localhost:26688', 'http://localhost:26687']}}
describe2 {'storage1': {'type': 'AzureStorageResource', 'state': 'Running', 'ports': [26686, 26685, 26684], 'urls': ['http://localhost:26686', 'http://localhost:26685', 'http://localhost:26684']}, 'storage2': {'type': 'AzureStorageResource', 'state': 'Running', 'ports': [26689, 26688, 26687], 'urls': ['http://localhost:26689', 'http://localhost:26688', 'http://localhost:26687']}}
storage1 stable True
storage2 stable True

Observations: The two emulators received distinct Blob/Queue/Table ports and reused the exact same port sets on the second AppHost start.


Scenario 4: Fixed-port pre-exclusion with constrained range

Objective: Verify a fixed proxyless public port is excluded from allocator candidates so a dynamic proxyless endpoint does not collide with it.
Coverage Type: Boundary
Status: Passed

Setup: ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE=12000-12001

Evidence:

  • Log directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.YSdjfCBpQx/scenarios/BoundaryPortsProject/test-logs-final
  • Summary:
{'dynamic-exe': [12001], 'fixed-exe': [12000]}

Observations: The fixed endpoint used port 12000, and the dynamic endpoint used the only remaining port, 12001.


Scenario 5: Invalid configured port range

Objective: Verify invalid ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE input fails safely with a validation error.
Coverage Type: Unhappy path
Status: Passed

Expected Outcome: Non-zero exit with a clear validation error.

Evidence:

  • Log directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.YSdjfCBpQx/scenarios/InvalidRangeProject/test-logs-final
  • Exit code: 2
  • Error excerpt:
Unhandled exception. System.AggregateException: One or more errors occurred. (Invalid value "not-a-range" for 
"ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE". Expected a port range formatted as "start-end", for example "10000-32767".)
 ---> System.InvalidOperationException: Invalid value "not-a-range" for "ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE". Expected
a port range formatted as "start-end", for example "10000-32767".
   at Aspire.Hosting.Dcp.ConfigureDefaultDcpOptions.ThrowInvalidProxylessEndpointPortRange(String configuredRange) in 
   at Aspire.Hosting.Dcp.ConfigureDefaultDcpOptions.ApplyProxylessEndpointPortRangeOverride(DcpOptions options,

Setup Notes

An initial attempt used aspire-starter projects from the PR hive, but those generated web projects failed to build with an unrelated namespace error in ProxyProject.Web.Components. To keep validation focused on this PR's hosting changes, the final scenarios used minimal AppHost-only projects with user secrets enabled.

Summary

Scenario Status Notes
Proxyless executable endpoints Passed Dynamic allocation works; persistent executable port is stable.
Proxyless container endpoints Passed Dynamic host-port allocation works; persistent container port is stable.
Two persistent Azure Storage emulators Passed Distinct emulator endpoint ports are stable across starts.
Fixed-port pre-exclusion boundary Passed Dynamic endpoint avoided the fixed public port.
Invalid configured port range Passed Startup failed with a clear validation error and non-zero exit.

Overall Result

PR VERIFIED

The tested proxyless endpoint allocation behaviors worked as expected for executables, containers, fixed-port exclusion, invalid range validation, and persistent Azure Storage emulator resources.

@danegsta danegsta marked this pull request as ready for review June 5, 2026 00:27
Copilot AI review requested due to automatic review settings June 5, 2026 00:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 makes proxyless endpoints (those with isProxied: false) behave consistently in run mode when no explicit public/host port is provided, by allocating a stable host port during DCP service preparation for both executables and containers. It centralizes allocation in a single allocator, removes the old on-demand endpoint allocation path, and adds persistence of allocated ports for persistent resources via user secrets.

Changes:

  • Introduces ProxylessEndpointPortAllocator and wires it into DCP service preparation to allocate undefined proxyless public ports from a configurable range (default 10000-32767).
  • Persists allocated proxyless ports for persistent resources via user secrets and reuses them on later runs; updates tests to validate stable ports/URLs across runs and restarts.
  • Removes the on-demand endpoint allocation annotation/path and updates endpoint resolution + DCP watcher/model utilities accordingly.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/Aspire.Hosting.Tests/Utils/PersistentContainerTestHelpers.cs Extends persistent-container reuse helper to optionally compare stable URLs/ports and handle multiple resources.
tests/Aspire.Hosting.Tests/Utils/MockUserSecretsManager.cs Captures secrets written/deleted so tests can assert port persistence behavior.
tests/Aspire.Hosting.Tests/EndpointReferenceTests.cs Removes on-demand endpoint allocation tests and helper now that the mechanism is deleted.
tests/Aspire.Hosting.Tests/DistributedApplicationTests.cs Updates expectations: proxyless endpoints without an explicit port are now allocated (no longer throw).
tests/Aspire.Hosting.Tests/Dcp/ProxylessEndpointPortAllocatorTests.cs Adds focused unit tests for allocator candidate selection, exclusions, and reservations.
tests/Aspire.Hosting.Tests/Dcp/DcpExecutorTests.cs Adds/updates DCP executor tests for allocated proxyless ports, persistence, exclusions, and restart stability.
tests/Aspire.Hosting.Tests/Dcp/DcpCliArgsTests.cs Adds validation + config override tests for ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE.
tests/Aspire.Hosting.Azure.Tests/AzureStorageEmulatorFunctionalTests.cs Updates persistence test to assert containers and ports/URLs are stable across runs.
src/Shared/KnownConfigNames.cs Adds ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE known config constant.
src/Aspire.Hosting/DistributedApplicationBuilder.cs Registers ProxylessEndpointPortAllocator as a singleton for DCP usage.
src/Aspire.Hosting/Dcp/ProxylessEndpointPortAllocator.cs New allocator: scans a stable range, probes port availability, excludes ports, and reserves per-endpoint allocations.
src/Aspire.Hosting/Dcp/DcpResourceWatcher.cs Removes “publish endpoints allocated” callback path; watcher now just applies observed service address info to endpoints.
src/Aspire.Hosting/Dcp/DcpOptions.cs Adds port range options, validation, and parsing of ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE.
src/Aspire.Hosting/Dcp/DcpModelUtilities.cs Removes dynamic proxyless container on-demand allocation path; simplifies service address application.
src/Aspire.Hosting/Dcp/DcpExecutor.cs Allocates undefined proxyless endpoint ports during service prep; persists/reuses for persistent lifetimes; removes delayed allocation flow.
src/Aspire.Hosting/Dcp/ContainerCreator.cs Stops interacting with removed on-demand allocation annotation during container configuration.
src/Aspire.Hosting/ApplicationModel/OnDemandEndpointAllocationAnnotation.cs Deletes the annotation type used for on-demand endpoint allocation.
src/Aspire.Hosting/ApplicationModel/EndpointReference.cs Removes on-demand allocation behavior from endpoint resolution; waits only for allocated endpoint snapshots.

@davidfowl davidfowl added the breaking-change Issue or PR that represents a breaking API or functional change over a prerelease. label Jun 5, 2026
danegsta and others added 4 commits June 5, 2026 09:47
Add a stateful allocator for proxyless endpoints without an explicit public port, including fixed-port pre-exclusion, configurable allocation range, persistent-resource port reuse through user secrets, and removal of delayed on-demand endpoint allocation callbacks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update stale proxyless endpoint coverage to expect Aspire-assigned ports and prevent DCP watcher service changes from publishing endpoint allocation events during startup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Make the test port-availability helper use the allocator's actual
  IPv4+IPv6 probe so it can't hand back a port the allocator rejects,
  and randomize the scan start so parallel tests don't converge on the
  same single-port ranges (flaky-test fixes).
- Remove the vestigial bool/out contract on TryApplyServiceAddressToEndpoint
  (always returned false): rename to ApplyServiceAddressToEndpoint, drop the
  dead endpoint-allocated publish branch and now-unused watcher plumbing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danegsta danegsta force-pushed the danegsta/port-allocator branch from 5a601bc to b3adb7b Compare June 5, 2026 16:47
danegsta and others added 2 commits June 5, 2026 10:24
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Re-running the failed jobs in the CI workflow for this pull request because 1 job was identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

Copy link
Copy Markdown
Contributor

@karolz-ms karolz-ms left a comment

Choose a reason for hiding this comment

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

Looks good overall, just some minor issues/code clarity suggestions

Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs Outdated
Comment thread src/Aspire.Hosting/Dcp/DcpExecutor.cs
Comment thread src/Aspire.Hosting/Dcp/ProxylessEndpointPortAllocator.cs Outdated
Comment thread tests/Aspire.Hosting.Tests/Dcp/DcpExecutorTests.cs Outdated
danegsta and others added 3 commits June 5, 2026 14:10
Co-authored-by: Karol Zadora-Przylecki <karolz@microsoft.com>
Co-authored-by: Karol Zadora-Przylecki <karolz@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danegsta and others added 3 commits June 5, 2026 16:29
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 6, 2026

CLI E2E Tests unknown — 113 passed, 0 failed, 2 unknown (commit 99eee27)

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_CSharpSingleFileInit_KeepsConfigChannel Recording · Job · CLI logs
UpdateToStable_TypeScriptSingleFileInit_KeepsConfigChannel Recording · Job · CLI logs
UpdateToStable_TypeScript_PreviewsStablePkgsAndKeepsChannel Recording · Job · CLI logs

📹 Recordings uploaded automatically from CI run #27046884362

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Issue or PR that represents a breaking API or functional change over a prerelease.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants