1. введение
В этой статье мы кратко рассмотрим, как интегрироваться с JIRA, используя ее REST API.
2. Зависимость Maven
Необходимые артефакты можно найти в общедоступном репозитории Maven Atlassian:
atlassian-public https://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 за последними версиями зависимостей core и fugue .
3. Создание клиента Jira
Во-первых, давайте рассмотрим некоторые основные сведения, необходимые для подключения к экземпляру Jira:
- имя пользователя – это имя пользователя любого действительного пользователя Jira
- пароль – это пароль этого пользователя
- jiraUrl – это URL-адрес, по которому размещен экземпляр Jira
Как только у нас будут эти данные, мы сможем создать экземпляр нашего клиента Jira:
MyJiraClient myJiraClient = new MyJiraClient( "user.name", "password", "http://jira.company.com");
Конструктор этого класса:
public MyJiraClient(String username, String password, String jiraUrl) { this.username = username; this.password = password; this.jiraUrl = jiraUrl; this.restClient = getJiraRestClient(); }
get JiraRestClient() использует всю предоставленную информацию и возвращает экземпляр JiraRestClient . Это основной интерфейс, через который мы будем взаимодействовать с API REST Jira:
private JiraRestClient getJiraRestClient() { return new AsynchronousJiraRestClientFactory() .createWithBasicHttpAuthentication(getJiraUri(), this.username, this.password); }
Здесь мы используем базовую аутентификацию для связи с API. Однако поддерживаются и более сложные механизмы аутентификации, такие как OAuth.
Метод getUri() просто преобразует URL jira |/в экземпляр 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(); }
Ключ project – это уникальный ключ, который определяет ваш проект. Это не что иное, как префикс, который добавляется ко всем нашим проблемам. Следующий аргумент, Тип проблемы также зависит от проекта, который определяет тип ваших проблем, таких как “Задача” или “История”. Резюме вопроса – это название нашего выпуска.
Проблема передается в качестве экземпляра Issue Input в rest API. Помимо входных данных, которые мы описали, такие вещи, как цессионарий, репортер, затронутые версии и другие метаданные, могут использоваться в качестве IssueInput .
3.2. Описание проблемы Обновления
Каждая проблема в Jira идентифицируется уникальной строкой |, например “ MYKEY-123 “. Нам нужен этот ключ проблемы для взаимодействия с rest 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(); }
Экземпляр Issue представляет проблему, идентифицированную ключом issue|/. Мы можем использовать этот экземпляр, чтобы прочитать описание этой проблемы:
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. Добавление комментария
Мы можем использовать то же самое Выпуск экземпляр для добавления комментария от имени пользователя. Как и добавление голоса, добавление комментария также довольно просто:
public void addComment(Issue issue, String commentBody) { restClient.getIssueClient() .addComment(issue.getCommentsUri(), Comment.valueOf(commentBody)); }
Мы использовали фабричный метод valueOf () , предоставленный классом Comment , для создания экземпляра Comment . Существуют различные другие заводские методы для расширенных вариантов использования, такие как управление видимостью Комментария .
Давайте возьмем свежий экземпляр Выпуска и прочитаем все Комментарии :
public ListgetAllComments(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. Заключение
В этой краткой статье мы создали простой Java-клиент, который интегрируется с API REST Jira и выполняет некоторые основные операции.
Полный источник этой статьи можно найти на GitHub .