A deployment is the result of building your Project and making it available through a live URL.

This section contains information about making, managing, and understanding the behavior of deployments.

Making Deployments

There are multiple ways to make deployments with ZEIT Now; these include via a Git Integration, Now CLI, Deploy Hooks, and the Now API.

When making deployments, the Project will be uploaded and transformed into a production-ready output through the use of a Build Step.

Once the build step has completed successfully, a new, immutable deployment will be made available at the preview URL.

Git Integration

You can make deployments with Git by using either the Now for GitHub or Now for GitLab integrations.

When using these integrations, every push to a branch will provide you with a preview deployment to view your changes.

When merging to the default branch (commonly master), a production deployment will be made.

Now CLI

By using Now CLI, you can deploy Projects with a single command from your terminal.

To make a preview deployment, use the now command:

now

Making a preview deployment with the now command.

Note: The first deployment for a Project is always both a preview and production deployment.

To make a production deployment, use the now --prod command:

now --prod

Making a production deployment with the now command.

Deploy Hooks

Deploy Hooks allow you to create URLs that accept HTTP POST requests to trigger deployments, re-running the Build Step, from outside of ZEIT.

There are many use cases for Deploy Hooks, for example, rebuilding your site to reflect changes in a Headless CMS or scheduling deployments with Cron Jobs.

To create a Deploy Hook, visit the settings page of your Project where you can choose the branch to deploy when the HTTP endpoint receives a POST request.

Note: Deploy Hooks require a Git Integration to be installed.

You can find more information about Deploy Hooks in the documentation.

Now API

The ZEIT Now API can be used to make deployments by making an HTTP POST request to the relevant endpoint, including the files you wish to deploy as the body.

You can find more information about the Now API in the API Reference.

Deployment Types

There are two types of deployment on the ZEIT Now platform: preview and production.

Preview

Preview deployments are the default for all deployments. Each time you push to a branch or make a deployment using the now command, this is a preview deployment.

By making a preview deployment, the preview URL will be updated to reflect that of the latest deployment made.

The preview URL is provided either by the deployment output from Now CLI or on a pull or merge request when using a git integration and contains the name of the user or team to which the Project belongs.

Production

Production deployments are made in two different circumstances. Each time you merge to the default branch (commonly master) or make a deployment using the now --prod command, this is a production deployment.

By making a production deployment, the production domain(s) will be updated to reflect that of the latest deployment.

The production domain(s) are defined from the Domains tab of a Project on the ZEIT Dashboard.

To add a production domain to a Project, visit Domains from the Project Overview page, you can read more about this in the custom domains documentation.

Managing Deployments

You can manage your deployments either via the ZEIT Dashboard or Now CLI.

ZEIT Dashboard

The ZEIT Dashboard is the easiest way for you to manage your deployments.

Through the ZEIT Dashboard, you can find a variety of settings; including a Domains tab where you can add custom domains to your Project.

Now CLI and API

The Now CLI and Now API provide alternative ways to manage your deployments.

You can find a full list of the commands available in the Now CLI Reference, along with the deployments section of the Now API Reference.

Special Paths

All deployment URLs have two special pathnames:

  • /_src
  • /_logs

Source View

By appending /_src to a deployment URL or custom domain, the deployment inspector will be open and you'll be able to browse your deployment sources and build outputs.

Logs View

By appending /_logs to a deployment URL or custom domain, you will be able to see a realtime stream of logs from your deployment build processes and serverless invocations.

Security Considerations

These pathnames redirect to https://zeit.co and require logging in to access any sensitive information. A 3rd-party can never access your source or logs by crafting a deployment URL with one of these paths.

Technical Details

Deduplication

The URL structure of each preview deployment contains the name of the application and a random UID.

Now generates a new UID (and therefore a new deployment), by combining the following information into an internal digest that is looked up within the deployment database:

  • The entire deployment configuration from now.json.
  • The owner ID (either the user ID or team ID, if deploying within a team).
  • The description of the filesystem. This includes symlinks, modes, pathnames, and the checksum of each file's contents.

Now ensures that the digest is computed deterministically by sorting and ordering all the inputs involved in the algorithm.

Our lookup excludes deployments that are in an ERROR state – if a previous deployment matches the digest but failed to build correctly.

Skipping Deduplication

There are two ways to force a new deployment to be created when our system would otherwise deduplicate.

  • Make any change to any of the parameters considered by the algorithm, listed above. For example, even changing one character in a comment of a source file yields a new deployment.
  • Force a new deployment by instructing your client to do so.