Using redeployment hooks

Overview

Redeployment hooks allow you to achieve continuous deployment by deploying your application whenever you push a change to your Git repository or push your CI successfully.

Accessing redeployment hooks

A unique redeployment hook URL is automatically generated for each Maestro applications. To access it:

  1. Open the application overview page from your Dashboard
  2. Click on Settings & Information in the Application panel on the right of the screen
  3. Click on the Information panel

You can use the Redeployment Hook URL to trigger automated deployments via your preferred Git or CI service.

Services modifier

You might have multiple services which rely on a combination of images or Git sources. Furthermore, the Git sources can be the same or different branches, or even completely different repositories.

To handle this you can append your redployment hook with a services modifier as a query string parameter.

Usage examples

An example redeployment hook without a services modifier:

https://hooks.cloud66.com/stacks/redeploy/xxxx/yyyy

An example redeployment hook with a single services modifier:

https://hooks.cloud66.com/stacks/redeploy/xxxx/yyyy?services=my-web-service

An example redeployment hook with a many-service modifier:

https://hooks.cloud66.com/stacks/redeploy/xxxx/yyyy?services=my-web-service,api

Note

The xxxx/yyyy in the examples is for illustrative purposes only and should be replaced with your redeployment URL on your application information page.

How service modifiers work

When a redeployment hook is invoked:

Note

In the case where the payload of the commit hook does not contain any branch information (Github and Bitbucket payload formats are supported) then the application will redeploy without attempting to match branch.

Github integration

Users who have signed in through Github (and who have enough access to create and edit deployment events for their applications on GitHub) can activate continuous deployments on GitHub.

To do this: access your Application settings via the toolbelt and set continuous.deploy to true.

$ cx settings set -s my_app_name continuous.deploy true

This will create a new webhook for your repository on GitHub or simply modify an existing one to let Cloud66 receive deployment events as well.

With this feature enabled, whenever you push a new commit, Cloud 66 will automatically generate a new deployment event based on receiving the push event from GitHub. We will also send deployment status events on different deployment statuses, such as started, canceled, succeeded and failed.

Adding redeployment hooks

The process of adding the hook differs by Git host, so we will guide you through doing this with GitHub, Bitbucket and a generic solution.

GitHub Setup

On your application overview page, click Settings & information in the right sidebar and then the Information tab. Then copy the URL provided in the Redeployment hook field.

Next, visit your GitHub repository, click Settings in the right sidebar, and then Webhooks & Services in the left sidebar.

In the Webhooks window, click Add webhook and paste the redeployment hook URL into the Payload URL field. When you confirm by clicking Add webhook, GitHub will automatically test your hook with a Ping and you should get a green HTTP200 response.

Bitbucket Setup

On your application overview page, click Settings & information in the right sidebar and then the Information tab. Then copy the URL provided in the Redeployment hook field.

Next, visit your Bitbucket repository, click Settings in the left sidebar, and then Hooks in the settings menu that appears. In the Select a hook field, select a POST hook, click Add hook and paste your redeployment hook URL into the field provided. Click Save to confirm.

Generic Setup

Most Git providers have a commit hook mechanism that you can use to post to the Cloud 66 redeployment hook URL. Please check your Git provider documentation for this information. If your Git provider has a non-conforming payload format (not compatible with Github or BitBucket formats) then please get in touch and we can extend our payload support!

Invoking your redeployment hook manually

To invoke the redeployment hook manually, you can POST an HTTP request to your redeployment hook URL. You can do this in curl like this:

curl -X POST [your redeployment hook URL]

Note

If you are manually invoking redeployments you should consider using [Cloud 66 Toolbelt](/maestro/references/toolbelt.html#redeploy-your-stack) instead, as it has additional features!