JIRA REST API 통합

1. 소개

이 기사에서는 REST API를 사용하여 JIRA와 통합하는 방법을 간략히 살펴 보겠습니다.

2. Maven 종속성

필요한 아티팩트는 Atlassian의 공용 Maven 저장소에서 찾을 수 있습니다.

 atlassian-public //packages.atlassian.com/maven/repository/public 

저장소가 pom.xml 에 추가되면 아래 종속성을 추가해야합니다.

 com.atlassian.jira jira-rest-java-client-core 4.0.0   com.atlassian.fugue fugue 2.6.1 

최신 버전의 코어푸가 종속성에 대해서는 Maven Central을 참조 할 수 있습니다 .

3. Jira 클라이언트 생성

먼저 Jira 인스턴스에 연결하는 데 필요한 몇 가지 기본 정보를 살펴 보겠습니다.

  • username – 유효한 Jira 사용자의 사용자 이름입니다.
  • password – 해당 사용자의 암호입니다.
  • jiraUrl – Jira 인스턴스가 호스팅되는 URL입니다.

이러한 세부 정보가 있으면 Jira 클라이언트를 인스턴스화 할 수 있습니다.

MyJiraClient myJiraClient = new MyJiraClient( "user.name", "password", "//jira.company.com");

이 클래스의 생성자 :

public MyJiraClient(String username, String password, String jiraUrl) { this.username = username; this.password = password; this.jiraUrl = jiraUrl; this.restClient = getJiraRestClient(); }

getJiraRestClient ()는 제공된 모든 정보와 반환의 인스턴스 활용 JiraRestClient을 . 이것은 Jira REST API와 통신하는 기본 인터페이스입니다.

private JiraRestClient getJiraRestClient() { return new AsynchronousJiraRestClientFactory() .createWithBasicHttpAuthentication(getJiraUri(), this.username, this.password); }

여기서는 기본 인증을 사용하여 API와 통신합니다. 그러나 OAuth와 같은보다 정교한 인증 메커니즘도 지원됩니다.

getUri () 메소드는 단순히 변환 jiraUrl을 인스턴스에 java.net.URI의 :

private URI getJiraUri() { return URI.create(this.jiraUrl); }

이것으로 사용자 지정 Jira 클라이언트를 만드는 인프라를 마칩니다. 이제 API와 상호 작용하는 다양한 방법을 살펴볼 수 있습니다.

3.1. 새로운 이슈 생성

새로운 이슈를 만드는 것부터 시작하겠습니다. 이 기사의 다른 모든 예제에 대해이 새로 생성 된 문제를 사용합니다.

public String createIssue(String projectKey, Long issueType, String issueSummary) { IssueRestClient issueClient = restClient.getIssueClient(); IssueInput newIssue = new IssueInputBuilder( projectKey, issueType, issueSummary).build(); return issueClient.createIssue(newIssue).claim().getKey(); }

projectKey는 프로젝트를 정의하는 고유이다. 이것은 우리의 모든 문제에 추가되는 접두사에 지나지 않습니다. 다음 인수 인 issueType 은 또한 "작업"또는 "스토리"와 같은 문제 유형을 식별하는 프로젝트에 따라 다릅니다. issueSummary는 우리의 문제의 제목입니다.

문제는 나머지 API에 대한 IssueInput 의 인스턴스로 진행됩니다 . 우리가 설명한 입력과는 별도로 양수인,보고자, 영향을받는 버전 및 기타 메타 데이터와 같은 항목은 IssueInput으로 이동할 수 있습니다 .

3.2. 업데이트 문제 설명

Jira의 각 문제는 “ MYKEY-123 ” 과 같은 고유 한 문자열로 식별됩니다 . 나머지 API와 상호 작용하고 문제에 대한 설명을 업데이트하려면이 문제 키가 필요합니다.

public void updateIssueDescription(String issueKey, String newDescription) { IssueInput input = new IssueInputBuilder() .setDescription(newDescription) .build(); restClient.getIssueClient() .updateIssue(issueKey, input) .claim(); }

설명이 업데이트되면 업데이트 된 설명을 다시 읽어 보지 마십시오.

public Issue getIssue(String issueKey) { return restClient.getIssueClient() .getIssue(issueKey) .claim(); }

문제의 인스턴스에 의해 식별되는 문제 나타내는 issueKey을 . 이 인스턴스를 사용하여이 문제에 대한 설명을 읽을 수 있습니다.

Issue issue = myJiraClient.getIssue(issueKey); System.out.println(issue.getDescription());

그러면 문제에 대한 설명이 콘솔에 인쇄됩니다.

3.3. 이슈에 투표

이슈의 인스턴스가 확보되면이를 사용하여 업데이트 / 편집 작업을 수행 할 수도 있습니다. 문제에 투표합시다.

public void voteForAnIssue(Issue issue) { restClient.getIssueClient() .vote(issue.getVotesUri()) .claim(); }

이렇게하면 자격 증명이 사용 된 사용자를 대신하여 문제 에 투표가 추가 됩니다. 투표 수를 확인하여 확인할 수 있습니다.

public int getTotalVotesCount(String issueKey) { BasicVotes votes = getIssue(issueKey).getVotes(); return votes == null ? 0 : votes.getVotes(); }

여기서 주목해야 할 점 은 업데이트 된 투표 수를 반영하기 위해 여기 에서 Issue 의 새로운 인스턴스를 다시 가져오고 있다는 것 입니다.

3.4. 코멘트 추가

동일한 Issue 인스턴스를 사용 하여 사용자를 대신하여 주석을 추가 할 수 있습니다 . 투표를 추가하는 것과 마찬가지로 댓글을 추가하는 것도 매우 간단합니다.

public void addComment(Issue issue, String commentBody) { restClient.getIssueClient() .addComment(issue.getCommentsUri(), Comment.valueOf(commentBody)); }

Comment 클래스에서 제공 하는 팩토리 메서드 valueOf () 를 사용하여 Comment 인스턴스를 만들었습니다 . Comment 의 가시성 제어와 같은 고급 사용 사례를위한 다양한 다른 팩토리 방법이 있습니다 .

Issue 의 새로운 인스턴스를 가져 와서 모든 Comment를 읽어 보자 :

public List getAllComments(String issueKey) { return StreamSupport.stream(getIssue(issueKey).getComments().spliterator(), false) .collect(Collectors.toList()); }

3.5. 문제 삭제

이슈를 삭제하는 것도 매우 간단합니다. 문제를 식별하는 문제 키만 필요합니다.

public void deleteIssue(String issueKey, boolean deleteSubtasks) { restClient.getIssueClient() .deleteIssue(issueKey, deleteSubtasks) .claim(); }

4. 결론

이 빠른 기사에서는 Jira REST API와 통합되고 일부 기본 작업을 수행하는 간단한 Java 클라이언트를 만들었습니다.

이 기사의 전체 소스는 GitHub에서 찾을 수 있습니다.