Skip to content

feat(ci): guarded Coolify deploy for the Tracker — GT-435 - #114

Merged
beyondnetPeru merged 1 commit into
developfrom
feat/gt-435-tracker-deploy-job
Aug 2, 2026
Merged

feat(ci): guarded Coolify deploy for the Tracker — GT-435#114
beyondnetPeru merged 1 commit into
developfrom
feat/gt-435-tracker-deploy-job

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

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_ENABLED and running only from main, so it stays silent until then.

The one place it deliberately differs from the Core

The Core's equivalent job warns and exits 0 per 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:

configuration outcome
nothing set skip, with a warning
partially set failure
all set deploy

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 --fail is explicit, because without it curl exits 0 on 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:

This proves the REQUEST was accepted. It does not prove the new image is serving.

GT-448 asks 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

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).
@beyondnetPeru
beyondnetPeru merged commit 1252130 into develop Aug 2, 2026
6 checks passed
@beyondnetPeru
beyondnetPeru deleted the feat/gt-435-tracker-deploy-job branch August 2, 2026 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant