Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
280 commits
Select commit Hold shift + click to select a range
9da0f62
[automated] Disable Aspire.Cli.Tests.Commands.RunCommandTests.RunComm…
github-actions[bot] Feb 3, 2026
a276070
[Automated] Update AI Foundry Models (#14246)
github-actions[bot] Feb 3, 2026
59014dd
Make `EndpointReferenceExpression.GetValueAsync()` context aware (#14…
afscrome Feb 3, 2026
ad038ce
[main] Update dependencies from microsoft/dcp (#14323)
dotnet-maestro[bot] Feb 3, 2026
797eabf
CLI fixes: MCP error message and help display (#14328)
davidfowl Feb 4, 2026
236a444
Updated AppService as stable for Aspire 13.2. (#14316)
ShilpiRach Feb 4, 2026
5cefb43
Change GetHostAddressExpression from explicit interface implementatio…
Copilot Feb 4, 2026
d74b950
Add E2E deployment test for React + ASP.NET Core to Azure App Service…
mitchdenny Feb 4, 2026
cae0991
Localized file check-in by OneLocBuild Task: Build definition ID 1309…
dotnet-bot Feb 4, 2026
1e1ace2
Lazy index docs in MCP tools and report progress (#14341)
JamesNK Feb 5, 2026
f2d1ba8
Hide "Show/Hide Hidden Resources" menu item when viewing single resou…
Copilot Feb 5, 2026
32f1b3f
Upload CLI E2E recordings as dedicated artifacts (#14355)
mitchdenny Feb 5, 2026
488c444
Refactor resource MCP refresh (#14353)
JamesNK Feb 5, 2026
befae9a
Add Kubernetes/Helm E2E test for CLI publishing (#14352)
mitchdenny Feb 5, 2026
de7ec1b
Refactor CLI telemetry MCP tools to use dashboard APIs (#14337)
JamesNK Feb 5, 2026
5805c56
Add initial Aspire.Hosting.Azure.Network integration (#13108)
eerhardt Feb 5, 2026
d10a9a1
Only export env values with FromSpec (#14356)
JamesNK Feb 5, 2026
f1d6966
Localized file check-in by OneLocBuild Task: Build definition ID 1309…
dotnet-bot Feb 5, 2026
9304c85
Allow subnet addressprefix to be a parameter. (#14358)
eerhardt Feb 6, 2026
527a2e7
Fix typo in documentation for pnpm configuration (#14359)
wicksipedia Feb 6, 2026
4db33d3
Suppress banner display for `aspire --version` (#14350)
Copilot Feb 6, 2026
34246e7
Add AKS starter deployment E2E test (#14351)
mitchdenny Feb 6, 2026
0c07cd7
Improve Aspire skill frontmatter for better AI agent routing (#14364)
spboyer Feb 6, 2026
4377e32
Add AutoVerify to tests (#14357)
eerhardt Feb 6, 2026
d350306
Add FileLoggerProvider for CLI log persistence and clean error messag…
davidfowl Feb 6, 2026
26553aa
Fix CLI stop command description to include resource stopping (#14372)
Copilot Feb 6, 2026
d6c3890
Add deployed compute resources and endpoints to pipeline deployment s…
Copilot Feb 6, 2026
4be5110
Implement IAzurePrivateEndpointTarget on more Azure resources (#14360)
eerhardt Feb 6, 2026
f5a3e9f
Fixing package signature verification (#14380)
joperezr Feb 6, 2026
a0c059f
Update dependencies from https://github.com/microsoft/dcp build 0.22.…
dotnet-maestro[bot] Feb 7, 2026
063a66e
Fix aspire doctor to only warn about multiple dev certs when any is u…
DamianEdwards Feb 7, 2026
159854b
Add dashboard URL to pipeline summary for ACA and App Service deploym…
Copilot Feb 7, 2026
a6b68c7
Add self-contained bundle infrastructure for polyglot apphost (#14105)
davidfowl Feb 8, 2026
ab4cebc
AKS E2E tests: Redis variant, port fix, and reliability improvements …
mitchdenny Feb 9, 2026
6e0fa87
Update Hex1b packages to 0.78.0 and add dependency-update skill (#14400)
mitchdenny Feb 9, 2026
6e4f142
Re-enable container tunnel tests (#14412)
karolz-ms Feb 9, 2026
c900804
Ensure DCP path is valid (#14415)
sebastienros Feb 9, 2026
32d6b11
Add ATS API surface tracking workflow (#14418)
sebastienros Feb 10, 2026
ea1aa0d
Add AspireExport coverage for Aspire.Hosting.Azure.Storage (#14420)
sebastienros Feb 10, 2026
0e2fce7
Fix Spectre markup escaping bugs across CLI commands (#14422)
davidfowl Feb 10, 2026
a30335e
Add NAT Gateway and Public IP Address support to Azure Virtual Networ…
eerhardt Feb 10, 2026
45d446d
Add Network Security Group (NSG) support for Azure Virtual Networks (…
eerhardt Feb 10, 2026
ad12501
Bump the microsoft_docker_images group across 3 directories with 1 up…
joperezr Feb 10, 2026
bfa424a
Make aspire.exe a self-extracting binary for polyglot scenarios (#14398)
davidfowl Feb 10, 2026
0a17ede
Add VNet deployment E2E tests for Storage Blob, Key Vault, and SQL Se…
mitchdenny Feb 10, 2026
bc92f06
Make Ubuntu runner not identify as WSL2 (#14440)
danegsta Feb 11, 2026
38ac828
Add AspireExport coverage for Azure KeyVault hosting integration (#14…
sebastienros Feb 11, 2026
7882b48
Add AspireExport attributes to Aspire.Hosting.RabbitMQ (#14433)
sebastienros Feb 11, 2026
c49f16b
Gate experimental polyglot languages behind per-language feature flag…
sebastienros Feb 11, 2026
c1a9b76
Add --no-build and --no-restore flags to aspire run command (#14401)
rynowak Feb 11, 2026
2b2d45f
Fall back to code-insiders when code is not found in start-code scrip…
mitchdenny Feb 11, 2026
bdd9815
Add 'aspire wait' CLI command (#14419)
sebastienros Feb 11, 2026
45ff89e
Add VS Code launch.json with Aspire debugger configs for all playgrou…
adamint Feb 11, 2026
8776a7f
Add a script for startup performance measurement (#14345)
karolz-ms Feb 11, 2026
5aa8a61
Add backmerge release workflow to automate merging changes from relea…
joperezr Feb 12, 2026
62d5c97
Bump Aspire branding from 13.2 to 13.3 (#14456)
Copilot Feb 12, 2026
b7ad6a2
Add override options for staging feed and quality in configuration sc…
joperezr Feb 12, 2026
8a82621
Update Azure.Core to latest version - lift all runtime dependencies t…
eerhardt Feb 12, 2026
ec55d98
Hide the aspire setup command if the bundle isn't available (#14464)
Copilot Feb 12, 2026
6d4f747
Update Arcade to latest version from the .NET 10 Eng channel (#13556)
dotnet-maestro[bot] Feb 12, 2026
fb80caf
Refactor backmerge PR creation to update existing PRs and streamline …
joperezr Feb 12, 2026
da9cf85
Fix transitive Azure role assignments through WaitFor dependencies (#…
Copilot Feb 12, 2026
715a77f
Stop ViteApps (build only containers) from getting Azure managed iden…
eerhardt Feb 12, 2026
79d5838
[release/13.2] Update Azure.Core to latest version - lift all runtime…
github-actions[bot] Feb 12, 2026
8ae1e4d
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Feb 12, 2026
e9c1fc1
[main] Fix transitive Azure role assignments through WaitFor dependen…
github-actions[bot] Feb 13, 2026
a459276
Merge pull request #14480 from dotnet/backmerge/release-13.2-to-main
joperezr Feb 13, 2026
9a28e7c
Update pipeline image names in public-pipeline-template (#14486)
joperezr Feb 13, 2026
7fcc0cb
Improve detach mode: fix pipe handle inheritance and unify log naming…
davidfowl Feb 13, 2026
16bd742
[Automated] Update AI Foundry Models (#14368)
github-actions[bot] Feb 13, 2026
27eaa9d
Handle polyglot settings package versions on read path (#14446)
sebastienros Feb 13, 2026
8df3c85
Remove auto-merge step from backmerge workflow (#14481)
joperezr Feb 13, 2026
e758ef2
Use pinned CLI version for staging channel in shared feed mode (#14469)
joperezr Feb 13, 2026
f431df3
Update pipeline images from vs2022preview to vs2026preview.scout (#14…
joperezr Feb 13, 2026
b893fe2
Fix Azure ServiceBus sku when using private endpoints (#14484)
eerhardt Feb 13, 2026
d193893
Fix AllocatedEndpoint API (#14459)
karolz-ms Feb 13, 2026
4ecfe0d
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Feb 14, 2026
7990dfc
Merge pull request #14500 from dotnet/backmerge/release-13.2-to-main
joperezr Feb 14, 2026
97d81bd
Manually update DCP to 0.22.5 (#14501)
danegsta Feb 14, 2026
c62d96b
Fix Spectre markup rendering in CLI selection prompts (#14497)
joperezr Feb 15, 2026
d16b523
Update DCP to version 0.22.6 (#14517)
karolz-ms Feb 17, 2026
477abdc
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Feb 17, 2026
a9e0ee1
[Automated] Backmerge release/13.2 to main (#14521)
joperezr Feb 17, 2026
17e330e
Add agentic workflow daily-repo-status (#14498)
joperezr Feb 17, 2026
e5b355e
Fix Windows pipeline image to use windows.vs2022.amd64.open (#14492)
joperezr Feb 17, 2026
24e33c9
Add Azure portal link for Resource Group in deploy pipeline summary (…
Copilot Feb 17, 2026
6905510
Fix MCP server tools/list infinite loop caused by notification race c…
sebastienros Feb 18, 2026
edad21b
[Automated] Backmerge release/13.2 to main (#14536)
github-actions[bot] Feb 18, 2026
10705f2
[Automated] Update AI Foundry Models (#14541)
github-actions[bot] Feb 18, 2026
4ba065e
[Automated] Update AI Foundry Models (#14546)
github-actions[bot] Feb 18, 2026
e89bba5
Detect CLI at default install paths when not on PATH (#14545)
adamint Feb 18, 2026
4ada2fc
[automated] Unquarantine stable tests with 25+ days zero failures (#1…
Copilot Feb 18, 2026
fa2336f
Partially fix quarantined test: Update stale snapshot for DeployAsync…
Copilot Feb 18, 2026
2497f1e
Fix permission denied error in Azure Pipelines (#14534)
eerhardt Feb 19, 2026
112b08c
Add WithCompactResourceNaming() to fix storage name collisions (#14442)
mitchdenny Feb 19, 2026
bba02f2
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Feb 19, 2026
ff754ac
Merge pull request #14561 from dotnet/backmerge/release-13.2-to-main
joperezr Feb 19, 2026
64bf57f
Update daily report to 13.2 milestone burndown (#14563)
joperezr Feb 19, 2026
17cae0d
Fix TryGetResourceToolMap cache miss causing perpetual tools/list ref…
mitchdenny Feb 19, 2026
dcddeba
Add AzureServiceTags with common Azure service tags for NSG rules (#1…
Copilot Feb 19, 2026
f3d3d63
Allow docker build secrets to be files (#14559)
eerhardt Feb 19, 2026
edc4aaa
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Feb 20, 2026
1dcab16
Fix CopilotCliRunner version parsing for 'GitHub Copilot CLI X.X.X' f…
mitchdenny Feb 20, 2026
7922bfe
Merge pull request #14587 from dotnet/backmerge/release-13.2-to-main
joperezr Feb 20, 2026
be8bbce
Suppress update notification when running with --detach (#14571)
mitchdenny Feb 20, 2026
7f9f56f
Add ACA deployment E2E tests for custom and existing ACR (#14510)
mitchdenny Feb 20, 2026
4534a15
Fix NU1009 error for CPM projects during aspire update (#14585)
joperezr Feb 20, 2026
83502ca
Update external NuGet dependencies to latest versions (#14549)
joperezr Feb 20, 2026
523dde0
Fixing issues with 13.2 burndown agentic workflow (#14597)
joperezr Feb 20, 2026
5da383b
Fix Copilot not working in forks (#14596)
wtgodbe Feb 20, 2026
b1733e9
Update container image tags to latest versions (#14555)
joperezr Feb 20, 2026
c99ea89
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Feb 21, 2026
a07dae8
[Automated] Backmerge release/13.2 to main (#14604)
joperezr Feb 21, 2026
d265192
fixed unreachable CircularBuffer.Decrement double decrement (#14609)
mitchcapper Feb 22, 2026
54c20aa
Fix aspire stop --non-interactive with multiple AppHosts (#14575)
mitchdenny Feb 23, 2026
faebb8c
Stop command exits with 0 when no AppHost is running (#14570)
mitchdenny Feb 23, 2026
ad19756
Centralize some E2E test code (#14369)
JamesNK Feb 23, 2026
535f8eb
Fix AKS deployment test timeouts and ACR token expiration (#14591)
mitchdenny Feb 23, 2026
439a565
Stop running AppHost before adding packages (#14573)
mitchdenny Feb 23, 2026
98d4769
Update dependencies from https://github.com/dotnet/arcade build 20260…
dotnet-maestro[bot] Feb 23, 2026
fe592c5
Fix dashboard notifications HTML escaping (#14615)
JamesNK Feb 23, 2026
ac3a8cf
Update resource JSON export to use name/value dictionaries where poss…
JamesNK Feb 23, 2026
d4f30cf
Update Aspire skill to use isolated mode only when needed (#14620)
JamesNK Feb 23, 2026
2fceb30
Add `WithMcpServer` extension method for fluent MCP server endpoint c…
Copilot Feb 23, 2026
f9f7acd
Improve aspire config list output formatting (#14600)
maddymontaquila Feb 23, 2026
1de5e43
Remove vendored OpenTelemetry.Instrumentation.SqlClient code (#14621)
eerhardt Feb 23, 2026
58cad5c
Add ACA Managed Redis deployment E2E test (#14584)
eerhardt Feb 23, 2026
d131e93
Add [Experimental] attribute to WithCompactResourceNaming API (#14583)
Copilot Feb 23, 2026
c258da6
Handle malformed MCP JSON config files gracefully (#14537)
mitchdenny Feb 23, 2026
63ff050
Fix port mismatch for bait-and-switch resources in Kubernetes publish…
bbartels Feb 23, 2026
2fda109
Fix Aspire CLI ANSI detection (#14624)
JamesNK Feb 23, 2026
5b74ea5
Add FluentUI packages to dependency-update skill's special handling l…
Copilot Feb 24, 2026
c53f155
Update Hex1b.* packages from 0.90.0 to 0.97.0 (#14635)
mitchdenny Feb 24, 2026
e2051e9
Update dependencies from https://github.com/microsoft/dcp build 0.22.…
dotnet-maestro[bot] Feb 24, 2026
1cd0225
Redirect human-readable messages to stderr when --format json is used…
mitchdenny Feb 24, 2026
08b1c88
Fix deployment E2E test for WithCompactResourceNaming experimental at…
mitchdenny Feb 24, 2026
08e7ce3
Use scheme instead of endpoint name when registering service discover…
danegsta Feb 24, 2026
04a0245
CLI: Grouped help, command renames, and ergonomics cleanup (#14599)
maddymontaquila Feb 24, 2026
b4fa644
Add skill for dashboard testing (#14611)
JamesNK Feb 24, 2026
61d07a8
LogsCommand improvements (#14632)
JamesNK Feb 24, 2026
3adee5f
Review feedback on dashboard skill (#14642)
JamesNK Feb 24, 2026
cb90b6f
Improve Azure deployment error output (#14576)
mitchdenny Feb 24, 2026
3d9f4e7
aspire-managed unified binary + native certificate management (#14441)
davidfowl Feb 24, 2026
c3d88e2
Revert "Fix port mismatch for bait-and-switch resources in Kubernetes…
joperezr Feb 24, 2026
f5b4bc0
Update release/13.2 DCP version to 0.22.7 (#14637)
karolz-ms Feb 24, 2026
be6509a
Fix port mismatch for bait-and-switch resources in Kubernetes publish…
joperezr Feb 24, 2026
97af3b0
Fix Windows bundle build: add Bundle.proj payload step to BuildAndTes…
davidfowl Feb 24, 2026
e50fec9
re-build schema and rename from .NET Aspire (#14655)
adamint Feb 24, 2026
0b99806
Fix LogsCommand to sort results by timestamp (#14645)
JamesNK Feb 24, 2026
89d4fc3
Fix focus trap stack overflow when opening Manage Telemetry from Sett…
adamint Feb 24, 2026
7da2127
Fix CLI installation scripts to work when Aspire is running (#14334)
Copilot Feb 25, 2026
ab7b9ca
Add backchannel log streaming with replay buffer and concurrent subsc…
mitchdenny Feb 25, 2026
eb58e52
Always display message when no app host, share common resource string…
JamesNK Feb 25, 2026
0b5acf0
Enable container tunnel by default (#14557)
karolz-ms Feb 25, 2026
05d2f7a
Write empty JSON from aspire ps to stdout (#14662)
JamesNK Feb 25, 2026
7bcaa30
Merge remote-tracking branch 'origin/release/13.2' into merge-release…
joperezr Feb 24, 2026
82f7a57
Merge pull request #14657 from dotnet/merge-release-13.2
joperezr Feb 25, 2026
03bd202
Add shortcut for aspire run --detached via aspire start (#14644)
davidfowl Feb 25, 2026
9205c10
Remove test-scenarios infrastructure (#14639)
mitchdenny Feb 25, 2026
fda1b2c
Add AspireExport coverage for Aspire.Hosting.Azure.ServiceBus (#14665)
sebastienros Feb 25, 2026
29c11dd
Backport E2E test refactoring (#14667)
JamesNK Feb 25, 2026
8026843
Rename --project to --apphost (#14674)
JamesNK Feb 25, 2026
08b58d3
Add polyglot exports for Azure Functions (#14672)
sebastienros Feb 25, 2026
1ffb9bb
Fix JSON-RPC error on disconnect and auto-restart Aspire debug sessio…
adamint Feb 25, 2026
a68b97f
Suppress error notifications for extension prompt cancellation in CLI…
adamint Feb 25, 2026
ce6f521
Hide staging channel from `aspire update --self` when feature flag is…
Copilot Feb 25, 2026
50474dc
Add fix-flaky-test skill and tests-reproduce CI workflow (#14586)
radical Feb 25, 2026
170a6b6
Upgrade gh-aw to v0.50.3 and add issue history fallback for burndown …
joperezr Feb 25, 2026
ca0d235
Fix SecurityRule name generation to include "to" and to add an index …
eerhardt Feb 25, 2026
bdb9312
Add WithPurgeTask to Azure Container Registry for scheduled image cle…
eerhardt Feb 25, 2026
4968a91
Bump Angular to 21.0.7 and .NET SDK to 10.0.103 for CG alerts (#14697)
joperezr Feb 25, 2026
686e71a
Fix ATS diff workflow (#14694)
sebastienros Feb 25, 2026
8545aaf
Add polyglot support for Azure OperationalInsights (#14701)
sebastienros Feb 25, 2026
da9955c
Use enums for polyglot role assignment in Azure resources (#14656)
sebastienros Feb 25, 2026
7dc9a6a
Consistently send messages to stderr when format is JSON. And display…
JamesNK Feb 26, 2026
edf8ca2
Fix flaky test: use thread-safe collections in FakeContainerRuntime a…
radical Feb 26, 2026
d22b484
Move run-test-repeatedly scripts to .github/workflows/fix-flaky-test/…
Copilot Feb 26, 2026
93a08e4
Merge remote-tracking branch 'origin/release/13.2' into merge/release…
joperezr Feb 26, 2026
97e02fa
Add polyglot exports for CognitiveServices (#14709)
sebastienros Feb 26, 2026
671769b
Update release pipeline to use 1ES.PublishNuget task and SBOM generat…
joperezr Feb 26, 2026
ab42387
Merge pull request #14719 from dotnet/merge/release-13.2-to-main
radical Feb 26, 2026
f06c9f0
Add E2E CLI test verifying JSON-only stdout for `aspire ps --format j…
Copilot Feb 26, 2026
8f984d3
[release/13.2] Add Homebrew and WinGet packaging for Aspire CLI (#14690)
radical Feb 26, 2026
e10e6e0
Add aspire secret command for managing AppHost user secrets (#14673)
davidfowl Feb 26, 2026
f21b59e
Resolve friendly resource names in aspire describe (#14726)
JamesNK Feb 26, 2026
714e8f6
Improve CLI tables (#14730)
JamesNK Feb 26, 2026
b782bf6
Warn when persistent containers lack user secrets configuration (#14491)
sebastienros Feb 26, 2026
f3d39ee
Move DOTNET_ENVIRONMENT/ASPNETCORE_ENVIRONMENT to code for polyglot a…
davidfowl Feb 26, 2026
288eb05
Fix NotSupportedException in AsyncTestHelpers.DefaultTimeout for IAsy…
Copilot Feb 26, 2026
f281947
Fix dashboard footer showing "Showing X resources" when Parameters ta…
Copilot Feb 26, 2026
b993fc2
Add polyglot support for CosmosDB (#14711)
sebastienros Feb 26, 2026
dfb8584
Follow-up: aspire secret table pattern and Development-only polyglot …
davidfowl Feb 26, 2026
192c032
De-dotnetify MessageStrings and InteractionStrings: replace dotnet us…
Copilot Feb 26, 2026
a9f62a6
Fix: Suppress MCP unsecured warnings when MCP is disabled (#14720)
Copilot Feb 26, 2026
a0d0ff6
Localized file check-in by OneLocBuild Task: Build definition ID 1309…
dotnet-bot Feb 26, 2026
41028a7
Backport user secrets messaging updates to release/13.2 (#14739)
Copilot Feb 26, 2026
143332f
Add polyglot exports for ApplicationInsights (#14751)
sebastienros Feb 27, 2026
9790005
Improve fix-flaky-test skill and reproduce workflow (#14710)
radical Feb 27, 2026
0816770
Update DCP to 0.22.8 (#14754)
danegsta Feb 27, 2026
cb2ea94
Add polyglot exports for MongoDB (#14752)
sebastienros Feb 27, 2026
267e787
Enable HTTPS support for vnext cosmosdb emulator (#14663)
danegsta Feb 27, 2026
0aebdb2
Update dependencies from https://github.com/microsoft/dcp build 0.22.8
dotnet-maestro[bot] Feb 27, 2026
6410986
Add polyglot exports for Kafka (#14750)
sebastienros Feb 27, 2026
e02ebaf
Add ACR purge task deployment E2E test (#14738)
eerhardt Feb 27, 2026
2ab60c1
Create KnownOtelConfigNames to centralize OTEL_* environment variable…
Copilot Feb 27, 2026
27c2f93
Merge origin/release/13.2 into main
radical Feb 27, 2026
9cc5f3d
run UpdateXlf for Aspire.Hosting
radical Feb 27, 2026
5ec58e8
Add AzDO public pipeline documentation (#14780)
radical Feb 27, 2026
5864c51
Add polyglot exports for PostgreSQL (#14777)
sebastienros Feb 28, 2026
7819069
Fix serialization issue with enum when building capabilities (#14784)
IEvangelist Feb 28, 2026
5168129
Add polyglot exports for Azure Sql (#14782)
sebastienros Feb 28, 2026
effd54a
Update polyglot playgrounds with pre-generated sdks (#14774)
sebastienros Feb 28, 2026
1bed05d
Merge pull request #14783 from radical/backmerge
radical Feb 28, 2026
b374204
Suppress animated banner auto-display in CI/non-interactive environme…
Copilot Feb 28, 2026
e1de0eb
Refactor aspire new layering for polyglot templates (#14677)
davidfowl Feb 28, 2026
38469af
Add polyglot exports for Azure PostgreSQL (#14787)
sebastienros Feb 28, 2026
ca3b88e
[release/13.2] Suppress animated banner auto-display in CI/non-intera…
github-actions[bot] Feb 28, 2026
96c272a
Fix and consolidate markup escaping in CLI (#14749)
JamesNK Mar 1, 2026
923619e
Add tsx devDependency to ts-starter template (#14818)
davidfowl Mar 1, 2026
4f2d02e
Fix aspire add in polyglot scenarios without .NET SDK (#14817)
davidfowl Mar 1, 2026
d613c7f
Fix describe duplicate rows and colorize resource name in describe (#…
JamesNK Mar 1, 2026
67de873
Remove dotnetSdkInstallationEnabled feature flag and SDK auto-install…
Copilot Mar 1, 2026
102fc88
Merge remote-tracking branch 'origin/release/13.2' into backmerge/rel…
github-actions[bot] Mar 2, 2026
99b6c5d
Merge pull request #14816 from dotnet/backmerge/release-13.2-to-main
radical Mar 2, 2026
7268674
Update dependencies from https://github.com/dotnet/arcade build 20260…
dotnet-maestro[bot] Mar 2, 2026
ea377a7
Many telemetry commands improvements (#14838)
JamesNK Mar 2, 2026
ee83e99
Cherry-pick VS Code extension fixes from main to release/13.2 (#14846)
adamint Mar 2, 2026
7ca15d6
Fix extension command table in README to match actual commands (#14687)
adamint Mar 2, 2026
f65c4f0
Use VS Code file pickers instead of prompting for strings (#14556)
adamint Mar 2, 2026
7f9396c
Pass open AppHost to CLI commands via --project flag (#14688)
adamint Mar 2, 2026
4d2c221
Merge pull request #14766 from dotnet/darc-main-0235aa0f-a3c0-405e-ad…
radical Mar 2, 2026
e807cd5
Add Aspire Activity Bar panel with running apphosts and resources tre…
adamint Mar 2, 2026
3f86164
Add more status indicators while work is in-progress (#14834)
JamesNK Mar 2, 2026
d0dd605
Bump VS Code extension version from 1.0.3 to 1.0.4 (#14860)
adamint Mar 2, 2026
02a4294
Add --disableProductStyleUrl to Azurite emulator args (#14855)
eerhardt Mar 2, 2026
547b7e0
[release/13.2] Move CI trigger patterns out of ci.yml into a separate…
Copilot Mar 3, 2026
8cc03e4
[automated] Unquarantine stable tests (#14862)
Copilot Mar 3, 2026
4348b3c
Merge origin/release/13.2 into main
radical Mar 3, 2026
788b194
[release/13.2][CI] Unified test splitting infrastructure for CI paral…
radical Mar 3, 2026
ce61ece
Consistent resource colors, resource colors match dashboard (#14832)
JamesNK Mar 3, 2026
098531f
Add status bar item showing Aspire app host status (#14869)
adamint Mar 3, 2026
d8157f8
Replace ANSI escape codes with Live display, remove IAnsiConsole depe…
JamesNK Mar 3, 2026
518cd60
Fix flaky E2E test: retry MSBuild evaluation on empty output (#14868)
mitchdenny Mar 3, 2026
cae16ca
Add polyglot exports for AppContainers (#14758)
sebastienros Mar 3, 2026
5a3c52a
Replace Playwright MCP server with Playwright CLI installation (#14569)
mitchdenny Mar 3, 2026
5338db3
Remove temporary nuget.org feed from NuGet.config (#14877)
mitchdenny Mar 3, 2026
7a05783
Merge remote-tracking branch 'origin/release/13.2' into ankj/backmerg…
radical Mar 3, 2026
42c456d
Merge pull request #14863 from dotnet/ankj/backmerge-13.2-to-main
radical Mar 3, 2026
bd9fc4f
Fix flaky test: use resilient HttpClient in YarpFunctionalTests (#14920)
radical Mar 3, 2026
5508da9
Watch fork for prototyping (#14259)
tmat Feb 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
"commands": [
"pwsh"
]
},
"hex1b.tool": {
"version": "0.78.0",
"commands": [
"hex1b"
]
}
}
}
1 change: 0 additions & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
FROM mcr.microsoft.com/devcontainers/dotnet:10.0-noble

# Workaround for expired Yarn GPG key (https://github.com/yarnpkg/yarn/issues/9218)
# This updates the yarn keyring before apt-get update is called by devcontainer features
RUN rm -f /etc/apt/sources.list.d/yarn.list 2>/dev/null || true \
&& rm -f /usr/share/keyrings/yarn-archive-keyring.gpg 2>/dev/null || true \
&& rm -f /usr/share/keyrings/yarn.gpg 2>/dev/null || true
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,5 @@
# https://github.com/github/linguist/issues/1626#issuecomment-401442069
# this only affects the repo's language statistics
*.h linguist-language=C

.github/workflows/*.lock.yml linguist-generated=true merge=ours
92 changes: 65 additions & 27 deletions .github/actions/check-changed-files/action.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
name: 'Check Changed Files'
description: |
Check if all changed files in a PR match provided regex patterns.
Check if all changed files in a PR match provided glob patterns.

This action compares changed files in a pull request against one or more regex patterns
This action compares changed files in a pull request against one or more glob patterns
and determines if all changed files match at least one of the provided patterns.
It only supports pull_request events.

Inputs:
- patterns: List of regex patterns (multiline string) to match against changed file paths
- patterns_file: Path to a file containing glob patterns (relative to repository root).
Lines starting with '#' and blank lines are ignored.

Pattern syntax:
- ** matches any path including directory separators (recursive)
- * matches any characters except a directory separator
- . is treated as a literal dot (no escaping needed)

Outputs:
- only_changed: Boolean indicating if all changed files matched the patterns
Expand All @@ -15,8 +22,8 @@ description: |
- matched_files: JSON array of files that matched at least one pattern
- unmatched_files: JSON array of files that didn't match any pattern
inputs:
patterns:
description: 'List of regex patterns to match against changed files'
patterns_file:
description: 'Path to a file containing glob patterns (relative to repository root)'
required: true

outputs:
Expand Down Expand Up @@ -57,12 +64,60 @@ runs:
exit 1
fi

# Read patterns from input (multiline string)
PATTERNS_INPUT="${{ inputs.patterns }}"
# Convert a glob pattern to an anchored ERE regex pattern.
# Glob syntax supported:
# ** matches any path including directory separators
# * matches any characters except a directory separator
# . is treated as a literal dot
# All other characters are treated as literals.
glob_to_regex() {
local glob="$1"
local result="$glob"
# Replace ** and * with placeholders before escaping
result="${result//\*\*/__DOUBLESTAR__}"
result="${result//\*/__STAR__}"
# Escape regex metacharacters that could appear in file paths.
# Note: { } ^ $ are not escaped because they are either not special
# in ERE mid-pattern or cannot appear in file paths.
result="${result//\\/\\\\}"
result="${result//./\\.}"
result="${result//+/\\+}"
result="${result//\?/\\?}"
result="${result//\[/\\[}"
result="${result//\]/\\]}"
result="${result//\(/\\(}"
result="${result//\)/\\)}"
result="${result//|/\\|}"
# Restore glob placeholders as regex
result="${result//__STAR__/[^/]*}"
result="${result//__DOUBLESTAR__/.*}"
# Anchor to full path
echo "^${result}$"
}

PATTERNS=()

PATTERNS_FILE="${{ inputs.patterns_file }}"

# Validate patterns input
if [ -z "$PATTERNS_INPUT" ]; then
echo "Error: patterns input is required"
# Read glob patterns from file, skip comments and blank lines
FULL_PATH="${GITHUB_WORKSPACE}/${PATTERNS_FILE}"
if [ ! -f "$FULL_PATH" ]; then
echo "Error: patterns_file '$FULL_PATH' not found"
exit 1
fi
while IFS= read -r line; do
# Remove leading/trailing whitespace
line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
# Skip blank lines and comments
if [ -z "$line" ] || [[ "$line" == \#* ]]; then
continue
fi
PATTERNS+=("$(glob_to_regex "$line")")
done < "$FULL_PATH"

# Check if we have any valid patterns
if [ ${#PATTERNS[@]} -eq 0 ]; then
echo "Error: No valid patterns provided"
exit 1
fi

Expand All @@ -77,23 +132,6 @@ runs:
echo "Changed files:"
echo "$CHANGED_FILES"

# Convert patterns to array and filter out empty lines
PATTERNS=()
while IFS= read -r pattern; do
# Remove leading/trailing whitespace
pattern=$(echo "$pattern" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
# Skip empty patterns
if [ -n "$pattern" ]; then
PATTERNS+=("$pattern")
fi
done <<< "$PATTERNS_INPUT"

# Check if we have any valid patterns
if [ ${#PATTERNS[@]} -eq 0 ]; then
echo "Error: No valid patterns provided"
exit 1
fi

# Initialize arrays
MATCHED_FILES=()
UNMATCHED_FILES=()
Expand Down
193 changes: 53 additions & 140 deletions .github/actions/enumerate-tests/action.yml
Original file line number Diff line number Diff line change
@@ -1,36 +1,32 @@
name: 'Enumerate test projects'
description: 'Enumerate list of test projects'
inputs:
includeIntegrations:
buildArgs:
required: false
type: boolean
default: false
includeTemplates:
required: false
type: boolean
default: false
includeCliE2E:
required: false
type: boolean
default: false
includeDeployment:
required: false
type: boolean
default: false

type: string
default: ''
description: 'Additional MSBuild arguments passed to the test matrix generation step (e.g., /p:IncludeTemplateTests=true /p:OnlyDeploymentTests=true)'

# Output format: JSON with structure {"include": [{...}, ...]}
# Each entry contains:
# - type: 'regular' | 'collection' | 'class'
# - projectName: Full project name (e.g., 'Aspire.Hosting.Tests')
# - name: Display name for the test run
# - shortname: Short identifier
# - testProjectPath: Relative path to the test project
# - workitemprefix: Prefix for work item naming
# - runs-on: GitHub Actions runner (e.g., 'ubuntu-latest', 'windows-latest')
# - testSessionTimeout: Timeout for the test session (e.g., '20m')
# - testHangTimeout: Timeout for hung tests (e.g., '10m')
# - requiresNugets: Boolean indicating if NuGet packages are needed
# - requiresTestSdk: Boolean indicating if test SDK is needed
# - extraTestArgs: Additional test arguments (e.g., '--filter-trait "Partition=P1"')
# - collection: (collection type only) Collection/partition name
# - classname: (class type only) Fully qualified test class name
outputs:
integrations_tests_matrix:
description: Integration tests matrix
value: ${{ steps.generate_integrations_matrix.outputs.integrations_tests_matrix }}
templates_tests_matrix:
description: Templates tests matrix
value: ${{ steps.generate_templates_matrix.outputs.templates_tests_matrix }}
cli_e2e_tests_matrix:
description: Cli E2E tests matrix
value: ${{ steps.generate_cli_e2e_matrix.outputs.cli_e2e_tests_matrix }}
deployment_tests_matrix:
description: Deployment E2E tests matrix
value: ${{ steps.generate_deployment_matrix.outputs.deployment_tests_matrix }}
all_tests:
description: Combined matrix of all test entries
value: ${{ steps.expand_matrix.outputs.all_tests }}
runs:
using: "composite"
steps:
Expand All @@ -42,123 +38,38 @@ runs:
with:
global-json-file: ${{ github.workspace }}/global.json

- name: Get list of integration tests
if: ${{ inputs.includeIntegrations }}
shell: pwsh
run: >
dotnet build ${{ github.workspace }}/tests/Shared/GetTestProjects.proj
/bl:${{ github.workspace }}/artifacts/log/Debug/GetTestProjects.binlog
/p:TestsListOutputPath=${{ github.workspace }}/artifacts/TestsForGithubActions.list
/p:ContinuousIntegrationBuild=true

- name: Generate list of template tests
if: ${{ inputs.includeTemplates }}
shell: pwsh
run: >
dotnet build ${{ github.workspace }}/tests/Aspire.Templates.Tests/Aspire.Templates.Tests.csproj
"/t:Build;ExtractTestClassNames"
/bl:${{ github.workspace }}/artifacts/log/Debug/BuildTemplatesTests.binlog
-p:ExtractTestClassNamesForHelix=true
-p:PrepareForHelix=true
-p:ExtractTestClassNamesPrefix=Aspire.Templates.Tests
-p:InstallBrowsersForPlaywright=false
- name: Restore
shell: bash
run: ./restore.sh

- name: Generate list of CLI E2E tests
if: ${{ inputs.includeCliE2E }}
shell: pwsh
run: >
dotnet build ${{ github.workspace }}/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj
"/t:Build;ExtractTestClassNames"
/bl:${{ github.workspace }}/artifacts/log/Debug/BuildCliEndToEndTests.binlog
-p:ExtractTestClassNamesForHelix=true
-p:PrepareForHelix=true
-p:ExtractTestClassNamesPrefix=Aspire.Cli.EndToEnd.Tests
-p:InstallBrowsersForPlaywright=false
- name: Build ExtractTestPartitions tool
shell: bash
run: dotnet build tools/ExtractTestPartitions/ExtractTestPartitions.csproj -c Release --nologo -v quiet

- name: Generate list of Deployment E2E tests
if: ${{ inputs.includeDeployment }}
shell: pwsh
- name: Generate canonical test matrix
shell: bash
run: >
dotnet build ${{ github.workspace }}/tests/Aspire.Deployment.EndToEnd.Tests/Aspire.Deployment.EndToEnd.Tests.csproj
"/t:Build;ExtractTestClassNames"
/bl:${{ github.workspace }}/artifacts/log/Debug/BuildDeploymentEndToEndTests.binlog
-p:ExtractTestClassNamesForHelix=true
-p:PrepareForHelix=true
-p:ExtractTestClassNamesPrefix=Aspire.Deployment.EndToEnd.Tests

- name: Generate tests matrix
id: generate_integrations_matrix
if: ${{ inputs.includeIntegrations }}
shell: pwsh
run: |
$filePath = "${{ github.workspace }}/artifacts/TestsForGithubActions.list"
$lines = Get-Content $filePath
$jsonObject = @{
"shortname" = $lines | Sort-Object
}
$jsonString = ConvertTo-Json $jsonObject -Compress
"integrations_tests_matrix=$jsonString"
"integrations_tests_matrix=$jsonString" | Out-File -FilePath $env:GITHUB_OUTPUT

- name: Generate templates matrix
id: generate_templates_matrix
if: ${{ inputs.includeTemplates }}
shell: pwsh
run: |
$inputFilePath = "${{ github.workspace }}/artifacts/helix/templates-tests/Aspire.Templates.Tests.tests.list"
$lines = Get-Content $inputFilePath

$prefix = "Aspire.Templates.Tests."
$lines = Get-Content $inputFilePath | ForEach-Object {
$_ -replace "^$prefix", ""
}

$jsonObject = @{
"shortname" = $lines | Sort-Object
}
$jsonString = ConvertTo-Json $jsonObject -Compress
"templates_tests_matrix=$jsonString"
"templates_tests_matrix=$jsonString" | Out-File -FilePath $env:GITHUB_OUTPUT

- name: Generate cli e2e matrix
id: generate_cli_e2e_matrix
if: ${{ inputs.includeCliE2E }}
./build.sh -test
/p:TestRunnerName=TestEnumerationRunsheetBuilder
/p:TestMatrixOutputPath=artifacts/canonical-test-matrix.json
/p:GenerateCIPartitions=true
/bl
${{ inputs.buildArgs }}

- name: Expand matrix for GitHub Actions
id: expand_matrix
shell: pwsh
run: |
$inputFilePath = "${{ github.workspace }}/artifacts/helix/cli-e2e-tests/Aspire.Cli.EndToEnd.Tests.tests.list"
$lines = Get-Content $inputFilePath

$prefix = "Aspire.Cli.EndToEnd.Tests."
$lines = @(Get-Content $inputFilePath | ForEach-Object {
$_ -replace "^$prefix", ""
})

$jsonObject = @{
"shortname" = @($lines | Sort-Object)
}
$jsonString = ConvertTo-Json $jsonObject -Compress
"cli_e2e_tests_matrix=$jsonString"
"cli_e2e_tests_matrix=$jsonString" | Out-File -FilePath $env:GITHUB_OUTPUT

- name: Generate deployment matrix
id: generate_deployment_matrix
if: ${{ inputs.includeDeployment }}
shell: pwsh
run: |
$inputFilePath = "${{ github.workspace }}/artifacts/helix/deployment-e2e-tests/Aspire.Deployment.EndToEnd.Tests.tests.list"
$lines = Get-Content $inputFilePath

$prefix = "Aspire.Deployment.EndToEnd.Tests."
$lines = @(Get-Content $inputFilePath | ForEach-Object {
$_ -replace "^$prefix", ""
})

$jsonObject = @{
"shortname" = @($lines | Sort-Object)
$canonicalMatrixPath = "${{ github.workspace }}/artifacts/canonical-test-matrix.json"
$expandScript = "${{ github.workspace }}/eng/scripts/expand-test-matrix-github.ps1"

if (Test-Path $canonicalMatrixPath) {
& $expandScript -CanonicalMatrixFile $canonicalMatrixPath -OutputToGitHubEnv
} else {
$emptyMatrix = '{"include":[]}'
"all_tests=$emptyMatrix" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "No canonical test matrix found, using empty matrix"
}
$jsonString = ConvertTo-Json $jsonObject -Compress
"deployment_tests_matrix=$jsonString"
"deployment_tests_matrix=$jsonString" | Out-File -FilePath $env:GITHUB_OUTPUT

- name: Upload logs
if: always()
Expand All @@ -167,4 +78,6 @@ runs:
name: logs-enumerate-tests-${{ runner.os }}
path: |
artifacts/log/**/*.binlog
artifacts/**/*.list
artifacts/**/*tests-partitions.json
artifacts/**/*tests-metadata.json
artifacts/canonical-test-matrix.json
28 changes: 28 additions & 0 deletions .github/instructions/test-review-guidelines.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Test Review Guidelines: Flaky Test Patterns

When reviewing test code or writing new tests, watch for these common patterns that lead to flaky tests. These patterns apply broadly across the Aspire test suite and are useful for **code review**, **test authoring**, and **root cause analysis** of intermittent failures.

## Common Flaky Test Patterns

| Pattern | Symptom | What to look for | Fix |
|---------|---------|-------------------|-----|
| **Thread-unsafe collections** | `Assert.Contains()` missing items; assertion sees partial data | Test fakes/mocks using `List<T>`, `Dictionary<T>`, or other non-thread-safe types that are mutated from concurrent callers (e.g., pipeline steps running via `Task.WhenAll`) | Add `lock` synchronization to mutation methods, or use `ConcurrentBag<T>` / `ConcurrentDictionary<T>`. Check **all** test fakes used by the test, not just the one in the stack trace. |
| **Race condition on startup** | Intermittent timeout or "not started" errors | `WaitForTextAsync("Application started.")` — log-based readiness checks are fragile under CI contention because log lines can arrive out of order or be delayed | Use `WaitForHealthyAsync()` or structured readiness checks instead of log text matching |
| **Shared timeout budget** | `TaskCanceledException` in fixture `InitializeAsync`; one phase starves the other | A single `CancellationTokenSource` shared across startup and readiness phases | Use separate `CancellationTokenSource` for each phase |
| **Sequential service waits** | `TaskCanceledException` in `WaitReadyStateAsync`; timeout under CI load | Waiting for multiple services one after another, where total wait = sum of individual waits | Wait for services in parallel with `Task.WhenAll` instead of sequentially |
| **Port conflicts** | `AddressInUseException` or `SocketException` | `randomizePorts: false` or hardcoded port numbers in test setup | Ensure `randomizePorts: true` in `TestDistributedApplicationBuilder.Create()` |
| **File locking (Windows)** | `IOException: The process cannot access the file` on Windows CI | Tests that create/read temp files without proper cleanup or exclusive access | Add retry logic, use unique temp directories per test, or ensure proper `IDisposable` cleanup |
| **Order-dependent state** | Test passes alone, fails when run with other tests | Static state, shared singletons, or environment variable mutations without cleanup | Ensure proper test isolation; use fresh instances in each test; clean up static state |
| **Contention-only failure** | Passes 100% in isolation, fails 10–20% in quarantine runs | Shared resources (ports, CTS, fixtures); the test only fails when running alongside other tests | Look for shared resources; parallelize waits; add timing margins; consider test isolation improvements |
| **Snapshot drift** | `VerifyException` with unexpected diff in Verify snapshots | Test output includes timestamps, GUIDs, or environment-specific paths | Use Verify scrubbers to normalize dynamic content; update snapshots with `dotnet verify accept -y` |

## Review Checklist for Test PRs

When reviewing PRs that add or modify tests, check for:

- [ ] **Thread safety**: Are test fakes/mocks mutated from concurrent code paths? If so, are they synchronized?
- [ ] **Readiness checks**: Does the test use `WaitForHealthyAsync()` rather than `WaitForTextAsync()` for service readiness?
- [ ] **Timeout isolation**: Does each phase (startup, readiness, assertion) have its own timeout budget?
- [ ] **Port randomization**: Is `randomizePorts: true` used (or is the default relied upon)?
- [ ] **Test isolation**: Does the test clean up all shared state? No static mutations without restoration?
- [ ] **Platform considerations**: Will this test work on Windows, Linux, and macOS? Watch for path separators, file locking, and encoding differences.
Loading
Loading