Problem
When working with multi-service applications, aspire deploy redeploys the entire application even when only a single service has changed. For inner-loop speed during active development against a deployed environment, developers need the ability to selectively deploy individual resources without re-running the full pipeline.
Current State
The pipeline step system already generates per-resource steps (e.g., build-<resource>, push-<resource>), visible via aspire do --list-steps. However, there is no CLI-level filter to target a single resource — aspire deploy always executes the full pipeline for all resources.
Proposed Experience
# Deploy only the "api" resource (build + push + deploy for just that resource)
aspire deploy --resource api
# Build only the "api" resource
aspire do build-api
# Deploy multiple specific resources
aspire deploy --resource api --resource worker
The --resource filter would:
- Resolve the named resource(s) from the application model
- Execute only the pipeline steps relevant to those resources (and their dependencies)
- Skip steps for unaffected resources
- Still run shared prerequisite steps (auth validation, parameter resolution)
Why This Matters
- Inner-loop speed — Redeploying a 10-service app for a one-line change in one service is too slow
- CI/CD efficiency — Monorepo pipelines can deploy only changed services
- Cost — Avoid unnecessary container image builds and pushes for unchanged services
- Parity with azd — Azure Developer CLI supports
azd deploy --service <name> for selective deployment
- Agent workflows — AI coding agents making targeted fixes should deploy only what they changed
Implementation Notes
The infrastructure for this largely exists:
WellKnownPipelineSteps already defines per-resource step patterns
PipelineStep has dependency tracking via DependsOn() / RequiredBy()
- The pipeline executor could filter the step DAG to only include steps matching the target resource(s) and their transitive dependencies
The main work is:
- Add
--resource option to DeployCommand and PipelineCommandBase
- Pass the filter to the AppHost pipeline executor
- Filter the step DAG before execution
Related Issues
Problem
When working with multi-service applications,
aspire deployredeploys the entire application even when only a single service has changed. For inner-loop speed during active development against a deployed environment, developers need the ability to selectively deploy individual resources without re-running the full pipeline.Current State
The pipeline step system already generates per-resource steps (e.g.,
build-<resource>,push-<resource>), visible viaaspire do --list-steps. However, there is no CLI-level filter to target a single resource —aspire deployalways executes the full pipeline for all resources.Proposed Experience
The
--resourcefilter would:Why This Matters
azd deploy --service <name>for selective deploymentImplementation Notes
The infrastructure for this largely exists:
WellKnownPipelineStepsalready defines per-resource step patternsPipelineStephas dependency tracking viaDependsOn()/RequiredBy()The main work is:
--resourceoption toDeployCommandandPipelineCommandBaseRelated Issues