Render can [automatically deploy](/content/docs/deploys#automatic-deploys/index.html) your application each time you merge a change to your codebase:

You can also trigger [manual deploys](/content/docs/deploys#manual-deploys/index.html), both programmatically and in the Render Dashboard.

All service types redeploy with [zero downtime](/content/docs/deploys#zero-downtime-deploys/index.html), unless they attach a persistent disk.

You can view your service's deploy history and current live deploy from its **Deploys** page in the [Render Dashboard](https://dashboard.render.com/).

## Automatic deploys

As part of creating a service on Render, you link a branch of your Git provider repo (such as `main` or `production`). Whenever you push or merge a change to that branch, by default Render automatically rebuilds and redeploys your service.

Auto-deploys appear on your service's **Deploys** page in the Render Dashboard:

If needed, you can [skip an auto-deploy](/content/docs/deploys#skipping-an-auto-deploy/index.html) for a particular commit, or even [disable auto-deploys entirely](/content/docs/deploys#configuring-auto-deploys/index.html).

**Auto-deploys require a connected Git provider.** Services that use a [prebuilt Docker image](/content/docs/deploying-an-image/index.html) or a [public Git repository URL](/content/docs/web-services#deploy-your-own-code/index.html) must be deployed [manually](/content/docs/deploys#manual-deploys/index.html).

### Configuring auto-deploys

Configure a service's auto-deploy behavior from its **Settings** page in the [Render Dashboard](https://dashboard.render.com/):

Under **Auto-Deploy**, select one of the following:

| Option | Description |
| --- | --- |
| **On Commit** | Render triggers a deploy as soon as you push or merge a change to your linked branch.<br>This is the default behavior for a new service. |
| **After CI Checks Pass** | With each change to your linked branch, Render triggers a deploy _only after_ all of your repo's CI checks pass.<br>For details, see [Integrating with CI](/content/docs/deploys#integrating-with-ci/index.html). |
| **Off** | Disables auto-deploys for the service.<br>Choose this option if you only want to trigger deploys [manually](/content/docs/deploys#manual-deploys/index.html). |

#### Integrating with CI

If you set your service's [auto-deploy behavior](/content/docs/deploys#configuring-auto-deploys/index.html) to **After CI Checks Pass**, Render waits for a new commit's CI checks to complete before triggering a deploy. If _all_ checks pass, Render proceeds with the deploy.

For GitHub checks, Render considers a check "passed" if its [conclusion](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks#check-statuses-and-conclusions) is any of `success`, `neutral`, or `skipped`.

**Render does _not_ trigger a deploy if:**

- Zero checks are detected for the new commit
- At least one CI check fails for the new commit

If your repo doesn't run CI checks, use **On Commit** instead of **After CI Checks Pass** to enable auto-deploys.

Select the tab for your Git provider to learn which CI checks are supported:

GitHubGitHub

GitLabGitLab

BitbucketBitbucket

Render detects the results of CI checks originating from the following:

- GitHub Actions
- Tools that integrate with the [GitHub checks API](https://docs.github.com/en/rest/guides/using-the-rest-api-to-interact-with-checks), such as [CircleCI](https://circleci.com/docs/enable-checks)

Supported checks appear on commits and pull requests in the GitHub UI:

Render detects the results of jobs executed as part of [GitLab CI/CD pipelines](https://docs.gitlab.com/ci/pipelines/).

Render detects the results of steps executed as part of [Bitbucket Pipelines](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/).

### Skipping an auto-deploy

Certain changes to your codebase might not require a new deploy, such as edits to a `README` file. In these cases, you can include a **skip phrase** in your Git commit message to prevent the change from triggering an auto-deploy:

```shell
$ git commit -m "[skip render] Update README"
```

The skip phrase is one of `[skip render]` or `[render skip]`. You can also replace `render` with one of the following:

- `deploy`
- `cd`

When an auto-deploy is skipped, a corresponding entry appears on your service's **Events** page:

**For additional control over auto-deploys, configure [**build filters**](/content/docs/monorepo-support#setting-build-filters/index.html).**

With build filters, Render triggers an auto-deploy only if there are changes to particular files in your repo (no skip phrase required). [See details](/content/docs/monorepo-support#setting-build-filters/index.html).

## Manual deploys

You can manually trigger a Render service deploy in a variety of ways:

From your service's **Deploys** page in the [Render Dashboard](https://dashboard.render.com/), open the **Manual Deploy** dropdown:

Select a deploy option:

| Option | Description |
| --- | --- |
| **Deploy latest commit** | Deploys the most recent commit on your service's linked branch. |
| **Deploy a specific commit** | Deploys a specific commit from your service's linked repo. Specify a commit by its SHA, or by selecting it from a list of recent commits.<br>**This disables automatic deploys for the service.** This is because an automatic deploy might reintroduce commits you wanted to exclude from this deploy.<br>Learn more about [deploying a specific commit](/content/docs/deploys#deploying-a-specific-commit/index.html). |
| **Clear build cache & deploy** | Similar to **Deploy latest commit**, but first clears the service's build cache. This way, the new deploy doesn't reuse any artifacts generated during a previous build.<br>Use this option to incorporate changes to your service's build command, or to refresh stale static assets. |
| **Restart service** | Deploys the same commit that's _currently_ deployed for the service, with the same values for user-defined environment variables. For details, see [Restarting a service](/content/docs/deploys#restarting-a-service/index.html). |

Run the [Render CLI](/content/docs/cli/index.html)'s [`deploys create`](/content/docs/cli-reference#deploys-create/index.html) command:

```shell
$ render deploys create
```

This opens an interactive menu that lists the services in your workspace. Select a service to deploy, then proceed through the prompts.

Each Render service has a unique **Deploy Hook URL** available on its **Settings page** in the [Render Dashboard](https://dashboard.render.com/):

You can trigger a manual deploy by sending an HTTP GET or POST request to this URL. For details, see [Deploy Hooks](/content/docs/deploy-hooks/index.html).

Send a `POST` request to the Render API's [Trigger Deploy endpoint](https://api-docs.render.com/reference/create-deploy).

This endpoint accepts optional body parameters for clearing the service's build cache and/or deploying a specific commit. For services that pull a Docker image, you can specify the URL of the image to pull.
