본문 바로가기

Programming!

Jira 연동하기

우선 봐둬야 할 것이..

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);


자~ 잘된다. 이제 연동해서 우리의 고객들이 통합 운영 환경을 경험 하도록 만들어 보자