feat(ci): guarded Coolify deploy for the Tracker — GT-435 - #114
Merged
Conversation
The publish half landed yesterday; this is the other half. Gated on vars.TRACKER_DEPLOY_ENABLED and running only from main, so it stays silent until somebody turns it on. DELIBERATE DIFFERENCE from the Core's equivalent job, which this otherwise mirrors. There, an unset hook warns and exits 0 per service. 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. Here nothing configured is a skip and PARTIALLY configured is a failure. A deploy everybody believes is wired and silently is not is the exact shape of the defects found all week. All three hooks are attempted before failing, so one bad hook does not hide the state of the other two - the same reason the build matrix does not fail fast. curl --fail is explicit, because without it curl exits 0 on a 4xx and a rejected hook would read as a successful deploy. And triggering is not deploying: Coolify works asynchronously, so a green job means the request was accepted, never that the new image is serving. The job writes that into its own step summary instead of letting the tick imply it, because GT-448 asks for a deploy evidenced by a recorded run against the live service and this job cannot provide that. Classification logic exercised in all four states: nothing set (skip), all set (proceed), and two shapes of partial (fail).
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.
The publish half landed yesterday. This is the other half: the Tracker can now be deployed, once someone decides to turn it on.
Gated on the repository variable
TRACKER_DEPLOY_ENABLEDand running only frommain, so it stays silent until then.The one place it deliberately differs from the Core
The Core's equivalent job warns and exits
0per service when a hook is unset. 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.Here the two states are separated:
A deploy everybody believes is wired and silently is not is the exact shape of the defects this week keeps surfacing.
Two smaller decisions in the same spirit: all three hooks are attempted before failing, so one bad hook does not hide the state of the other two — the same reason the build matrix does not fail fast. And
curl --failis explicit, because without it curl exits0on a 4xx and a rejected hook would read as a successful deploy.Triggering is not deploying
Coolify accepts the webhook and works asynchronously, so a green job means the request was accepted — never that the new image is serving traffic. The job writes that into its own step summary instead of letting the tick imply it:
GT-448asks for a deploy evidenced by a recorded run against the live service. This job cannot provide that evidence, and says so.Verified
Classification logic exercised in all four states — nothing set (skip, exit 0), all set (proceed), and two shapes of partial (fail, naming how many of the four values are present).
What the owner still has to do
One variable and four secrets, listed in
product/infra/helm/README.md. Until they exist the job is inert by design.🤖 Generated with Claude Code