What it does
Whenwait_for_ci is on, a push deploy polls the git provider for the commit’s
check runs and commit statuses:
- All gated checks pass: the deploy starts.
- A gated check fails: the deploy does not start. The failing check names are recorded.
- The wait times out: the deploy does not start.
skipped by CI gate: ...), appears as a note on the webhook delivery,
and fires the app’s deploy notification channels like any failed deploy.
GitHub is supported. For other providers the gate cannot read checks, logs a
warning and the push deploys as before. The missed-webhook poller and release
tag deploys are not gated.
Which checks count
- No required checks set: every check run and commit status on the commit
counts. If the commit reports no checks at all, the gate passes after
APP_CI_GATE_NO_CHECKS_WAITso a repository without CI is not blocked. - Required checks set: only those names are waited for. A required check that has not appeared yet counts as pending.
- The platform’s own deploy check is ignored, so the gate never waits on itself.
Configure
Dashboard: app, Source tab, “Wait for CI before deploying”. CLI:PUT /api/v1/apps/{name}/git-source/deploy-settings with wait_for_ci
(bool, default false) and ci_required_checks (list of names). Both are also
returned on GET /api/v1/apps/{name}/git-source.
Server settings
Provider rate limits are respected: a
Retry-After or X-RateLimit-Reset
header delays the next poll.