fix(ci): a half-configured Coolify deploy must fail, not warn — GT-324 - #392
Merged
Merged
Conversation
Each service checked its own hook and, when unset, warned and exited 0. That is right for "not configured yet" and wrong for "half configured": set the token, typo one hook, and CD reports success while that service never deploys. The only symptom would be an old image serving traffic nobody is watching. Nothing configured is still a skip. PARTIALLY configured is now a failure that names how many of the four values are present. The weakness was found while writing the Tracker's equivalent job (evolith_tracker#114). Leaving this one weaker after documenting why would have been the same staleness this board exists to catch, so both repositories now fail the same way. Two smaller hardenings in the same spirit. curl --fail is explicit, because without it curl exits 0 on a 4xx and a REJECTED hook reads as a successful deploy. And all three hooks are attempted before failing, so one bad hook does not hide the state of the other two. The job also says what it did NOT prove: Coolify is asynchronous, so a green step means the request was accepted, never that the new image is serving. GT-448 asks for a recorded run against the live service and this job cannot provide it - written into the step summary rather than left for a tick to imply. Classification exercised in all four states: nothing, complete, and two shapes of partial. Criterion 2 stays open and owner-blocked; what changed is that the day the secrets land, a typo fails loudly instead of passing.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
📊 Bilingual Coverage ImpactPR Changes
Repository Coverage
✅ Good: All EN changes have ES counterparts. Generated by GitHub Actions |
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.
Each service checked its own hook and, when unset, warned and exited 0. That is right for "not configured yet" and wrong for "half configured": set the token, typo one hook, and CD reports success while that service never deploys. The only symptom would be an old image serving traffic nobody is watching.
The weakness was found while writing the Tracker's equivalent job (
evolith_tracker#114). Leaving this one weaker after documenting why would have been the same staleness this board exists to catch, so both repositories now fail the same way.Two smaller hardenings in the same spirit:
curl --failis explicit — without it curl exits0on a 4xx, and a rejected hook reads as a successful deploy.And the job now states what it did not prove
Coolify is asynchronous, so a green step means the request was accepted, never that the new image is serving.
GT-448asks for a recorded run against the live service, and this job cannot provide that evidence — written into its step summary rather than left for a tick to imply.Verified
Classification exercised in all four states: nothing (skip, exit 0), complete (proceed), and two shapes of partial (fail, 3-of-4 and 1-of-4).
Criterion 2 stays open and owner-blocked. What changed is that the day the secrets land, a typo fails loudly instead of passing.
🤖 Generated with Claude Code