|
@@ -229,48 +229,91 @@ repo on the Docker Hub.
|
|
### Webhooks
|
|
### Webhooks
|
|
|
|
|
|
Automated Builds also include a Webhooks feature. Webhooks can be called
|
|
Automated Builds also include a Webhooks feature. Webhooks can be called
|
|
-after a successful repository push is made.
|
|
|
|
|
|
+after a successful repository push is made. This includes when a new tag is added
|
|
|
|
+to an existing image.
|
|
|
|
|
|
The webhook call will generate a HTTP POST with the following JSON
|
|
The webhook call will generate a HTTP POST with the following JSON
|
|
payload:
|
|
payload:
|
|
|
|
|
|
```
|
|
```
|
|
{
|
|
{
|
|
- "push_data":{
|
|
|
|
- "pushed_at":1385141110,
|
|
|
|
- "images":[
|
|
|
|
- "imagehash1",
|
|
|
|
- "imagehash2",
|
|
|
|
- "imagehash3"
|
|
|
|
- ],
|
|
|
|
- "pusher":"username"
|
|
|
|
- },
|
|
|
|
- "repository":{
|
|
|
|
- "status":"Active",
|
|
|
|
- "description":"my docker repo that does cool things",
|
|
|
|
- "is_automated":false,
|
|
|
|
- "full_description":"This is my full description",
|
|
|
|
- "repo_url":"https://registry.hub.docker.com/u/username/reponame/",
|
|
|
|
- "owner":"username",
|
|
|
|
- "is_official":false,
|
|
|
|
- "is_private":false,
|
|
|
|
- "name":"reponame",
|
|
|
|
- "namespace":"username",
|
|
|
|
- "star_count":1,
|
|
|
|
- "comment_count":1,
|
|
|
|
- "date_created":1370174400,
|
|
|
|
- "dockerfile":"my full dockerfile is listed here",
|
|
|
|
- "repo_name":"username/reponame"
|
|
|
|
- }
|
|
|
|
|
|
+ "callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
|
|
|
|
+ "push_data": {
|
|
|
|
+ "images": [],
|
|
|
|
+ "pushed_at": 1.417566161e+09,
|
|
|
|
+ "pusher": "trustedbuilder"
|
|
|
|
+ },
|
|
|
|
+ "repository": {
|
|
|
|
+ "comment_count": 0,
|
|
|
|
+ "date_created": 1.417494799e+09,
|
|
|
|
+ "description": "",
|
|
|
|
+ "dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\nMAINTAINER\u0009SvenDowideit@home.org.au\n\n\nVOLUME\u0009\u0009[\"/var/cache/apt-cacher-ng\"]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
|
|
|
|
+ "full_description": "Docker Hub based automated build from a GitHub repo",
|
|
|
|
+ "is_official": false,
|
|
|
|
+ "is_private": true,
|
|
|
|
+ "is_trusted": true,
|
|
|
|
+ "name": "testhook",
|
|
|
|
+ "namespace": "svendowideit",
|
|
|
|
+ "owner": "svendowideit",
|
|
|
|
+ "repo_name": "svendowideit/testhook",
|
|
|
|
+ "repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
|
|
|
|
+ "star_count": 0,
|
|
|
|
+ "status": "Active"
|
|
|
|
+ }
|
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
-Webhooks are available under the Settings menu of each Automated
|
|
|
|
-Build's repo.
|
|
|
|
|
|
+Webhooks are available under the Settings menu of each Repository.
|
|
|
|
|
|
> **Note:** If you want to test your webhook out we recommend using
|
|
> **Note:** If you want to test your webhook out we recommend using
|
|
> a tool like [requestb.in](http://requestb.in/).
|
|
> a tool like [requestb.in](http://requestb.in/).
|
|
|
|
|
|
|
|
+### Webhook chains
|
|
|
|
+
|
|
|
|
+Webhook chains allow you to chain calls to multiple services. For example,
|
|
|
|
+you can use this to trigger a deployment of your container only after
|
|
|
|
+it has been successfully tested, then update a separate Changelog once the
|
|
|
|
+deployment is complete.
|
|
|
|
+After clicking the "Add webhook" button, simply add as many URLs as necessary
|
|
|
|
+in your chain.
|
|
|
|
+
|
|
|
|
+The first webhook in a chain will be called after a successful push. Subsequent
|
|
|
|
+URLs will be contacted after the callback has been validated.
|
|
|
|
+
|
|
|
|
+#### Validating a callback
|
|
|
|
+
|
|
|
|
+In order to validate a callback in a webhook chain, you need to
|
|
|
|
+
|
|
|
|
+1. Retrieve the `callback_url` value in the request's JSON payload.
|
|
|
|
+1. Send a POST request to this URL containing a valid JSON body.
|
|
|
|
+
|
|
|
|
+> **Note**: A chain request will only be considered complete once the last
|
|
|
|
+> callback has been validated.
|
|
|
|
+
|
|
|
|
+To help you debug or simply view the results of your webhook(s),
|
|
|
|
+view the "History" of the webhook available on its settings page.
|
|
|
|
+
|
|
|
|
+#### Callback JSON data
|
|
|
|
+
|
|
|
|
+The following parameters are recognized in callback data:
|
|
|
|
+
|
|
|
|
+* `state` (required): Accepted values are `success`, `failure` and `error`.
|
|
|
|
+ If the state isn't `success`, the webhook chain will be interrupted.
|
|
|
|
+* `description`: A string containing miscellaneous information that will be
|
|
|
|
+ available on the Docker Hub. Maximum 255 characters.
|
|
|
|
+* `context`: A string containing the context of the operation. Can be retrieved
|
|
|
|
+ from the Docker Hub. Maximum 100 characters.
|
|
|
|
+* `target_url`: The URL where the results of the operation can be found. Can be
|
|
|
|
+ retrieved on the Docker Hub.
|
|
|
|
+
|
|
|
|
+*Example callback payload:*
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ "state": "success",
|
|
|
|
+ "description": "387 tests PASSED",
|
|
|
|
+ "context": "Continuous integration by Acme CI",
|
|
|
|
+ "target_url": "http://ci.acme.com/results/afd339c1c3d27"
|
|
|
|
+ }
|
|
|
|
|
|
### Repository links
|
|
### Repository links
|
|
|
|
|