Skip to content
Latchkey

Render Deploy "Build failed" / "Exited with status 1" in CI

Render ran your build/start commands and the deploy failed - the build exited non-zero, the service crashed before passing its health check, or a missing env var/wrong root directory broke the run.

What this error means

The Render deploy log ends with a build failure or the service repeatedly restarting and failing the health check. A real build/start error reproduces every run; a missing env var fails until it is added in the dashboard or render.yaml.

Render deploy log
==> Build failed 😞
error Command failed with exit code 1.
# or
==> Service unhealthy: the service failed its health check on port 10000

Diagnose it: credentials and state before configuration

Infrastructure jobs fail on access far more often than on configuration. Confirm the runner can authenticate and reach remote state before reading the plan.

Terminal
# who am I on this runner?
<cloud-cli> auth list 2>/dev/null || <cloud-cli> sts get-caller-identity

# can the backend be reached and locked?
terraform init -backend=true -input=false

Common causes

Build or start command failed

The build command exited non-zero, or the start command crashes (wrong entrypoint, bad port). Render binds to PORT; not listening on it fails the health check.

Missing env var or wrong root directory

A required environment variable is not set in the Render service, or the root directory points at the wrong folder in a monorepo, so the build/run uses the wrong context.

How to fix it

Pin build/start, port, and env in render.yaml

Declare the commands, the port the app binds, and required env vars as infrastructure.

render.yaml
# render.yaml
services:
  - type: web
    name: api
    rootDir: apps/api
    buildCommand: npm ci && npm run build
    startCommand: npm start
    envVars:
      - key: DATABASE_URL
        sync: false

Listen on $PORT and read the build log

  1. Bind the server to process.env.PORT so Render’s health check reaches it.
  2. Reproduce the build command locally to read the real error.
  3. Add missing env vars in the service settings (or render.yaml) and redeploy.

How to prevent it

  • Always bind to $PORT and expose a health endpoint.
  • Declare build/start commands, root dir, and env vars in render.yaml.
  • Run the build locally before pushing so failures surface early.

Frequently asked questions

What causes Render deploy "Build failed" / "Exited with status 1" in CI?
There are 2 common causes: build or start command failed and missing env var or wrong root directory. The build command exited non-zero, or the start command crashes (wrong entrypoint, bad port).
How do I fix Render deploy "Build failed" / "Exited with status 1" in CI?
There are 2 fixes depending on which cause you have: pin build/start, port, and env in render.yaml and listen on $port and read the build log. Work through them in order, since the first is the most common.
What does Render deploy "Build failed" / "Exited with status 1" in CI actually mean?
The Render deploy log ends with a build failure or the service repeatedly restarting and failing the health check.
How do I stop Render deploy "Build failed" / "Exited with status 1" in CI happening again?
Always bind to $PORT and expose a health endpoint. The prevention section lists 3 changes that keep it from recurring.

Related guides

References

Not every red build is your code. Latchkey repairs the ones that are not, on the runner. Start free → 30-day trial · No credit card