Ticketing Integrations

Platforms supported: GitHub, Jira, Linear

Qodo Merge enhances the code review process by integrating with your ticket management system. It automatically surfaces relevant ticket data alongside code changes, helping reviewers understand the intent behind a pull request.

Ticket data

When a ticket is recognized, Qodo Merge fetches the following fields:

  1. Ticket Title

  2. Ticket Description

  3. Custom Fields (acceptance criteria)

  4. Subtasks (linked tasks)

  5. Labels

  6. Attached or screenshots

Ticket Recognition Criteria

A ticket is linked to a PR if:

  • The PR description contains a direct link to the ticket, or

  • The branch name begins with the ticket ID or number


Tool Behavior

Describe tool

When a ticket is recognized, the describe tool includes ticket content (title, description, labels) in its analysis. This provides the model with additional context for understanding the purpose behind the code changes.

Review tool

The review tool also incorporates ticket context into its analysis. Additionally, it evaluates whether the PR aligns with the ticket’s intent, assigning one of the following labels:

  • Fully Compliant: PR directly addresses the ticket requirements

  • Partially Compliant: PR covers some but not all of the requirements

  • Not Compliant: PR does not align with the ticket’s intent

  • PR Code Verified: Code appears valid for the ticket, but additional manual testing (e.g., UI checks across devices) is required


Configuration Options

By default, the tool will automatically validate if the PR complies with the referenced ticket. If you want to disable this feedback, add the following line to your configuration file:

[pr_reviewer]
require_ticket_analysis_review=false

You can also set:

[pr_reviewer]
check_pr_additional_content=true

When enabled, Qodo Merge will check that all code changes are related to the ticket. If unrelated content is found, the PR will be downgraded (e.g., to PR Code Verified), and a comment will indicate the extra content. The default is false.


GitHub Issues Integration

Qodo Merge will automatically recognize GitHub issues mentioned in the PR description and fetch the issue content.

Examples of valid GitHub issue references:

  • https://github.com/<ORG_NAME>/<REPO_NAME>/issues/<ISSUE_NUMBER>

  • #<ISSUE_NUMBER>

  • <ORG_NAME>/<REPO_NAME>#<ISSUE_NUMBER>

Since Qodo Merge is integrated with GitHub, it doesn't require any additional configuration to fetch GitHub issues.


Linear Integration

Linear App Authentication

The recommended way to authenticate with Linear is to connect the Linear app through the Qodo Merge portal.

Installation steps:

  1. Navigate to the Integrations tab.

  2. Click on the Linear button to connect the Linear app.

  3. Follow the authentication flow to authorize Qodo Merge to access your Linear workspace.

  4. Once connected, Qodo Merge will be able to fetch Linear ticket context for your PRs.

Qodo Merge will automatically detect Linear tickets using either of these methods:

Method 1: Description Reference:

Include a ticket reference in your PR description using either:

  • The complete Linear ticket URL: https://linear.app/[ORG_ID]/issue/[TICKET_ID]

  • The shortened ticket ID: [TICKET_ID] (e.g., ABC-123) This method requires linear_base_url configuration (see below).

Method 2: Branch Name Detection:

Name your branch with the ticket ID as a prefix (e.g., ABC-123-feature-description or feature/ABC-123/feature-description).

Linear Base URL

For shortened ticket IDs or branch detection, you must configure the Linear base URL in your configuration file under the [linear] section:

[linear]
linear_base_url = "https://linear.app/[ORG_ID]" # your Linear organization identifier

Jira Integration

Jira Cloud

There are two ways to authenticate with Jira Cloud:

1. Jira App Authentication

The recommended way to authenticate with Jira Cloud is to install the Qodo Merge app in your Jira Cloud instance. This will allow Qodo Merge to access Jira data on your behalf.

Installation steps:

  1. Click on Connect Jira Cloud to connect the Jira Cloud app.

  2. Click Accept.

  3. After installing the app, you will be redirected to the Qodo Merge registration page where you'll see a success message.

  4. Qodo Merge is now able to fetch Jira ticket context for your PRs.

2. Email/Token Authentication

You can create an API token from your Atlassian account:

  1. Click Create API token.

  2. Enter a name for your new token and click Create.

  3. Click Copy to clipboard.

  1. Add the following lines in your configuration file:

