ScriptRunner for Jira
Update checklists using automated scripts⚡️
ScriptRunner for Jira is an all-in-one admin app. Automate DevOps workflows, actions with Built-in Scripts, improve the development workflow with Hooks. Automate the behaviour of the Smart Checklist as well.
Requires Checklists Custom Field → "Checklists" Custom Field set up
📍Use Case: Set Checklist depending on Custom Field Value after Issue Creation
If you want the specific Checklist appended to your newly created ticket depending on the other Custom field value - you can easily do it by adding Script Runner Post Function to your Create Ticket workflow transition.
Assume that you have a custom field Environment with 2 values: Production/Staging. So you expect that while adding a new Issue - you'll have a proper checklist assigned.
Implementation flow:
Go to Project Settings → Workflows
Choose the Workflow you want to add a post function to and click Edit:
Add a Post Function
3.1. Choose transition and click on the Post Functions link:
3.2. Add Post Function:
3.3. Choose ScriptRunner Post-Function (Runs a script in a post-function, or a built-in script) and click Add:
3.4. Choose Run Script (Run arbitrary code on transition):
3.5. Add a Script Code:
//package com.adaptavist.sr.cloud.samples.events
def issueKey = issue.key
def newSummary = 'Updated by a script'
def cfName = 'Environment'
//get custom field of "seelct" type
def customFields = get('/rest/api/2/field')
.asObject(List)
.body
.findAll { (it as Map).custom } as List<Map>
def cfEnvironmentId = customFields.find { it.name == cfName }?.id
def cfEnvironment = issue.fields[cfEnvironmentId]
//get custom field
def environment = cfEnvironment['value'] as String
def propertyKey = 'com.railsware.SmartChecklist.checklist'
def propertyValue
//compare field values
if (environment == 'Production') {
propertyValue = '"- ToDo List\\n+ Checked\\nx Skipped\\n~ In Progress\\n# Another ToDo List\\n- Unchecked\\n> Quote line 1 https://rw.rw\\n> Quote line 2\\n> Quote line 3\\n"'
}else if (environment == 'Staging') {
propertyValue = '"- Uno\\n+ Dos\\nx Tres\\n~ Quatro\\n"'
}
logger.info('property' + environment)
def result = put('/rest/api/2/issue/' + issueKey + '/properties/' + propertyKey)
.header('Content-Type', 'application/json')
.body(propertyValue)
.asString()
if (result.status == 204) {
return 'Success'
} else {
return "${result.status}: ${result.body}"
}
3.6. Check added post function and Publish Draft:
You're done! Now every time the Issue will be transitioned to to do, based on the Environment field value the proper Checklist items will be added to your Smart Checklist 🎉