v0.4 beta Self-host or cloud
Put something under the wheel.
Chock sits between merge and production and holds the release until the checks you actually care about have answered. When one is still thinking, it says which one, and who can clear it.
Free for one service while the beta runs. No card, no sales call.
Run 2481
Held- unit + integration Passing
- contract tests Passing
- staging soak 20m Running
- error budget Queued
Nothing ships until every gate has answered
Three things a gate has to do.
Every team already has checks. What they usually do not have is one place that knows which check is holding the release, and says so without anyone opening four tabs.
In the repo
chock.ymlGates are declared in the repo they guard and reviewed like anything else in it. The gate that stopped Friday's deploy is in the diff, with a name on it and a reason underneath.
Name the holdup
HeldA held release reports the gate holding it, how long it has been held, and the person who can clear it. Nobody has to guess, and nobody has to ask in the channel.
Undo is cheap
ReversibleRollbacks run the same pipeline backwards and answer to the same gates. Getting back should cost what getting there cost, which is most of why anyone hesitates.
Ten lines, checked in.
One file at the root of the service. Chock reads it on every merge and holds the release until each gate answers or times out.
- No agent. It talks to the CI you already run.
- No new DSL. Gates are shell exit codes and webhooks.
- No silent pass. A gate that times out holds, it does not wave through.
service: api-gateway
environment: production
gates:
- name: unit + integration
run: make test
timeout: 10m
- name: staging soak
webhook: https://soak.internal/api-gateway
timeout: 20m
- name: error budget
run: ./bin/budget-check --window 7d
on_timeout: hold
Wedge one service and see.
Point Chock at a single service. If it has not caught something you would rather have caught within two weeks, remove the file and nothing about your pipeline changed.
Chock is a fictional product. This page exists to show a theme.