[jira]
jira_api_token = "YOUR_API_TOKEN"
jira_api_email = "YOUR_EMAIL"

Jira Data Center/Server

Using Basic Authentication

You can use your Jira username and password to authenticate with Jira Data Center/Server.

In your Configuration file/Environment variables/Secrets file, add the following lines:

jira_api_email = "your_username"
jira_api_token = "your_password"

Validating Basic authentication via Python script

If you are facing issues retrieving tickets in Qodo Merge with Basic auth, you can validate the flow using a Python script.

The following steps will help you check if the basic auth is working correctly, and if you can access the Jira ticket details:

  1. Run:

pip install jira==3.8.0
  1. Run the following Python script. Make sure to replace the placeholders with your actual values:

from jira import JIRA


if __name__ == "__main__":
    try:
        # Jira server URL
        server = "https://..."
        # Jira PAT token
        token_auth = "..."
        # Jira ticket code (e.g. "PROJ-123")
        ticket_id = "..."

        print("Initializing JiraServerTicketProvider with JIRA server")
        # Initialize JIRA client
        jira = JIRA(
            server=server,
            token_auth=token_auth,
            timeout=30
        )
        if jira:
            print(f"JIRA client initialized successfully")
        else:
            print("Error initializing JIRA client")

        # Fetch ticket details
        ticket = jira.issue(ticket_id)
        print(f"Ticket title: {ticket.fields.summary}")

    except Exception as e:
        print(f"Error fetching JIRA ticket details: {e}")

To integrate with Jira, you can link your PR to a ticket using either of these methods:

Method 1: Description Reference

Include a ticket reference in your PR description, using either the complete URL format https://<JIRA_ORG>.atlassian.net/browse/ISSUE-123 or the shortened ticket ID ISSUE-123 (without prefix or suffix for the shortened ID).

Method 2: Branch Name Detection

Name your branch with the ticket ID as a prefix (e.g., ISSUE-123-feature-description or ISSUE-123/feature-description).

Jira Base URL

For shortened ticket IDs or branch detection (method 2 for JIRA cloud), you must configure the Jira base URL in your configuration file under the [jira] section:

[jira]
jira_base_url = "https://<JIRA_ORG>.atlassian.net"

Where <JIRA_ORG> is your Jira organization identifier (e.g., mycompany for https://mycompany.atlassian.net).

Multi-JIRA Server Configuration

Qodo Merge supports connecting to multiple JIRA servers using different authentication methods.

Email/Token (Basic Auth)

Configure multiple servers using Email/Token authentication in your configuration file.

Example Configuration:

[jira]
# List of Jira Server URLs
jira_servers = ["https://company.atlassian.net", "https://datacenter.jira.com"]

# List of API tokens (for Cloud) or passwords (for Data Center)
jira_api_token = ["cloud_api_token_here", "datacenter_password"]

# List of emails (for Cloud) or usernames (for Data Center)
jira_api_email = ["[email protected]", "datacenter_username"]

# Default server for ticket IDs
# Each repository can configure its own jira_base_url in a local config file
# to choose which server to use by default.
jira_base_url = "https://company.atlassian.net"

PAT Auth

Configure multiple servers using Personal Access Token authentication in your configuration file.

Example Configuration:

[jira]
# List of JIRA server URLs
jira_servers = ["https://server1.jira.com", "https://server2.jira.com"]

# List of PAT tokens
jira_api_token = ["pat_token_1", "pat_token_2"]

# Default server for ticket IDs
# Each repository can configure its own jira_base_url in a local config file
# to choose which server to use by default.
jira_base_url = "https://server1.jira.com"

Mixed Authentication (Email/Token + PAT):

[jira]
jira_servers = ["https://company.atlassian.net", "https://server.jira.com"]
jira_api_token = ["cloud_api_token", "server_pat_token"]
jira_api_email = ["[email protected]", ""]  # Empty for PAT

Jira Cloud App

For Jira Cloud instances using App Authentication:

  1. Install the Qodo Merge app on each JIRA Cloud instance you want to connect to.

  2. In your configuration file, set the default server for ticket ID resolution:

[jira]
jira_base_url = "https://primary-team.atlassian.net"

Full URLs (e.g., https://other-team.atlassian.net/browse/TASK-456) will automatically use the correct connected instance.

Last updated

Was this helpful?