Add Aspire daily regression workflow#209
Conversation
Add a GitHub Actions regression workflow that builds DCP, installs the latest daily Aspire CLI, scaffolds a file-based AppHost, and validates that a real Aspire app reaches healthy state against the local DCP binary. Keep the AzDO stage disabled for later policy review. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR adds an end-to-end Aspire regression gate that runs a real Aspire AppHost (executable + session/persistent containers on a shared network) orchestrated by a locally built DCP binary against the latest Aspire daily CLI, to catch DCP integration regressions (process orchestration, container creation, container networking) before a DCP build is inserted into Aspire. A new GitHub Actions workflow drives this on hosted Linux runners, and a previously-inactive AzDO stage is reshaped to the same CLI-based approach but kept disabled pending pipeline-policy review.
Changes:
- New
test/aspire/run-regression.shharness that scaffolds an AppHost from the daily channel, preserves the scaffolded#:sdkpin, appends a committed AppHost body, runs it viaDcpPublisher__CliPath, and waits for each resource to become healthy. - New
test/aspire/apphost-body.csscenario exercising an executable, a session container, and persistent containers with intentional mixed-case names/aliases. - New
.github/workflows/aspire-regression.ymlworkflow, updated (still disabled).azure/pipelines/aspire-test.ymlstage, andCONTRIBUTING.mddocumentation.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
test/aspire/run-regression.sh |
New CI harness; scaffolds/runs the AppHost and validates resource health (minor --help output range issue). |
test/aspire/apphost-body.cs |
New committed AppHost body defining the regression scenario resources. |
.github/workflows/aspire-regression.yml |
New GitHub Actions workflow; triggers include an undocumented pull_request gate. |
.azure/pipelines/aspire-test.yml |
Reworks the disabled AzDO stage to the CLI-based flow; artifact name/path verified against common-build.yml. |
CONTRIBUTING.md |
Documents the new regression test; trigger list omits PR runs present in the workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| pull_request: | ||
| branches: | ||
| - main |
| shift | ||
| ;; | ||
| -h | --help) | ||
| sed -n '2,25p' "${BASH_SOURCE[0]}" |
DCP regressions can show up only when Aspire runs a real AppHost against the DCP binary, especially around container networking and persistent resources. This adds a GitHub Actions regression gate that exercises that path against the latest Aspire daily build before DCP insertion.
The workflow builds DCP, installs the daily Aspire CLI, scaffolds a file-based AppHost from the daily channel, preserves the generated daily
#:sdkdirective, and appends a committed AppHost body that validates executable, session container, and persistent container resources. The AppHost reports startup and per-resource health markers, and the script fails unless every expected resource becomes healthy.A disabled AzDO stage is updated to the same CLI-based shape, but remains unwired with
condition: falsepending pipeline-policy review. The local script is intended for CI and does not clean up container runtime resources it creates; GitHub-hosted runner cleanup handles that for the active workflow.Validation:
test/aspire/run-regression.shlocally againstbin/dcpwith the daily Aspire CLI; all expected resources reached healthy.