feat(ci): gate the shape ADR-0022 exists for - #16
Merged
Conversation
deploy-check.sh asserted exactly one build target and every deploy job ran one adapter at a time, so a project with two applications β the thing ADR-0022 changed everything to make possible β was covered by no gate at all. I had verified it once by hand and deleted the repository, which is not a gate. It now takes a list of adapters: builds every target the project publishes, gives each its own tag, waits for each container, and curls each application on its own port. deploy-multi-app runs it weekly, like compose, and the schedule notifier knows about it β a weekly lane nobody watches is theatre. Verified locally against a real stack: web liveness (http://localhost:8080/api/health/live): 200 api liveness (http://localhost:8081/health/live): 200 api readiness (http://localhost:8081/health/ready): 200 The single-adapter path was run before and after and 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.
What this changes
scripts/deploy-check.shtakes a list of adapters instead of one. It builds every target the project publishes, tags each separately, waits for each container, and curls each application on its own port..github/workflows/adapters.ymlgainsdeploy-multi-app, runningnextjs nestjs --db postgresweekly.Why
The gate asserted
expected exactly one build target, and every deploy job inadapters.ymlruns one adapter at a time. So the multi-application shape β the thing ADR-0022 changed the whole image and compose layout to make possible β was covered by no gate at all.I verified it once by hand earlier in this session, on a repository I then deleted. That is not a gate; it is a memory of a gate.
deploy-multi-appis weekly rather than per pull request, likecomposebeside it: two generations plus two image builds. The schedule notifier lists it, because a weekly lane nobody watches is theatre β that is the notifier's own comment, and it was already true of the jobs it did list.Two ADRs asserted the old limit and now say otherwise: ADR-0021's "gate 2 covers one image, not a project" bullet is retired, and ADR-0022 records what the gate covers now.
How it was verified
Run locally against a real two-application stack:
Two images built, two containers healthy, each application answering on the port
add_app_serviceallocated it, and the api's readiness reaching the database.The single-adapter path was run before and after the change and is unchanged (
nestjs --db postgres, liveness and readiness both 200). The per-adapterdeployjobs here exercise it again on every run.One bug the real run caught:
COMPOSE_PROJECT_NAMEwas built with${APPS[*]// /-}, which substitutes inside each element rather than on the joined string, so the join space survived and compose rejecteddeploy-check-web api. Both images had already built at that point β the failure was purely the name.Not exercised: the new count assertion (
expected N build target(s)). Its negative path is a comparison of two integers, and the failure paths around it β unhealthy container, non-200 curl β are the samediecalls the single-adapter run has always had.Checklist
mise run lintpassesmise run test-runnerpasses