Skip to main content
Skip table of contents

Trigger Custom Webhooks

You can use Webhooks to send web requests to any external systems (ex : Jira, Confluence, Bamboo, Jenkins, Gitlab, etc.) in response to changes performed in Golive or in Jira.

For example, you may want to automatically trigger a deployment job:

  • when the deployed version of an environment is updated in Golive

  • when the status of an environment is changed

  • when a new issue is linked to an Environment

  • ...

Using Webhooks means that your external tools do not have to periodically poll Jira (via the REST API) to determine whether a change has occurred in Golive.

Create a new Webhook

Open Automations page and create a new Automation of type "Webhook" to start configuration of a new webhook:

Configure the Endpoint

In order to call an external HTTP system, you have to configure its endpoint and how it should be called:

  • Type of Request (POST, GET, PUT, DELETE,...)

  • URL to send the request to

  • Headers (opt): useful to send authentication information, token, ... required by your target system (ex: basic authentication)

Default Payloads (body)

Golive sends standard JSON payloads as body of POST, UPDATE and PUT requests. Example of payload sent when "Environment Updated" event is triggered:

JSON
{
  "timestamp": 1616408079845,
  "event": "environment:updated",
  "environment": {
    "id": 11,
    "application": {
      "id": 21,
      "name": "AppTest",
      "deploymentAttributes": []
    },
    "category": {
      "id": 31,
      "name": "CategoryTest",
      "order": 1
    },
    "environmentPermissionScheme": {
      "id": 41,
      "name": "PermSchemeTest",
      "global": false
    },
    "status": {
      "id": 51,
      "name": "Up",
      "description": "StatusDescription",
      "color": "BLUE",
      "order": 1
    },
    "url": "http://fakeurl",
    "urlHtml": "<a href=\"http://fakeurl\" target=\"_blank\">http://fakeurl</a>",
    "deployment": {
      "deploymentId": 1,
      "id": 1,
      "versionName": "VersionName",
      "versionId": "123",
      "deployedTime": 1616408079845,
      "categoryId": 31,
      "categoryName": "CategoryTest",
      "applicationId": 21,
      "applicationName": "AppTest",
      "endTime": 1616408079845,
      "duration": 1000,
      "buildNumber": "123",
      "description": "DeployedDescription",
      "attributes": {
        "Parameter": "ParameterValue"
      }
    },
    "attributes": {
      "Data Backup": "Data Backup Value",
      "Owner": "OwnerValue"
    }
  },
  "user": {
    "self": "https://jira-staging.apwide.com/rest/api/2/user?username=admin",
    "name": "admin",
    "key": "admin",
    "emailAddress": "david@apwide.com",
    "avatarUrls": {
      "48x48": "https://jira-staging.apwide.com/secure/useravatar?ownerId=admin&avatarId=10741",
      "24x24": "https://jira-staging.apwide.com/secure/useravatar?size=small&ownerId=admin&avatarId=10741",
      "16x16": "https://jira-staging.apwide.com/secure/useravatar?size=xsmall&ownerId=admin&avatarId=10741",
      "32x32": "https://jira-staging.apwide.com/secure/useravatar?size=medium&ownerId=admin&avatarId=10741"
    },
    "displayName": "Thomas Anderson",
    "active": true,
    "timeZone": "Europe/Zurich"
  },
  "environmentChanges": [
    {
      "fieldType": "URL",
      "field": "URL",
      "from": "http://fake.mycompany.com",
      "fromString": "http://fake.mycompany.com",
      "to": "http://fake.new.mycompany.com",
      "toString": "http://fake.new.mycompany.com"
    },
    {
      "fieldType": "Owner",
      "field": "Owner",
      "from": "John Smith",
      "fromString": "John Smith",
      "to": "Jane Doe",
      "toString": "Jane Doe"
    }
  ]
}

Custom Payloads (body)

Enable Custom Payload toggle to completely customize your payload to fit the format required by your external system. It can be any type of XML, TXT, CSV, YAML, JSON,... or other proprietary formats.

Thanks to the embedded editor, you can insert dynamic content into your payloads using expressions, conditions and loops (Pebble Templates), for example:

JSON
{
    execution: "{{timestamp}}",
    event: "{{webhookEvent}}",
    environmentName: "{{environment.application.name}} {{environment.category.name}}",
    
{% if environment.status is not null %}
     status: "{{environment.status.name}}",
    {% endif %}
    {% if environment.deployment is not null %}
     status: "{{environment.deployment.versionName}}",
    {% endif %}
     attributes: [
    {% for attribute in environment.attributes %}
      "{{attribute.key}}": "{{attribute.value}}"
    {% endfor %}


    ]
}

Test your Webhooks

You can inspect and debug the payloads, requests, responses,... accessing the execution logs in Automations Page as described here. It will greatly help you to understand what may be changed to fix integration issues.

There are also free and very useful online tools available to help you test/configure your Webhooks. One of them is :

https://requestbin.com/

It will generate a unique URL you can use to configure your Webhooks. You can then easily visualize what has been sent by Jira accessing this unique URL with your browser.

Example:

Example: trigger a Jenkins Job

Learn how it is easy to trigger Jenkins jobs using Golive Webhooks:

https://narenchejara.medium.com/trigger-jenkins-job-remotely-using-jenkins-api-20973618a493

Use our Golive Jenkins Shared Lib to call back the Golive REST API in order to update back your environments from your Jenkins pipelines

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.