Warning |
---|
Throughout Summer’23 we plan to make Outcoming WebHooks obsolete and substitute it with full-fledged Release Automation. Existing hooks will keep on operating. At some point we will remove ability to create new hooks / clone existing. And after decent graceful period we will fully deprecate old WebHooks functionality. |
Table of Contents |
---|
Overview
Webhooks are aimed to integrate the Release Management app with other software in your organization to create a single and integrated workspace. Typical use cases are the following:
...
Webhooks configuration is located on the board administration tab.
...
Create a Hook
In order to create new webhook:
...
Webhook creation dialog has two tabs.
Summary
Headers
Summary tab
This tab contains the main properties
...
Injectable variables in URL. You are able to inject the following variables to the hook URL:
Package or version id
Package or version name
Destination column id. Internal id of the column where package or version has been moved. List of columns with their ids you can receive via REST API
Destination column name
Start date of package or version
Release date
Link to package or version. The direct URL to package or version which has triggered the webhook. Such a variable is very convenient for any kink of notifications so the people can navigate to release or version to see the details.
User name. Full name of a user who has triggered the webhook.
Environments variables
Name
Type
Build Numbers
Version only variables. They will not be replaced to any value if they will be used on the package context
Project name. Name of a parent version project
Project Key. Key of a parent version project
Project id. Id of a parent version project
Method. HTTP method which will be used for the webhook. Available options are:
GET
POST
PUT
DELETE
URL. The URL which will be called from the our server while the webhook execution.
Injectable variables in Body. The variables which could be injected into the body while the webhook execution. The variable list is the same as for URL injection plus
packages and versions description
Request body. The request body which will be used while the webhook execution. For instance, it could contact XML or JSON.
JS-like functions for injectable variables
To finetune your web hooks even further you can use JS-like function for injectable variables in URL and Body sections of the hook. Below is a list of functions that could be used:
...
entity.name
above variable is used for example only. Functions are applicable to any string variable from the list.
Headers tab
On the headers tab, you can define headers for the webhook HTTP request.
The headers could be added in Key-Value format. Multiple headers are supported.
...
Webhook execution and history
The webhook will be executed if the trigger condition will be fulfilled. In the current version, the condition is a move of package or version to a particular column.
...
For each history items, the details could be reviewed: - full HTTP request with headers and full HTTP response. This will help to spot and solve any potential problems.
...
Important (!): IPs whitelisting
Webhooks are outcoming requests from our servers. If you want to receive these requests in your internal network (probably protected by Firewall) you need to while list IPs of our 3 nodes in different availability zones, namely:
IPs |
---|
135.181.149.107 |
157.90.227.168 |
162.55.36.74 |
🚀 Use cases
Info |
---|
All the below cases are available as templates for all the new boards created. Please use integration hints to receive help directly in the App. |
...
Slack Integration
Webhooks could be used for pushing notifications to Slack. Let’s configure the notification for a case when a version is moved to Done status.
...
Step 8. Move any version to Done column and observe a notification in the slack channel.
...
🆕 MS Teams integration
Step 1. Go to the channel where you want to add the webhook and select ••• More options from the top navigation bar.
...
The
"type"
field must be"message"
.The
"attachments"
array contains a set of card objects.The
"contentType"
field must be set to Adaptive Card type.The
"content"
object is the card formatted in JSON.
Create Jira Issue
Let’s create a webhook which can help us to create a Jira ticket when a version is moved to UAT status on the board.
...
Add Authorization header
Key: Authorization
Value: BASE64_TOKEN_FROM_PREVIOUS_STEP
Add Content-Type header
Key: Content-Type
Value: application/json
Jenkins Integration
By using this guide, you can trigger builds in Jenkins remotely as a result of version and/or release appearance in a specific status.
...
From the user list, find a user from step 2, click on the “configure” icon (the wrench and screwdriver) next to the user name
Underneath the user’s full name and description is a section labelled “API Token”. Click on the “Show API Token” button. This will reveal the API token you need to provide when triggering a job by URL
With this information, you can now create a URL that looks like this:
http://user_name:your_tocken@your_jenkins.com/job/your_job_name/build?token=your_auth_tocken_from_step_3
More use cases
Please share your cases with us so we can share them here and help others.
...