- JIRA REST API Интеграция
- 2. Maven Dependency
- 3. Создание клиента Jira
- 3.1. Создать новый выпуск
- 3.2. Описание проблемы обновления
- 3.3. Голосовать за проблему
- 3.4. Добавление комментария
- 3.5. Удалить проблему
- 4. Заключение
- Saved searches
- Use saved searches to filter your results more quickly
- License
- lesstif/jira-rest-client
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
JIRA REST API Интеграция
В этой статье мы кратко рассмотрим, как интегрироваться с JIRA с помощью REST API.
2. Maven Dependency
Необходимые артефакты можно найти в публичном репозитории 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:
- username — имя любого действующего пользователя Jira
- password — пароль этого пользователя
- jiraUrl — это URL-адрес, на котором размещен экземпляр Jira
Получив эти данные, мы можем создать экземпляр нашего клиента Jira:
MyJiraClient myJiraClient = new MyJiraClient( "user.name", "password", "http://jira.company.com");
public MyJiraClient(String username, String password, String jiraUrl)
getJiraRestClient() использует всю предоставленную информацию и возвращает экземплярJiraRestClient. Это основной интерфейс, через который мы будем общаться с Jira REST API:
private JiraRestClient getJiraRestClient()
Здесь мы используем базовую аутентификацию для связи с API. Однако также поддерживаются более сложные механизмы аутентификации, такие как OAuth.
МетодgetUri() просто преобразуетjiraUrl в экземплярjava.net.URI:
Это завершает нашу инфраструктуру создания собственного клиента Jira. Теперь мы можем взглянуть на различные способы взаимодействия с API.
3.1. Создать новый выпуск
Начнем с создания нового выпуска. Мы будем использовать эту недавно созданную проблему для всех других примеров в этой статье:
public String createIssue(String projectKey, Long issueType, String issueSummary)
projectKey — это уникальный элемент, который определяет ваш проект. Это не что иное, как префикс, который добавляется ко всем нашим вопросам. Следующий аргумент,issueType, также зависит от проекта и определяет тип ваших проблем, например «Задача» или «История». issueSummary — это название нашего выпуска.
Проблема возникает как экземплярIssueInput для остальных API. Помимо описанных нами входных данных, такие вещи, как исполнитель, репортер, затронутые версии и другие метаданные, могут идти какIssueInput.
3.2. Описание проблемы обновления
Каждая проблема в Jira обозначается уникальнымString, например «MYKEY-123». Нам нужен этот ключ проблемы, чтобы взаимодействовать с остальным API и обновить описание проблемы:
public void updateIssueDescription(String issueKey, String newDescription)
После обновления описания не будем зачитывать обновленное описание:
public Issue getIssue(String issueKey)
ЭкземплярIssue представляет проблему, идентифицированнуюissueKey. Мы можем использовать этот экземпляр, чтобы прочитать описание этой проблемы:
Issue issue = myJiraClient.getIssue(issueKey); System.out.println(issue.getDescription());
Это выведет описание проблемы на консоль.
3.3. Голосовать за проблему
Получив экземпляр Issue, мы можем использовать его для выполнения действий по обновлению / редактированию. Голосуем за вопрос:
public void voteForAnIssue(Issue issue)
Это добавит голосissue от имени пользователя, учетные данные которого были использованы. Это можно проверить, проверив количество голосов:
public int getTotalVotesCount(String issueKey)
Здесь следует отметить, что мы снова получаем здесь новый экземплярIssue, так как мы хотим отразить обновленное количество голосов.
3.4. Добавление комментария
Мы можем использовать тот же экземплярIssue, чтобы добавить комментарий от имени пользователя. Как и добавление голосования, добавление комментария также довольно просто:
public void addComment(Issue issue, String commentBody)
Мы использовали фабричный методvalueOf(), предоставляемый классомComment, для создания экземпляраComment. Существуют различные другие фабричные методы для расширенных вариантов использования, таких как управление видимостьюComment.
Давайте возьмем новый экземплярIssue и прочитаем всеComments:
public List getAllComments(String issueKey)
3.5. Удалить проблему
Удаление проблемы также довольно просто. Нам нужен только ключ проблемы, который идентифицирует проблему:
public void deleteIssue(String issueKey, boolean deleteSubtasks)
4. Заключение
В этой быстрой статье мы создали простой Java-клиент, который интегрируется с Jira REST API и выполняет некоторые основные операции.
Полный исходный текст этой статьи можно найти наover on GitHub.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
JIRA REST client library for Java
License
lesstif/jira-rest-client
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Atlassian’s JIRA REST API Implementation for Java(JDK 8+ or above only).
JIRA REST API documentation can be found here
- check latest released artifact version from maven Central Repository( )
- add this dependency snippet into pom.xml.
dependency> groupId>com.lesstifgroupId> artifactId>jira-rest-apiartifactId> version>EDIT_THISversion> dependency>
dependencies < implementation "com.lesstif:jira-rest-api:0.8.1" >
jira.server.url="https://your-jira.host.com" jira.user.id="jira-username" jira.user.pat="your-jira-personal-access-token-here" jira.verbose=false
public void getProject() throws IOException, ConfigurationException < ProjectService prjService = new ProjectService(); Project prj = prjService.getProjectDetail("TEST"); logger.info("P pl-s1">prj.toPrettyJsonString()); >
public void listProject() throws JsonParseException, JsonMappingException, IOException, ConfigurationException < ProjectService prjService = new ProjectService(); ListProject> prj = prjService.getProjectList(); int i = 0; for (Project p : prj) < System.out.println(i++ + "th " + p.toPrettyJsonString() ); > >
public void getIssue() throws IOException, ConfigurationException < String issueKey = "TEST-833"; IssueService issueService = new IssueService(); Issue issue = issueService.getIssue(issueKey); logger.info(issue.toPrettyJsonString()); // attachment info ListAttachment> attachs = issue.getFields().getAttachment(); for ( Attachment a : attachs) < logger.info(a.toPrettyJsonString()); > IssueFields fields = issue.getFields(); // Project key logger.debug("Project Key:" + fields.getProject().getKey()); //issue type logger.debug("IssueType:" + fields.getIssuetype().toPrettyJsonString()); // issue description logger.debug("Issue Description:" + fields.getDescription()); >
public void createIssue() throws JsonParseException, JsonMappingException, IOException, ConfigurationException < Issue issue = new Issue(); IssueFields fields = new IssueFields(); fields.setProjectKey("TEST") .setSummary("something's wrong") .setIssueTypeName(IssueType.ISSUE_TYPE_TASK) .setDescription("Full description for issue") .setAssigneeName("lesstif") .setReporterName("gitlab") // Change Reporter need admin role .setPriorityName(Priority.PRIORITY_CRITICAL) .setLabels(new String[]"bugfix","blitz_test">) .setComponents(Arrays.asList( new Component[]new Component("Component-1"), new Component("Component-2")>) ) .addAttachment("readme.md") .addAttachment("bug-description.pdf") .addAttachment("screen_capture.png"); issue.setFields(fields); logger.debug(issue.toPrettyJsonString()); IssueService issueService = new IssueService(); Issue genIssue = issueService.createIssue(issue); //Print Generated issue logger.info(genIssue.toPrettyJsonString()); >
public void uploadAttachments() throws IOException, ConfigurationException < Issue issue = new Issue(); issue.setKey("TEST-834"); issue.addAttachment(new File("c:\\Users\\lesstif\\attachment.png")); issue.addAttachment("c:\\Users\\lesstif\\test.pdf"); IssueService issueService = new IssueService(); issueService.postAttachment(issue); >
public void getAllPriorities() throws IOException, ConfigurationException < IssueService issueService = new IssueService(); ListIssueType> issueTypes = issueService.getAllIssueTypes(); for(IssueType i : issueTypes) < logger.info(i.toPrettyJsonString()); > >
public void getAllPriorities() throws IOException, ConfigurationException < IssueService issueService = new IssueService(); ListPriority> priority = issueService.getAllPriorities(); for(Priority p : priority) < logger.info(p.toPrettyJsonString()); > >
get all Custom Field in the Issue
public void getCustomeFields() throws IOException, ConfigurationException < IssueService issueService = new IssueService(); Issue issue = issueService.getIssue("TEST-92"); MapString, Object> fields = issue.getFields().getCustomfield(); for( String key : fields.keySet() )< logger.info("Field Name: " + key + ",value:" + fields.get(key)); > >
advanced search using JQL
About
JIRA REST client library for Java