Set Issue Attributes
You can see some issue attributes as part of a post-function, for instance components, versions, custom and system fields.
The following example covers these areas.
You can only use this method to update issue attributes if your script post-function comes before the standard function Update change history for an issue and store the issue in the database. If you need your function to run after that, you have to use a more complex method.
import com.atlassian.jira.component.ComponentAccessor import java.sql.Timestamp def versionManager = ComponentAccessor.getVersionManager() def projectComponentManager = ComponentAccessor.getProjectComponentManager() def customFieldManager = ComponentAccessor.getCustomFieldManager() def userUtil = ComponentAccessor.getUserUtil() def project = issue.getProjectObject() def version = versionManager.getVersion(project.getId(), "1.1") def component = projectComponentManager.findByComponentName(project.getId(), "MyComponent") if (version) { issue.setFixVersions([version]) } if (component) { issue.setComponent([component]) } // a text field def textCf = customFieldManager.getCustomFieldObjectByName("TextFieldA") // <1> issue.setCustomFieldValue(textCf, "Some text value") // a date time field - add 7 days to current datetime def dateCf = customFieldManager.getCustomFieldObjectByName("First Date") // Date time fields require a Timestamp issue.setCustomFieldValue(dateCf, new Timestamp((new Date() + 7).time)) // a user custom field def userCf = customFieldManager.getCustomFieldObjectByName("UserPicker") issue.setCustomFieldValue(userCf, userUtil.getUserByName("admin")) // User CFs require an ApplicationUser // system fields issue.setDescription("A generated description") issue.setDueDate(new Timestamp((new Date() + 1).time)) // set due date to tomorrow
Line 24: These are custom field names, not IDs. Alternative you can use customFieldManager.getCustomFieldObject("customfield_12345")
, which will allow you to change the field name, however, you lose portability between Jira instances.
Setting Checkbox Fields
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.customfields.manager.OptionsManager def optionsManager = ComponentAccessor.getComponent(OptionsManager) def customFieldManager = ComponentAccessor.getCustomFieldManager() def cf = customFieldManager.getCustomFieldObjectByName("Checkboxes") // Checkboxes is the NAME of my custom field def fieldConfig = cf.getRelevantConfig(issue) def option = optionsManager.getOptions(fieldConfig).getOptionForValue("Yes", null) issue.setCustomFieldValue(cf, [option]) // <1>
Line 10: The custom field value is a Collection of Option
objects
Setting Radio Button Fields
Identical to the above example, except the custom field contains only a single Option
, so do not create a List, example:
groovyissue.setCustomFieldValue(cf, option)