Within our support system, we face quite a few tasks that could be made easier with some kind of automation/scripting layer.
Just to mention some examples: Imagine we do not receive a comment on an support ticket for more than 14 days. Can we close the issue? Does our customer need any further help? After we suggest a resolution, we often are interested about the quality of our service, so we invite customers to a survey to help us understand and improve our support in general. Finally, if a customers comments on a support ticket, we’d like to automatically reopen it and assign it to the last assignee to ensure the customer gets the fastest help possible.
These are just a few tasks which JIRA administrators might be asked to help automate. There are different approaches to this, such as Jelly script runner, Groovy plugin, or Auto-transition listener plugin. All of these approaches address only one part of the problem, and tend to be a high-maintenance burden to the administrator, and are difficult to configure and extend. These are just some of the reasons for developing JIRA Automation plugin.
What is the JIRA Automation plugin?
At this point, it is our answer to automating tasks in our support hub. We have been using it for roughly six months and have decided it’s worthy of sharing on the Atlassian Marketplace. It’s not officially supported, but the source code is open to the public and we hope it can be useful for other people. These were our main goals we wanted to achieve in this plugin:
- We should be able to do the same things as we were able to do with Jelly:
- Execute JQL at certain time and process all resulting issues
- Add comments on existing issues
- We wanted to be able to react on various events in JIRA (so we can replace JIRA auto-transition listener plugin)
- We needed to make it easy to configure the automation
- It should be very easy to extend it with new actions and triggers (i.e. plugin points).
- Provide audit logging
- Provide loop protection
- Make it cross-product ready (Confluence Automation is experimentally implemented)
What can it currently do?
At this point, we have fully implemented and battle-tested following triggers:
- A trigger that runs JQL at given time (specified by CRON expression) – JQL trigger
- A trigger reacting on issue event(s), and optionally filter the resulting issues with JQL – Issue event trigger
After the trigger finds any issues, one or more actions can be performed. These are currently bundled:
- Comment Issue action – Adds a comment to existing issue, with Velocity macro support and configuration for security level
- Transition Issue action – Transitions an issue to a new state while setting the necessary fields and disabling notification
- Edit Issue action – Edits an issue and any custom field
- Set last assignee action – Sets the assignee to the last commenter from certain group
To see it in action take a look at this video demo:
Open for extension: Write your own triggers and actions!
The automation plugin is fully extensible in the sense that you can easily create your own triggers and actions in your plugins. Here’s a small example of creating an action to update a reporter’s profile. Whole source can be found here.
A follow-up post, regarding extending this plugin, can be found here.