우선 봐둬야 할 것이..
https://developer.atlassian.com/jiradev/jira-apis
https://ecosystem.atlassian.net/wiki/display/JRJC/Tutorial
요렇게 보자. 그러나 이런 API들은 모두 설치되어 운영하고 있는 jira 버전과 plugin 에 따라 지원 여부가 결정될 수 있으니 확인하는 것이 중요하다.
우선 lib를 추가 한다.
compile 'com.atlassian.jira:jira-rest-java-client:1.2-m01'
- github에 몇몇 client들이 존재는 한다. 그냥 왠지 쓰기 싫은 관계로 그런 것들은 무시..참고로 이런거 'net.rcarz:jira-client:0.5'
lib를 추가 했으면, Test해보는 셈 치고 커넥션을 맺고 Project 목록을 출력해보자.
JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory();
URI jiraServerUri = new URI("http://jira주소");
JiraRestClient jiraRestClient = factory.create(jiraServerUri, new BasicHttpAuthenticationHandler("아이디", "패스워드"));
NullProgressMonitor nullProgressMonitor = new NullProgressMonitor();
...
Iterable<BasicProject> projects = jiraRestClient.getProjectClient().getAllProjects(nullProgressMonitor);
for (BasicProject project : projects) {
log.debug("Project Name={}", ToStringBuilder.reflectionToString(project));
}
...
이렇게 Project들과 IssueType을 출력해 봐야 하는 이유는 API를 이용한 이슈 생성시 해당 key, id등 몇개의 속성 정보가 필요한데... 참 구하기 힘들다. 그러니 출력 해본 후, 잘 가지고 있어야 겠지.
이번에는 issuetype목록을 출력해본다. - 위와 마찬가지로 정보를 가지고 있는게 좋다.
GetCreateIssueMetadataOptions options = new GetCreateIssueMetadataOptionsBuilder()
.withExpandedIssueTypesFields()
.withProjectKeys("프로젝트키")
.build();
Iterable<CimProject> cimProjects = jiraRestClient.getIssueClient().getCreateIssueMetadata(options, nullProgressMonitor);
for (CimProject cimProject : cimProjects) {
Iterable<CimIssueType> issueTypes = cimProject.getIssueTypes();
for (CimIssueType cimIssueType : issueTypes) {
log.debug("Project IssueType = {}", ToStringBuilder.reflectionToString(cimIssueType));
}
}
두개의 정보를 모두 가지고 있다면, 생성하기는 쉽다.
우선 project를 지정하자
BasicProject basicProject = new BasicProject(new URI(""), "", "", Long.n);
BasicIssueType basicIssueType = new BasicIssueType(new URI(""), Long.n, "", t/f);
IssueInputBuilder issueBuilder = new IssueInputBuilder(basicProject, basicIssueType);
issueBuilder.setAssigneeName("eclipse4j"); // 담당자
issueBuilder.setDescription("이슈생성 테스트"); // 본문 - 상세내역
issueBuilder.setSummary("issue summary"); // 제목
issueBuilder.setPriorityId(3L); // 6:Urgent, 1:Blocker, 2:Critical, 3:Major, 4:Minor, 5:Trivial
restClient.getIssueClient().createIssue(issueBuilder.build(), nullProgressMonitor);
이렇게 하므로서 생생되게 되고 해당 이슈가 생성되었으면, 바로 확인해 볼 수 있다.
Issue issue = restClient.getIssueClient().getIssue("이슈키", nullProgressMonitor);
자~ 잘된다. 이제 연동해서 우리의 고객들이 통합 운영 환경을 경험 하도록 만들어 보자