Yes, you certainly can. You would need ScriptRunner in your Jira instance.
There are two ways to do it. Basically you make a POST call using the following Rest API to create a branch in a workflow post function from Jira to BitBucket:
1. Setup the app links as mentioned in this documentation.
2. Following snippet works as I have tested:
import com.atlassian.applinks.api.ApplicationLinkResponseHandler
import com.atlassian.applinks.api.ApplicationLinkResponseHandler
import com.atlassian.applinks.api.ApplicationLinkService
import com.atlassian.applinks.api.application.bitbucket.BitbucketApplicationType
import com.atlassian.sal.api.component.ComponentLocator
import groovy.json.JsonSlurper
import com.atlassian.sal.api.net.Request
import com.atlassian.sal.api.net.Response
import com.atlassian.sal.api.net.ResponseException
import com.atlassian.sal.api.net.ResponseHandler
import groovy.json.JsonBuilder
def appLinkService = ComponentLocator.getComponent(ApplicationLinkService)
def appLink = appLinkService.getPrimaryApplicationLink(BitbucketApplicationType)
def applicationLinkRequestFactory = appLink.createAuthenticatedRequestFactory()
Map body = [
name: "test-branch",
startPoint: "refs/heads/master",
]
def request = applicationLinkRequestFactory
.createRequest(Request.MethodType.POST, "/rest/branch-utils/1.0/projects/JP/repos/just-repository/branches")
.addHeader("Content-Type", "application/json")
.setRequestBody(new JsonBuilder(body).toString())
.execute(new ApplicationLinkResponseHandler<Map>() {
@Override
Map credentialsRequired(Response response) throws ResponseException {
return null
}
@Override
Map handle(Response response) throws ResponseException {
new JsonSlurper().parseText(response.getResponseBodyAsString()) as Map
}
})
You can use this sample script from our library as reference to make the same POST call:
import groovy.json.JsonOutput
import groovy.json.JsonBuilder
import groovyx.net.http.ContentType
import groovyx.net.http.HttpResponseDecorator
import groovyx.net.http.RESTClient
final externalUrl = "http://<BitBucket_Base_URL>/"
def body = [
name: "test-branch",
startPoint: "refs/heads/master",
]
def postResponse = post(externalUrl, "/rest/branch-utils/1.0/projects/JP/repos/just-repository/branches", new JsonBuilder(body).toString())
def post(def hostUrl, def endpointAndQuery, def bodyJson) {
def client = new RESTClient(hostUrl)
client.setHeaders([
'Accept' : ContentType.JSON,
'Authorization': "Basic ${'xxxx:xxxxxxxx'.bytes.encodeBase64()}"
])
client.handler.success = { HttpResponseDecorator response, json ->
json
}
client.handler.failure = { HttpResponseDecorator response ->
// Failure can be handled here
log.error response.entity.content.text
[:]
}
client.post(
path: endpointAndQuery,
contentType: ContentType.JSON,
body: bodyJson
)
}
Please note that this will hardcode a username and password in your script.
Deleting a branch is just similar using a DELETE call on the same REST API.
I hope this helps!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you for your question.
Please can I confirm if you have ScriptRunner for Jira or ScriptRunner for Bitbucket?
Kind regards,
Robert Giddings,
Product Manager, ScriptRunner for Bitbucket
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello @Robert Giddings [Adaptavist]
yes, i do have have scriptrunner for bitbucket and jira.
Thanks and Regards
Ramya
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.