CI: start db container before build so it warms up during build#167
Merged
Conversation
Moving docker compose up ahead of dotnet build lets the database container start up in parallel with the build, so it is more likely ready by the time EnsureDatabaseConnections and the tests run (helps the slower SqlServer container in particular). EnsureDatabaseConnections still gates the tests via its internal retry loop, so behaviour is unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Swaps the order of the
docker compose upanddotnet buildsteps in the CI workflow so the database container starts before the build, letting it warm up in parallel with the build instead of only afterwards.New step order per matrix job:
docker compose up -d <service>— DB container starts warming updotnet build— overlaps with DB startupEnsureDatabaseConnections— retries until the DB is reachabledotnet testWhy
The database (the SqlServer container in particular) can take a while to become reachable. Previously the build ran first, then the container started cold, so the build time was wasted serially before the DB even began starting. Overlapping them shaves the DB startup off the critical path and makes the DB more likely to be ready by the time tests run.
EnsureDatabaseConnectionsstill gates the tests via its internal retry loop, so behaviour is unchanged — this is purely a timing/ordering improvement.