Page tree
Skip to end of metadata
Go to start of metadata
import java.util.Map;
import java.util.HashMap;
import com.google.gson.Gson;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.HttpEntity;
import org.apache.http.util.EntityUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicHeader;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.event.type.EventDispatchOption;
 
def issueManager=ComponentAccessor.getIssueManager();
def customFieldManager=ComponentAccessor.getCustomFieldManager();
def epicLinkField=customFieldManager.getCustomFieldObject(10005);	//10005 - Epic Link
def dmfzField=customFieldManager.getCustomFieldObject(19200);		//19200 - 代码分支
def user=ComponentAccessor.getUserManager().getUserByName("admin");
def issue=issueManager.getIssueObject("EPRODUCT-902");
// Get Configs
CloseableHttpClient httpClient1 = HttpClientBuilder.create().build();
HttpPost httpPost1 = new HttpPost("http://aiops.infinitus.com.cn/testsxapi/cicd/jirainfo");
httpPost1.addHeader("X-Atlassian-Token","nocheck");
httpPost1.setHeader(new BasicHeader("Content-Type", "application/json;charset=utf-8"));
//Compose json request
Map jsonMap1=new HashMap();
jsonMap1.put("authkey","jiracallaiops");
jsonMap1.put("project",issue.getProjectObject().getKey());
jsonMap1.put("component",issue.getComponents()*.getName());
Gson json=new Gson();
def str1=json.toJson(jsonMap1);
log.warn(str1);
StringEntity se1=new StringEntity(str1,"UTF-8");
httpPost1.setEntity(se1);
CloseableHttpResponse httpResponse1=httpClient1.execute(httpPost1);
HttpEntity responseEntity1=httpResponse1.getEntity();
     
// Create Branches
String BITBUCKET_URL="http://10.86.23.157:7990"; 
String branchId="";
// Story
if("10001".equals(issue.getIssueTypeId())){
    def epic=issue.getCustomFieldValue(epicLinkField);
    if(epic!=null){
        branchId=epic.getKey();
    } else {
        return;
    }
} else { //Prod-Bug, Enhancement
    branchId=issue.getKey();
}
if(responseEntity1!=null){
    String configResponse=EntityUtils.toString(responseEntity1,"UTF-8");
    def result=json.fromJson(configResponse, Map.class);
    if(result.code==0){
        String dmfzVal="";
        boolean newCreated=false;        
        
        result.data.each {repo ->
            def reqUrl=BITBUCKET_URL+"/rest/api/1.0/projects/"+repo.gitprj+"/repos/"+repo.gitrepo+"/branches";            
            log.warn(reqUrl);
            CloseableHttpClient httpClient = HttpClientBuilder.create().build();
            HttpPost httpPost = new HttpPost(reqUrl);
            httpPost.addHeader("Authorization","Basic MDAxMDk1ODpHYm1maXNoMyQ=");
            httpPost.addHeader("X-Atlassian-Token","nocheck");
            httpPost.setHeader(new BasicHeader("Content-Type", "application/json;charset=utf-8"));
            //Compose json request
            Map jsonMap=new HashMap();
            jsonMap.put("name",repo.destbranch+"/"+branchId);
            jsonMap.put("startPoint",repo.srcbranch);
            //Gson json=new Gson();
            def str=json.toJson(jsonMap);
            log.warn(str);
            StringEntity se=new StringEntity(str,"UTF-8");
            httpPost.setEntity(se);
            CloseableHttpResponse httpResponse=httpClient.execute(httpPost);
            HttpEntity responseEntity=httpResponse.getEntity();
            if(responseEntity!=null){
                String content=EntityUtils.toString(responseEntity,"UTF-8");
                if(!content.contains("errors") || 
                   content.contains("DuplicateRefException")){
                    newCreated=true;
                    //Compose access path
                    dmfzVal+=BITBUCKET_URL+"/projects/"+repo.gitprj+"/repos/"+repo.gitrepo+
                        "/browse?at="+repo.destbranch+"/"+branchId+"\n";
                    log.warn(content);
                }
            }
        }
        if(newCreated){
            // Fill Story and sub-task with brach info
            issue.setCustomFieldValue(dmfzField, dmfzVal);
            issueManager.updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false);
            issue.getSubTaskObjects().each {subtask ->
                if("5".equals(subtask.getIssueTypeId())){
                    subtask.setCustomFieldValue(dmfzField, dmfzVal);
                    issueManager.updateIssue(user, subtask, EventDispatchOption.ISSUE_UPDATED, false);                   
                }
            }
        }
    }
}
  • No labels