class Danger::DangerJiraIssueLinks

Collect issue mentions from git commit messages. Results are passed out as a table in markdown.

@example Find issues, obtain types and titles from Jira, and make links to site.

jira_issue_links.print_links_with_titles

@example Find issues and make links to Jira site.

jira_issue_links.print_links_only

@see github.com/RedMadRobot/danger-jira_issue_links @tags jira, issue, task

Constants

JiraIssue

Private struct

Attributes

include_resolves_keyword[RW]

If `true` then in report will be added “Resolves” keyword for automatic resolve issue in jira. @see docs.gitlab.com/ee/user/project/integrations/jira.html Default - false

@return [Bool]

jira_context_path[RW]

Jira context path Default - empty string

@return [String]

jira_password[RW]

Jira password

@return [String]

jira_site[RW]

Jira site url

@return [String]

jira_username[RW]

Jira username

@return [String]

Public Instance Methods

collect_issues_from_commits() click to toggle source

Find all issue references in commit messages. Message should starts with pattern: `[TASK-123]` @return [Array<String>]

# File lib/jira_issue_links/plugin.rb, line 55
def collect_issues_from_commits 
  git.commits
     .flat_map { |c| c.message.match(/^\[(\w+-\d+)\]/)&.captures }
     .compact
     .uniq
end

Private Instance Methods

jira_client() click to toggle source
# File lib/jira_issue_links/plugin.rb, line 121
def jira_client
  jira_context_path = '' if jira_context_path.nil?
  @jira_client = JIRA::Client.new(
    username:     jira_username,
    password:     jira_password,
    site:         jira_site,
    context_path: jira_context_path,
    auth_type:    :basic
  ) if @jira_client.nil?
  return @jira_client
end
obtain_issue(issue_id) click to toggle source
# File lib/jira_issue_links/plugin.rb, line 133
def obtain_issue(issue_id) 
  issue = jira_client.Issue.jql("ID = '#{issue_id}'").first
  return if issue.nil?
  return JiraIssue.new(issue_id, issue.summary, issue.issuetype.name, issue.issuetype.iconUrl)
end