import com.cloudbees.plugins.flow.FlowRun
import groovy.json.JsonSlurper
import hudson.model.ParametersAction
import hudson.model.StringParameterValue
def commitMessage = build.environment.get("COMMIT_MESSAGE")
def password = build.environment.get("jenkins-read-only")
def issueKey = (commitMessage =~ $/(\p{Alpha}+-\d+).*/$)[0][1]
Authenticator.setDefault (new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication ("jenkins-read-only", password.toCharArray())
}
})
def issueUrl = new URL("http:)
def content = new BufferedReader(new InputStreamReader(issueUrl.openConnection().getContent() as InputStream))
def issue = new JsonSlurper().parse(content)
String linkedReleaseTicket = issue.fields.issuelinks.inwardIssue.key.find { it =~ /RL-/}
if(linkedReleaseTicket == null) {
throw new IllegalStateException("Expected issue '${issueKey}' to be linked to ONE release ticket")
}
build.getCauses().each {
FlowRun run = it.flowRun
println(run)
println(run.class)
run.buildVariables.put("JIRA_TICKET", linkedReleaseTicket)
def existingParams = (ParametersAction) run.getAction(ParametersAction.class)
def newParams = [new StringParameterValue("JIRA_TICKET", linkedReleaseTicket)]
if (existingParams == null) {
run.addAction(new ParametersAction(newParams))
} else {
run.replaceAction(existingParams.createUpdated(newParams))
}
printVars("env", run.environment)
printVars("var", run.buildVariables)
}
build.environment.put("JIRA_TICKET", linkedReleaseTicket)
build.buildVariables.put("JIRA_TICKET", linkedReleaseTicket)
def void printVars(String name, def vars) {
println("-"*32)
println("")
println(name + "::")
vars.each {
println " ${it.key} : ${it.value}"
}
println("")
println("-"*32)
println("")
}
return "Found release ticket: ${linkedReleaseTicket}"