jira-datacenter

Jira Data Center integration — create issues, get/update, add comments, transition status, search via JQL, manage users and groups.

Installation

The Jira module is an external module — it must be added and compiled into your Shiro binary. No proxy server required; it talks directly to Jira Data Center via PAT.

bash
# 1. Register the module
shiro add module github.com/rajitk13/shiro-jira-module

# 2. Recompile shiro with the jira module baked in
shiro build

shiro build auto-generates internal/cli/registry.go, runs go mod tidy, and recompiles the binary.

Environment Variables

VariableRequiredDescription
JIRA_BASE_URLYesBase URL of your Jira instance (e.g. https://jira.corp.example.com)
JIRA_API_TOKENYesPersonal Access Token (PAT) — sent as Bearer token

Operations

create_issue

FieldTypeDescription
projectrequiredstringProject key (e.g. DEV)
summaryrequiredstringIssue title
descriptionstringIssue description
issue_typestringIssue type — defaults to "Task"
prioritystringHigh, Medium, Low
assigneestringAccount ID or username of assignee
labelsstringComma-separated labels
json
{
  "id": "create_ticket",
  "type": "jira",
  "config": {
    "operation": "create_issue",
    "project": "DEV",
    "summary": "Deploy: {{steps.ai_review.text}}",
    "description": "Automated ticket from CI pipeline",
    "issue_type": "Task",
    "priority": "High"
  }
}

get_issue

FieldTypeDescription
issue_keyrequiredstringIssue key (e.g. DEV-42)
json
{
  "id": "fetch_ticket",
  "type": "jira",
  "config": {
    "operation": "get_issue",
    "issue_key": "DEV-42"
  }
}

update_issue

FieldTypeDescription
issue_keyrequiredstringIssue key (e.g. DEV-42)
summarystringNew summary
descriptionstringNew description
prioritystringNew priority
assigneestringNew assignee username
labelsstringComma-separated labels

add_comment

FieldTypeDescription
issue_keyrequiredstringIssue key (e.g. DEV-42)
commentrequiredstringComment body text
json
{
  "id": "post_comment",
  "type": "jira",
  "config": {
    "operation": "add_comment",
    "issue_key": "{{steps.create_ticket.output.issue_key}}",
    "comment": "AI Review:\n{{steps.ai_review.text}}"
  },
  "depends_on": ["create_ticket", "ai_review"]
}

transition_issue

FieldTypeDescription
issue_keyrequiredstringIssue key (e.g. DEV-42)
transition_idrequiredstringJira transition ID (from Jira UI workflow)

search_issues

FieldTypeDescription
jqlrequiredstringJQL query string
json
{
  "id": "find_open_bugs",
  "type": "jira",
  "config": {
    "operation": "search_issues",
    "jql": "project = DEV AND issuetype = Bug AND status != Done ORDER BY priority DESC"
  }
}

User & Group Operations

get_user

Get user info. Requires username or account_id.

get_user_groups

Get groups for a user. Requires username or account_id.

add_user_to_group

Add user to a group. Requires admin permissions. Needs username/account_id + group_name.

get_group_members

List all members of a group. Requires group_name.

Output Fields

FieldTypeDescription
issue_keystringJira issue key (e.g. DEV-42)
issue_idstringInternal Jira issue ID
urlstringBrowser URL to the issue
comment_idstringID of the created comment (add_comment only)
totalnumberTotal results count (search_issues only)
dataobjectFull issue or search result payload from Jira API
userobjectUser information (get_user only)
groupsarrayList of groups (get_user_groups only)
membersarrayList of group members (get_group_members only)
successbooleanOperation success flag (add_user_to_group only)

Full Workflow Example

AI code review → create Jira ticket → post comment with review output

json
{
  "name": "ai-review-to-jira",
  "steps": [
    {
      "id": "get_diff",
      "type": "git.diff",
      "config": { "operation": "diff", "base_branch": "main" }
    },
    {
      "id": "ai_review",
      "type": "ai.generate",
      "config": {
        "prompt": "Review this code diff:\n{{steps.get_diff.diff}}",
        "model": "gpt-4o"
      },
      "depends_on": ["get_diff"]
    },
    {
      "id": "create_ticket",
      "type": "jira",
      "config": {
        "operation": "create_issue",
        "project": "DEV",
        "summary": "Code Review: {{env.CI_COMMIT_SHORT_SHA}}",
        "description": "{{steps.ai_review.text}}",
        "issue_type": "Task",
        "priority": "Medium"
      },
      "depends_on": ["ai_review"]
    },
    {
      "id": "log_ticket",
      "type": "print",
      "config": {
        "message": "Created ticket: {{steps.create_ticket.output.issue_key}} — {{steps.create_ticket.output.url}}"
      },
      "depends_on": ["create_ticket"]
    }
  ]
}