Post Function
post Function 触发gitlab进行创建分支
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.comments.CommentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import org.gitlab.api.GitlabAPI;
import org.gitlab.api.TokenType;
import com.atlassian.jira.event.type.EventDispatchOption;
import org.gitlab.api.GitlabAPIException;
import org.gitlab.api.models.GitlabBranch;
import org.gitlab.api.models.GitlabProject;
import com.atlassian.jira.user.util.UserManager;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.IssueManager;
public GitlabAPI getGitlabAPI(){
String host = "http://git.localhost.com";
String token = "58QBsXhNos9Fz_ciQpBm";
GitlabAPI gitlabapi = GitlabAPI.connect(host, token, TokenType.PRIVATE_TOKEN);
return gitlabapi;
}
List<String> getNameSpace(String module){
List<String> space = new ArrayList<String>();
String projectName = "";
String namespace = module;
int split = module.lastIndexOf("/");
if( split > -1){
namespace = module.substring(0, split);
projectName = module.substring(split+1);
}
space.add(namespace);
space.add(projectName);
return space;
}
public void createBranch(Issue issue, String gitModule, String branchName, CommentManager commentManager, ApplicationUser applicationUser){
List<String> space = getNameSpace(gitModule);
String namespace = space.get(0);
String projectName = space.get(1);
try{
GitlabAPI gitlabAPI = getGitlabAPI();
GitlabProject gitlabProject = gitlabAPI.getProject(namespace, projectName);
try{
gitlabAPI.createBranch(gitlabProject, branchName, "master");
try{
GitlabBranch gitlabBranch = gitlabAPI.getBranch(gitlabProject, branchName);
commentManager.create(issue, applicationUser, "分支创建成功: [${gitlabBranch.getName()}|http://git.localhost.com/${gitModule}/tree/${gitlabBranch.getName()}]", true)
IssueManager issueManager = ComponentAccessor.getIssueManager();
MutableIssue mutableIssue = (MutableIssue) issue;
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CustomField branchField = customFieldManager.getCustomFieldObject("customfield_10306");
mutableIssue.setCustomFieldValue(branchField , branchName);
issueManager.updateIssue(currentUser, mutableIssue, EventDispatchOption.ISSUE_UPDATED, true );
}catch (FileNotFoundException e){
commentManager.create(issue, applicationUser, "分支创建失败: ${e.getMessage()}", true)
}
}catch (GitlabAPIException e){
commentManager.create(issue, applicationUser, "分支已经存在: ${e.getMessage()}", true)
}
} catch (IOException e){
commentManager.create(issue, issue.getCreator(), "GIT初始化失败: ${e.getMessage()}", true)
}
}
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CommentManager commentManager = ComponentAccessor.getCommentManager();
CustomField moduleField = customFieldManager.getCustomFieldObject("customfield_10804");
String moduleFieldValue = (String)issue.getCustomFieldValue(moduleField);
String branch = "Galaxy-" + issue.getKey();
UserManager userManager = ComponentAccessor.getUserManager();
createBranch(issue, moduleFieldValue, branch, commentManager, currentUser);