Support deploying a subset of services as one dependency graph
- Dominant language
- Go
- Stars
- 569
- Forks
- 364
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 136
Description
### Describe the request
`azd deploy` currently accepts a single service or `--all`. There is no way to deploy a named subset of services as one operation.
Running several independent `azd deploy ` processes concurrently against one environment is not a workaround. They race on remote environment state, project hooks, image transactions, and any bootstrap configuration the hooks write.
### Proposal
Extend azd so one command accepts a set of selected services and:
1. Computes the dependency closure of the selection.
2. Constructs one induced execution graph from the existing project graph.
3. Executes project-level hooks exactly once, not once per service.
4. Uses one environment-state writer.
5. Preserves the existing parallel package, publish, and cutover behavior.
6. Rejects unknown services and incomplete dependency selections before any mutation.
### Why
We deploy eight services from one azd project. Most promotions change one service, or one shared image consumed by four services. Today we either deploy everything or give up transactional environment state. A native subset graph lets a one-service promotion cost one service's worth of time while keeping the single-writer guarantee.
Concretely, our staging promotion currently deploys all seven workloads on every run even when a single service changed. The parallel graph helps, but the floor is still set by the slowest service in the full set rather than by the change.
### Additional context
Happy to contribute the implementation if the shape is agreeable.
Contributor guide
Assessment
This issue has not been assessed yet.