Example scripts
To homepage
Jira

Send Release Notes to Project Stakeholders
App in script

ScriptRunner For Jira
by Adaptavist
Compatibility

Jira (8.0 - 8.6)

ScriptRunner For Jira (5.6.14)
Language |
groovy
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.project.VersionReleaseEvent
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.web.bean.PagerFilter
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.metainf.jira.plugin.emailissue.api.EmailService
import com.metainf.jira.plugin.emailissue.api.EmailDefinitionApi
import com.metainf.jira.plugin.emailissue.action.EmailOptions
@WithPlugin("com.metainf.jira.plugin.emailissue")
@PluginModule EmailService emailService
// Get the released version from the associated event
final version = (event as VersionReleaseEvent).version
final project = version.project
//Name of the template to use
final templateName = "Release Notes"
//Role send notification to
final projectRoleToNotify = 'Administrators'
//Get reference to Jira API
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
def issueManager = ComponentAccessor.issueManager
def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def searchService = ComponentAccessor.getComponent(SearchService)
// Determine the project role members to send email to
def projectRole = projectRoleManager.getProjectRole(projectRoleToNotify)
def recipientsTo = projectRoleManager.getProjectRoleActors(projectRole, project).users*.emailAddress
// Find issues for the version being released
def jqlString = "fixVersion = ${version.id} ORDER BY issuetype, priority DESC, key ASC"
def parseResult = searchService.parseQuery(user, jqlString)
if (!parseResult.valid) {
log.error("Invalid JQL: ${jqlString}")
return
}
def searchResult = searchService.search(user, parseResult.query, PagerFilter.unlimitedFilter)
def issuesInVersion = searchResult.results.collect { issueManager.getIssueObject(it.id) }
// Compose parameters for Email This Issue
def email = new EmailDefinitionApi()
email.to = recipientsTo
email.emailOptions = new EmailOptions()
email.emailOptions.emailFormat = 'html'
email.emailTemplate = templateName
// Payload is a key-value pair to populate email templates
def payload = [issues: issuesInVersion, version: version]
email.payload = payload
// Send the email
try {
emailService.sendEmail(email)
} catch (Exception e) {
log.error("An exception was thrown: ${e.message}")
}
Having an issue with this script?
Report it here