Failing test: Aspire.Hosting.Azure.Tests.AzureDeployerTests.DeployAsync_WithDockerfile_Works
- Dominant language
- C#
- Stars
- 6.3k
- Forks
- 991
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 196
Description
## Build Information
Build: https://dev.azure.com/dnceng-public/public/aspire/_build/results?buildId=1215837
Build error leg or test failing: Aspire.Hosting.Azure.Tests.AzureDeployerTests.DeployAsync_WithDockerfile_Works
Pull request:
## Error Message
Fill the error message using [step by step known issues guidance](https://github.com/dotnet/arcade/blob/main/Documentation/Projects/Build%20Analysis/KnownIssueJsonStepByStep.md).
```json
{
"ErrorMessage": "The given key 'AZURE_CONTAINER_REGISTRY_NAME'",
"ErrorPattern": "",
"BuildRetry": false,
"ExcludeConsoleLog": false
}
```
## Error Details
```yml
Error Message: System.Collections.Generic.KeyNotFoundException : The given key 'AZURE_CONTAINER_REGISTRY_NAME' was not present in the dictionary.
Stack Trace:
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Aspire.Hosting.Azure.Tests.AzureDeployerTests.DeployAsync_WithDockerfile_Works() in D:\a\_work\1\s\tests\Aspire.Hosting.Azure.Tests\AzureDeployerTests.cs:line 287
--- End of stack trace from previous location ---
```
Standard Output
```yml
| [2025-12-01T01:24:35] Aspire.Hosting.DistributedApplication Information: Aspire version: 13.1.0-ci
| [2025-12-01T01:24:35] Aspire.Hosting.Cli.BackchannelService Debug: Backchannel socket path was not specified.
| [2025-12-01T01:24:35] Aspire.Hosting.Backchannel.AuxiliaryBackchannelService Debug: Starting auxiliary backchannel service on socket path: C:\Users\runner\.aspire\cli\backchannels\aux.sock.12eaf280996a4c7c
| [2025-12-01T01:24:35] Aspire.Hosting.Publishing.PipelineExecutor Information: Initializing deployment for environment 'Test'
| [2025-12-01T01:24:35] Aspire.Hosting.Publishing.PipelineExecutor Information: Setting default deploy tag 'aspire-deploy-20251201012435' for compute resource(s).
| [2025-12-01T01:24:35] Aspire.Hosting.Azure.Provisioning.Internal.PublishModeProvisioningContextProvider Debug: Azure provisioning options have been handled successfully.
| [2025-12-01T01:24:35] Aspire.Hosting.Azure.Provisioning.Internal.PublishModeProvisioningContextProvider Information: Default subscription: Test Subscription (/subscriptions/12345678-1234-1234-1234-123456789012)
| [2025-12-01T01:24:35] Aspire.Hosting.Azure.Provisioning.Internal.PublishModeProvisioningContextProvider Information: Tenant: 87654321-4321-4321-4321-210987654321
| [2025-12-01T01:24:35] Aspire.Hosting.Azure.Provisioning.Internal.PublishModeProvisioningContextProvider Information: Using existing resource group test-rg.
| [2025-12-01T01:24:35] Aspire.Hosting.Backchannel.AuxiliaryBackchannelService Debug: Auxiliary backchannel listening on C:\Users\runner\.aspire\cli\backchannels\aux.sock.12eaf280996a4c7c
| [2025-12-01T01:24:35] Aspire.Hosting.ApplicationModel.ResourceNotificationService Debug: Resource env/env changed state: Starting
| [2025-12-01T01:24:35] Aspire.Hosting.ApplicationModel.ResourceNotificationService Trace: Version: 1 Resource env/env update published: ResourceType = AzureContainerAppEnvironmentResource, CreationTimeStamp = (null), State = { Text = Starting, Style = info }, IsHidden = False, HeathStatus = (null), ResourceReady = False, ExitCode = (null), Urls = { }, EnvironmentVariables = { }, Properties = { azure.subscription.id = 12345678-1234-1234-1234-123456789012 azure.resource.group = test-rg azure.tenant.domain = testdomain.onmicrosoft.com azure.location = westus2 }, HealthReports = { }, Commands = { }
| [2025-12-01T01:24:35] Aspire.Hosting.ApplicationModel.ResourceNotificationService Debug: Resource env/env changed state: Starting -> Compiling ARM template
| [2025-12-01T01:24:35] Aspire.Hosting.ApplicationModel.ResourceNotificationService Trace: Version: 2 Resource env/env update published: ResourceType = AzureContainerAppEnvironmentResource, CreationTimeStamp = (null), State = { Text = Compiling ARM template, Style = info }, IsHidden = False, HeathStatus = (null), ResourceReady = False, ExitCode = (null), Urls = { }, EnvironmentVariables = { }, Properties = { azure.subscription.id = 12345678-1234-1234-1234-123456789012 azure.resource.group = test-rg azure.tenant.domain = testdomain.onmicrosoft.com azure.location = westus2 }, HealthReports = { }, Commands = { }
| [2025-12-01T01:24:35] Aspire.Hosting.Publishing.PipelineExecutor Error: Step 'provision-env' failed.
| System.InvalidOperationException: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| ---> Aspire.Hosting.Azure.AzureCliNotOnPathException: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| at Aspire.Hosting.Azure.Provisioning.Internal.BicepCliCompiler.CompileBicepToArmAsync(String bicepFilePath, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Internal/BicepCompiler.cs:line 41
| at Aspire.Hosting.Azure.Provisioning.BicepProvisioner.GetOrCreateResourceAsync(AzureBicepResource resource, ProvisioningContext context, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Provisioners/BicepProvisioner.cs:line 154
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 337
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.<>c__DisplayClass0_0.<<-ctor>b__2>d.MoveNext() in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 52
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 747
| --- End of inner exception stack trace ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 752
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 563
| [2025-12-01T01:24:35] Aspire.Hosting.Publishing.PipelineExecutor Error: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| System.InvalidOperationException: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| ---> Aspire.Hosting.Azure.AzureCliNotOnPathException: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| at Aspire.Hosting.Azure.Provisioning.Internal.BicepCliCompiler.CompileBicepToArmAsync(String bicepFilePath, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Internal/BicepCompiler.cs:line 41
| at Aspire.Hosting.Azure.Provisioning.BicepProvisioner.GetOrCreateResourceAsync(AzureBicepResource resource, ProvisioningContext context, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Provisioners/BicepProvisioner.cs:line 154
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 337
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.<>c__DisplayClass0_0.<<-ctor>b__2>d.MoveNext() in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 52
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 747
| --- End of inner exception stack trace ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 752
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 563
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 571
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 577
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepsAsTaskDag(List`1 steps, Dictionary`2 stepsByName, PipelineContext context) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 611
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteAsync(PipelineContext context) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 291
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecutePipelineAsync(DistributedApplicationModel model, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 103
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecuteAsync(CancellationToken stoppingToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 55
| [2025-12-01T01:24:35] Microsoft.Extensions.Hosting.Internal.Host Error: BackgroundService failed
| Aspire.Hosting.DistributedApplicationException: Pipeline execution failed: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| ---> System.InvalidOperationException: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| ---> Aspire.Hosting.Azure.AzureCliNotOnPathException: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| at Aspire.Hosting.Azure.Provisioning.Internal.BicepCliCompiler.CompileBicepToArmAsync(String bicepFilePath, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Internal/BicepCompiler.cs:line 41
| at Aspire.Hosting.Azure.Provisioning.BicepProvisioner.GetOrCreateResourceAsync(AzureBicepResource resource, ProvisioningContext context, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Provisioners/BicepProvisioner.cs:line 154
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 337
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.<>c__DisplayClass0_0.<<-ctor>b__2>d.MoveNext() in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 52
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 747
| --- End of inner exception stack trace ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 752
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 563
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 571
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 577
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepsAsTaskDag(List`1 steps, Dictionary`2 stepsByName, PipelineContext context) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 611
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteAsync(PipelineContext context) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 291
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecutePipelineAsync(DistributedApplicationModel model, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 103
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecuteAsync(CancellationToken stoppingToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 55
| --- End of inner exception stack trace ---
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecuteAsync(CancellationToken stoppingToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 87
| at Microsoft.Extensions.Hosting.Internal.Host.TryExecuteBackgroundServiceAsync(BackgroundService backgroundService)
| [2025-12-01T01:24:35] Microsoft.Extensions.Hosting.Internal.Host Critical: The HostOptions.BackgroundServiceExceptionBehavior is configured to StopHost. A BackgroundService has thrown an unhandled exception, and the IHost instance is stopping. To avoid this behavior, configure this to Ignore; however the BackgroundService will not be restarted.
| Aspire.Hosting.DistributedApplicationException: Pipeline execution failed: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| ---> System.InvalidOperationException: Step 'provision-env' failed: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| ---> Aspire.Hosting.Azure.AzureCliNotOnPathException: Exception of type 'Aspire.Hosting.Azure.AzureCliNotOnPathException' was thrown.
| at Aspire.Hosting.Azure.Provisioning.Internal.BicepCliCompiler.CompileBicepToArmAsync(String bicepFilePath, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Internal/BicepCompiler.cs:line 41
| at Aspire.Hosting.Azure.Provisioning.BicepProvisioner.GetOrCreateResourceAsync(AzureBicepResource resource, ProvisioningContext context, CancellationToken cancellationToken) in /_/src/Aspire.Hosting.Azure/Provisioning/Provisioners/BicepProvisioner.cs:line 154
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 337
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.ProvisionAzureBicepResourceAsync(PipelineStepContext context, AzureBicepResource resource) in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 360
| at Aspire.Hosting.Azure.AzureBicepResource.<>c__DisplayClass0_0.<<-ctor>b__2>d.MoveNext() in /_/src/Aspire.Hosting.Azure/AzureBicepResource.cs:line 52
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 747
| --- End of inner exception stack trace ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepAsync(PipelineStep step, PipelineStepContext stepContext) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 752
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 563
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 571
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.<>c__DisplayClass18_0.<g__ExecuteStepWithDependencies|0>d.MoveNext() in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 577
| --- End of stack trace from previous location ---
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteStepsAsTaskDag(List`1 steps, Dictionary`2 stepsByName, PipelineContext context) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 611
| at Aspire.Hosting.Pipelines.DistributedApplicationPipeline.ExecuteAsync(PipelineContext context) in /_/src/Aspire.Hosting/Pipelines/DistributedApplicationPipeline.cs:line 291
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecutePipelineAsync(DistributedApplicationModel model, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 103
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecuteAsync(CancellationToken stoppingToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 55
| --- End of inner exception stack trace ---
| at Aspire.Hosting.Publishing.PipelineExecutor.ExecuteAsync(CancellationToken stoppingToken) in /_/src/Aspire.Hosting/Publishing/PipelineExecutor.cs:line 87
| at Microsoft.Extensions.Hosting.Internal.Host.TryExecuteBackgroundServiceAsync(BackgroundService backgroundService)
```
📊 **[View CI Failure Report](https://github.com/microsoft/aspire/issues/13300#issuecomment-4174836784)**
Contributor guide
Research direction
Start with AzureDeployerTests.cs, especially DeployAsync_WithDockerfile_Works at line 287, and reproduce the failing test. Trace the AZURE_CONTAINER_REGISTRY_NAME lookup and the AzureCliNotOnPathException through BicepCompiler.cs at line 41. Done means the test no longer fails with the missing-key error and the relevant test passes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, csharp
- Domain
- cloud, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100