Skip to main content

Configure Jira for Deploy Change Investigator

Last updated on

Track Jira issue deployments by sending deployment webhooks when issues are released or deployed.

Before you begin

  • Deploy Change Investigator setup: Deploy webhook integration created in AI SRE. Go to Deploy Change Investigator to create the webhook endpoint.
  • Jira Cloud access: Administrator permissions to create automation rules.
  • Deploy webhook URL: Deploy webhook URL from the AI SRE integrations page.
  • Deployment workflow: Status workflow that includes deployment states (for example, "In Production" or "Deployed").

Configure Jira automation

Use Jira automation rules to send webhooks when issues transition to deployment states.

Create automation rule for status transitions

Send a webhook when issues move to deployment statuses.

  1. Navigate to Project settings, then select Automation
  2. Click Create rule
  3. Configure the trigger:
    • When: Issue transitioned
    • From status: Any status
    • To status: Select deployment statuses (for example, "In Production" or "Deployed to Staging")
  4. Click New condition, then select Issue fields condition:
    • Field: Fix Version/s
    • Condition: is not empty
  5. Click New action, then select Send web request
  6. Configure the webhook:
    • Webhook URL: Paste the deploy webhook URL from AI SRE
    • HTTP method: POST
    • Headers: Add Content-Type: application/json
    • Webhook body: Custom data
  7. Paste the webhook payload described in the following sections
  8. Click Turn it on

Webhook payload

Status transition payload

{
"services": [{
"service": "{{issue.key}}",
"version": "{{issue.fixVersions.first.name}}"
}],
"environments": ["{{issue.status.name}}"],
"changeId": "{{issue.key}}-{{now}}",
"status": "SUCCESS",
"deployedBy": "{{initiator.emailAddress}}",
"deployTimestamp": "{{now.jiraDateTime}}"
}

Release version payload

For version release events:

{
"services": [{
"service": "{{version.project.key}}",
"version": "{{version.name}}"
}],
"environments": ["production"],
"changeId": "release-{{version.id}}",
"status": "SUCCESS",
"deployedBy": "{{initiator.emailAddress}}",
"deployTimestamp": "{{now.jiraDateTime}}"
}

Smart Values reference

Jira automation provides Smart Values for accessing issue and version data:

Smart ValueDescriptionExample
{{issue.key}}Issue keyPROJ-123
{{issue.fixVersions.first.name}}First fix version1.2.3
{{issue.status.name}}Current statusIn Production
{{issue.components.first.name}}First componentfrontend
{{initiator.emailAddress}}User who triggered transitionuser@example.com
{{now}}Current Unix timestamp1704067200000
{{now.jiraDateTime}}ISO 8601 timestamp2025-01-01T00:00:00.000+0000
{{version.name}}Version name1.2.3
{{version.project.key}}Project keyPROJ
{{version.id}}Version ID10001

Service identification strategies

Map Jira issues to services using different approaches:

Option 1: Use issue key

{
"services": [{
"service": "{{issue.key}}",
"version": "{{issue.fixVersions.first.name}}"
}]
}

Best for: Single-service projects where each issue represents a deployable change

Option 2: Use component

{
"services": [{
"service": "{{issue.components.first.name}}",
"version": "{{issue.fixVersions.first.name}}"
}]
}

Best for: Multi-service projects using Jira components to identify services

Option 3: Use custom field

{
"services": [{
"service": "{{issue.Service Name}}",
"version": "{{issue.fixVersions.first.name}}"
}]
}

Replace Service Name with your custom field name. Best for: Projects with custom service tracking fields.


Map statuses to environments

Map Jira statuses to deployment environments:

Jira StatusEnvironment Value
In Productionproduction
Deployed to Stagingstaging
In UATuat
Deployed to Developmentdevelopment

Use the status name directly:

{
"environments": ["{{issue.status.name}}"]
}

Or map to standardized names using conditions in your automation rule.


Testing webhooks

Test status transition

Transition a test issue and confirm the webhook reaches AI SRE:

  1. Create or select a test issue
  2. Add a Fix Version to the issue
  3. Transition the issue to a deployment status (for example, "In Production")
  4. Navigate to AI SRE, then select Integrations
  5. Click the More icon on the DEPLOY integration
  6. Select Debug
  7. Verify the webhook appears with the correct payload

Verify automation execution

Confirm the automation rule ran and sent the webhook:

  1. Navigate to Project settings, then select Automation
  2. Click your automation rule
  3. Select the Audit log tab
  4. Verify the rule executed and the webhook was sent
  5. Check for any error messages

Troubleshooting

Jira automation webhook not received in AI SRE

Confirm the automation rule is turned on, verify the webhook URL matches the AI SRE integration, and check that the rule execution appears in the automation audit log. Ensure Jira Cloud allows outbound HTTPS, and open the audit log to find the failed execution and its error message.

Jira deployments not showing in AI SRE Change Management

Ensure the issue has a Fix Version set before the transition, keep services[].service and services[].version consistent across deployments, and confirm the webhook payload is valid JSON by checking the automation audit log.

Jira Smart Values returning empty in AI SRE webhook payloads

Empty Smart Values are usually caused by a missing Fix Version, an unassigned component, or an empty or misnamed custom field. Add a condition to check the field is not empty before sending the webhook, or use fallback values such as {{issue.fixVersions.first.name.or("unknown")}}.

Jira timestamp format issues in AI SRE deploy webhooks

Use {{now.jiraDateTime}} for ISO 8601 format, which is recommended for APIs. Avoid using {{now}} alone because it returns a Unix timestamp in milliseconds.


Multi-service releases

For releases that deploy multiple services, create separate webhook calls or construct a services array:

{
"services": [
{"service": "frontend", "version": "{{version.name}}"},
{"service": "backend", "version": "{{version.name}}"},
{"service": "worker", "version": "{{version.name}}"}
],
"environments": ["production"],
"changeId": "release-{{version.id}}",
"status": "SUCCESS",
"deployedBy": "{{initiator.emailAddress}}",
"deployTimestamp": "{{now.jiraDateTime}}"
}

Best practices

Follow these practices to keep Jira deployment tracking reliable:

  • Set Fix Version before deployment: Ensure issues have a Fix Version set before transitioning to deployment statuses.
  • Use consistent service names: Keep service identifiers consistent across issues and deployments.
  • Test with real issues: Verify the automation rule works with actual project data before you enable it.
  • Monitor audit logs: Regularly check automation audit logs for failures.

Next steps