Deployments
How Easel builds deployments, and how Preview and Production environments differ.
A deployment is a built version of your application: the static assets, functions, and routing produced from one source revision with one set of project settings and environment variables. Easel never changes a deployment after it's built. A new commit or a settings change takes effect in a new deployment.
How a deployment is built
Each deployment moves through Queued, Provisioning, Building, and Assigning domains to Ready. Once it's Ready, it serves traffic on its own unique URL. A deployment that doesn't get there ends as Failed, Canceled, or Skipped. See Deployment statuses.
When a deployment is created, Easel takes a snapshot of the project's build settings and the environment variables for its environment. The build and its functions use that snapshot for the life of the deployment, so later changes apply only to new deployments.
Preview and Production
Every deployment belongs to one of two environments. The environment decides which environment variables the deployment gets and whether it can serve your production domains.
| Preview | Production | |
|---|---|---|
| Purpose | Test changes before release | Serve live traffic |
| Created by | Pushes to any other branch, easel deploy | Pushes to the production branch, easel deploy --prod, Deploy in the dashboard |
| Environment variables | Preview values | Production values |
| URLs | Unique, branch, and pull request URLs | Unique URL, plus production domains when Current |
| Access | Public unless deployment protection is on | Production domains are always public |
Easel never serves a Preview build on production domains. Promoting a Preview deployment rebuilds the same commit as a new Production deployment. See Promote a Preview deployment.
Production branch
Each project has one production branch, main by default. Change it in
Project settings → Git. The change applies to future pushes only: existing
deployments keep their environment and URLs.
Environment isn't traffic
A Production deployment doesn't always serve your production domains. It can be building, Staged (Ready but not yet promoted), Current, or an older deployment you can roll back to. Promote production builds automatically, in Project settings → Git, decides whether a Ready Production deployment goes live on its own. See Promote and roll back.
Create a deployment
- Git: connect a repository and every push creates a deployment. Pushes to the production branch create Production deployments, and pushes to other branches create Preview deployments. See Git deployments.
- CLI: run
easel deployfrom your project directory for a Preview deployment, oreasel deploy --prodfor Production. See Deploy from the CLI. - Dashboard: Deploy on the project overview creates a Production deployment from the latest commit on the production branch.
To deploy a commit that isn't the latest on its branch, check it out and run
easel deploy, or promote a Ready Preview deployment of that commit.
There's no special first deployment. A project can have Preview deployments before its first Production one. Generated Easel hostnames are assigned when a deployment is Ready, and custom domains are added separately in Project settings → Domains. See Domains.