Class: Groundskeeper::Jira::JiraClient

Inherits:
Object
  • Object
show all
Defined in:
lib/groundskeeper/jira.rb

Overview

Wraps the jira-ruby Client class.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize ⇒ JiraClient

Returns a new instance of JiraClient.



27
28
29
30
31
32
33
34
35
36
# File 'lib/groundskeeper/jira.rb', line 27

def initialize
  @client = JIRA::Client.new(
    username: ENV[JIRA_USERNAME_KEY],
    password: ENV[JIRA_PASSWORD_KEY],
    site: ENV[JIRA_SITE_KEY],
    context_path: "",
    auth_type: :basic,
    read_timeout: 120
  )
end

Instance Attribute Details

#client ⇒ Object (readonly)

Returns the value of attribute client.



25
26
27
# File 'lib/groundskeeper/jira.rb', line 25

def client
  @client
end

Instance Method Details

#add_version_to_issue(issue_id:, version_name:) ⇒ Object



44
45
46
47
48
# File 'lib/groundskeeper/jira.rb', line 44

def add_version_to_issue(issue_id:, version_name:)
  client.Issue
        .find(issue_id)
        .save(update: { fixVersions: [{ add: { name: version_name } }] })
end

#create_version(name:, prefix:) ⇒ Object



38
39
40
41
42
# File 'lib/groundskeeper/jira.rb', line 38

def create_version(name:, prefix:)
  client.Version
        .build
        .save(name: name, project: prefix)
end

#fetch_issues_by_fix_version(version:) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/groundskeeper/jira.rb', line 58

def fetch_issues_by_fix_version(version:)
  search_path = "/rest/api/2/search"
  query = "fixVersion = \"#{version}\""
  response =
    client.get("#{search_path}?fields=key&jql=#{URI.escape(query)}").body

  JSON.parse(response)["issues"].map { |issue| issue["key"] }
end

#transition_issue(issue_id:, transition_id:) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/groundskeeper/jira.rb', line 50

def transition_issue(issue_id:, transition_id:)
  client.Issue
        .find(issue_id)
        .transitions
        .build
        .save(transition: { id: transition_id })
end