Skip to content

Instantly share code, notes, and snippets.

View chuikoaleksandr's full-sized avatar

Chuiko Aleksandr chuikoaleksandr

  • @Mail.Ru
  • Russia
View GitHub Profile
@chuikoaleksandr
chuikoaleksandr / JIRA transition.groovy
Last active May 6, 2020 16:59
ScriptRunner for JIRA
import com.atlassian.jira.component.ComponentAccessor
def doTransition(issue, int actionId, user){
def issueService = ComponentAccessor.getIssueService()
def issueInputParameters = issueService.newIssueInputParameters();
def transitionValidationResult = issueService.validateTransition(user, issue.id, actionId, issueInputParameters);
if (transitionValidationResult.isValid()){
issueService.transition(user, transitionValidationResult);
return true
} else {
@chuikoaleksandr
chuikoaleksandr / JIRA SQL select.groovy
Created May 10, 2017 14:42
ScriptRunner for JIRA
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.ofbiz.OfBizDelegator
import groovy.sql.GroovyRowResult
import groovy.sql.Sql
import org.ofbiz.core.entity.ConnectionFactory
import org.ofbiz.core.entity.DelegatorInterface
import java.sql.Connection
select("select ...")
@chuikoaleksandr
chuikoaleksandr / JIRA send email.groovy
Created May 10, 2017 14:44
ScriptRunner for JIRA
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.mail.Email
def sendEmail(String emailAddr, String subject, String body) {
def mailServer = ComponentAccessor.getMailServerManager().getDefaultSMTPMailServer()
if (mailServer) {
email = new Email(emailAddr)
email.setSubject(subject)
email.setBody(body)
email.setMimeType("text/html; charset=utf-8")
@chuikoaleksandr
chuikoaleksandr / JIRA Groovy Amigo Rest example.groovy
Last active June 27, 2018 08:46
To set the currentUser in the field(10130). Add this script on plugins/servlet/my-groovy/rest. GET /rest/my-groovy/latest/custom/(name)?issueKey=TEST-1
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.event.type.EventDispatchOption
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
@chuikoaleksandr
chuikoaleksandr / approve(next status) condition.groovy
Last active November 13, 2018 14:31
JIRA process approval. MyGroovy + Custom select. All process in 1 workflow status. https://atlasteam.ru/?p=1746
import com.atlassian.jira.component.ComponentAccessor
import groovy.json.JsonSlurper
cfStep = ComponentAccessor.customFieldManager.getCustomFieldObject(10003)//Text Field (single line)
cfCustomSelect = ComponentAccessor.customFieldManager.getCustomFieldObject(10004)//Custom Select List
def customSelectValue = issue.getCustomFieldValue(cfCustomSelect)
if(!customSelectValue){
return false
}
@chuikoaleksandr
chuikoaleksandr / approve(ok-init) post-function.groovy
Last active November 13, 2018 11:28
JIRA process approval. MyGroovy + Custom select. All process in 1 workflow status.
import com.atlassian.jira.component.ComponentAccessor
import groovy.json.JsonSlurper
cfNeedApproval = ComponentAccessor.customFieldManager.getCustomFieldObject(10001)//User Picker (multiple users)
cfApprovedBy = ComponentAccessor.customFieldManager.getCustomFieldObject(10002)//User Picker (multiple users)
cfStep = ComponentAccessor.customFieldManager.getCustomFieldObject(10003)//Text Field (single line)
cfCustomSelect = ComponentAccessor.customFieldManager.getCustomFieldObject(10004)//Custom Select List https://marketplace.atlassian.com/apps/1218105/custom-select-list
def customSelectValue = issue.getCustomFieldValue(cfCustomSelect)
/*get data from custom select option:
@chuikoaleksandr
chuikoaleksandr / approve(ok) condition.groovy
Created October 29, 2018 14:37
JIRA process approval. MyGroovy + Custom select. All process in 1 workflow status.
import com.atlassian.jira.component.ComponentAccessor
cfNeedApproval = ComponentAccessor.customFieldManager.getCustomFieldObject(10001)//User Picker (multiple users)
return (issue.getCustomFieldValue(cfNeedApproval)?:[]).contains(currentUser)
@chuikoaleksandr
chuikoaleksandr / approve(next status) condition.groovy
Last active November 13, 2018 11:28
JIRA process approval. MyGroovy + Custom select. All process in 1 workflow status.
import com.atlassian.jira.component.ComponentAccessor
import groovy.json.JsonSlurper
cfStep = ComponentAccessor.customFieldManager.getCustomFieldObject(10003)//Text Field (single line)
cfCustomSelect = ComponentAccessor.customFieldManager.getCustomFieldObject(10004)//Custom Select List
def customSelectValue = issue.getCustomFieldValue(cfCustomSelect)
def processApproval = parseText(customSelectValue.getData())
@chuikoaleksandr
chuikoaleksandr / approve(reject) post-function.groovy
Created October 29, 2018 14:44
JIRA process approval. MyGroovy + Custom select. All process in 1 workflow status.
import com.atlassian.jira.component.ComponentAccessor
cfNeedApproval = ComponentAccessor.customFieldManager.getCustomFieldObject(10001)//User Picker (multiple users)
cfApprovedBy = ComponentAccessor.customFieldManager.getCustomFieldObject(10002)//User Picker (multiple users)
cfStep = ComponentAccessor.customFieldManager.getCustomFieldObject(10003)//Text Field (single line)
issue.setCustomFieldValue(cfNeedApproval, null)
issue.setCustomFieldValue(cfApprovedBy, null)
issue.setCustomFieldValue(cfStep, null)
@chuikoaleksandr
chuikoaleksandr / validator-example1.groovy
Created November 13, 2018 14:21
Jira MyGroovy simple validator custom field example
import com.atlassian.jira.component.ComponentAccessor
import com.opensymphony.workflow.InvalidInputException
def CUSTOM_FIELD_ID = 14910L
def MESSAGE_ERROR = "Field ${getCustomFieldObject(CUSTOM_FIELD_ID)} is required"
if(!getCustomFieldValue(issue, CUSTOM_FIELD_ID)){
throw new InvalidInputException(MESSAGE_ERROR)
}