0.01
No commit activity in last 3 years
No release in over 3 years
Lita handler to show JIRA issue details
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
~> 10.3
>= 3.0.0

Runtime

~> 4.0
 Project Readme

lita-jira-issues

Gem Version Build Status Code Climate Coverage Status

Lita handler for showing JIRA issue details when a JIRA issue key is mentioned in chat. Inspired by the Hubot jira-issue plugin

Note: Version 0.2+ of this hander require Lita 4. If you'd like to use this handler with Lita 3.x, please use version 0.1

Installation

Add lita-jira-issues to your Lita instance's Gemfile:

gem "lita-jira-issues"

Configuration

Base Configuration

The jira_issues handler needs to be configured with your JIRA instance. Add the following configurations to your lita_config.rb.

config.handlers.jira_issues.url = 'http://jira.local'
config.handlers.jira_issues.username = ENV['JIRA_USER'] || 'user'
config.handlers.jira_issues.password = ENV['JIRA_PASSWORD'] || 'password'
config.handlers.jira_issues.issue_ttl = 0 #optional
config.handlers.jira_issues.format = '[%I] %S::%t'  #optional

As in the example above, you can always use environment variables for sensitive information like the JIRA user's password.

Ignoring Users

Optionally you can prevent JIRA issue lookups from certain users using the ignore configuration parameter

config.handlers.jira_issues.ignore = [ 'Jira', 'Github' ]

Avoid A Spamming Bot

Optionally you can set a timer for how long to sleep prior to posting an issue to chat again. This is accomplished by setting an expiring key in Redis. That timeout is governed by the following config

config.handlers.jira_issues.issue_ttl = 120

The default for this config is 0 which serves to disables the feature entirely.

Customize Output

You can now change the displayed format using keyword expansion. The following table of keywords can be used to create the response when a JIRA issue is referenced. Each keyword needs to be enclosed in %{} just as the Ruby % operator requires.

Each keyword can take one of 3 forms. If the keyword is specified in all CAPS, then the resulting text will be in all caps (i.e. 'KEY' => 'ABC-123'). If the keyword has an initial capital letter, then resulting text will be proper case (i.e. 'Key' => 'Abc-123'). Finally if the keyword is all lower case, then the resulting text will be the native format that the text was received in.

There is also a conditional syntax that can be use should the keyword not return a value. The conditional syntax roughly approximates a ternary operator found in several programming languages such as C, Java and Perl with slight modification to make pattern matching easier.

#(%{assignee}?Assigned to %{assignee}|UNASSIGNED)

In the above example, the start of the conditional syntax starts with the #( and is completed with the closing ). The first part (what is preceding the question mark) is what is evaluated. If the evaluation is not an empty string (i.e. ''), then the conditional syntax is replaced with the text between the question and the pipe (|) symbol. If the evaluation does return an empty string (i.e. assignee is not set), then the text following the pipe symbol will replace the conditional syntax. As one would expect, keyword substitutions occur within the conditional syntax.

By default the format is set to the original text displayed by the lita-jira-issues module.

[%{KEY}] %{summary}
Status: %{status}, #(%{assignee}?assigned to %{assignee}|unassigned), rep. by %{reporter}, fixVersion: #(%{version}?%{version}|NONE)#(%{priority}?, priority: %{priority}|)
%{link}

The response to referenced JIRA tickets are left up to you, but shortened formats are now available like:

[%{KEY}] %{PRIORITY}/%{Summary} - %{STATUS}\n%{link}
Pattern Substitution
key Issue number
status Issue status
summary Issue summary
assignee Assignee
reporter Reporter
version Version
priority Priority
link URL to JIRA issue page
url Same as %{link}

Usage

Simply mention any JIRA valid key in upper or lower case, eg. JIRA-123, proj-8, and Lita will respond with the issue details.

License

MIT