Exporter un problème à l'aide de l'API Java de JIRA

Préface

J'ai l'opportunité d'utiliser l'API Java de JIRA et j'aimerais la présenter.

Il y avait beaucoup de documents et d'exemples utilisant Curl pour l'API REST, mais même si vous recherchez sur le net l'API Java, J'ai trouvé le tutoriel officiel JIRA suivant, mais il n'était pas utile car les informations étaient obsolètes.

En plus de cela, j'ai trouvé un échantillon d'un homme fort qui analyse JSON directement en utilisant HttpClient.

Ce sera une réinvention de la roue, mais exporter le résumé du problème JIRA vers Excel J'ai créé un échantillon et je voudrais le présenter.

Présentation de l'utilisation de l'API Java de JIRA.

Un exemple est un programme Java qui produit un aperçu des problèmes JIRA dans MS Excel. Elle est déjà fournie en tant que fonction standard (*), mais j'espère qu'elle sera utile pour ceux qui veulent apprendre l'API Java de JIRA. \ * Exporter les résultats de la recherche JIRA vers Microsoft Excel

Lorsqu'il est exécuté avec un programme de traitement par lots Java, le titre, le résumé et la description sont générés dans Excel spécifié par le premier argument. Le code publié sur GitHub ci-dessous n'est qu'un exemple, donc la partie qui produit Excel n'est pas particulièrement sophistiquée.

Sur l'ordre de l'enquête et les points que je doutais

J'écrirai ci-dessous l'ordre et les questions que j'ai vérifiés par ordre chronologique. Si vous voulez juste une conclusion, consultez la section suivante.

Il devrait y avoir une API encapsulée dans Java, pas seulement l'API REST.

→ Il existe une API. Il est écrit à la fin de la page suivante. Je ne sais pas lequel utiliser, JIRA Server, Cloud, Software Server, Service Desk Server. https://developer.atlassian.com/jiradev/jira-apis

Que dois-je utiliser pour la bibliothèque dépendante en premier lieu?

D'un point de vue différent, j'ai cherché un échantillon de travail car il pouvait s'agir de Maven ou de gradle. La page suivante était la plus proche de la recherche de "pom java JIRA api". Même ceci est 2.0, ce qui est assez ancien. https://community.atlassian.com/t5/Answers-Developer-Questions/JIRA-Rest-Java-Client-libraries/qaq-p/524054

Apparemment, j'ai trouvé que les bibliothèques suivantes ressemblent à des mots clés.

J'ai également trouvé qu'il existe une API appelée JiraRestClientFactory.

Où est passé le tutoriel JerseyJiraRestClientFactory?

Maintenant que je connais les bibliothèques dépendantes, j'ai écrit pom avec cela comme clé. Quand j'ai vérifié "jira-rest-java-client-core maven", j'ai trouvé que la version 4.0 est la plus récente. https://mvnrepository.com/artifact/com.atlassian.jira/jira-rest-java-client-core

De quel type de structure d'API s'agit-il?

Maintenant que les bibliothèques dépendantes ont été résolues, comment utilisez-vous l'API? J'ai vérifié. Recherchez "JiraRestClientFactory example" comme clé. http://massapi.com/class/ji/JiraRestClientFactory.html C'était un succès.

En regardant le code, JiraRestClientFactory (interface) est le point d'entrée, et c'était auparavant le nom de la classe d'implémentation Jersey…, mais AsynchronousJiraRestClientFactory est maintenant le nouveau nom.

Il a une structure qui acquiert JiraRestClient de Factory et recherche, mises à jour, etc.

━ JiraRestClientFactory (point d'entrée) ┗ AsynchronousJiraRestClientFactory (classe d'implémentation) ┗ JiraRestClient (client de l'usine) ┣ IssueClient (sous-groupe d'API pouvant être obtenu auprès de RestClient)      ┣ SearchClient      ┗ ProjectClient

Vous pouvez le voir en regardant le JavaDoc de JiraRestClient.

Après cela, j'ai trouvé que c'était le même que le tutoriel si je le remplace par Jersey → Asynchronous.

Comment vous authentifiez-vous?

https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials En regardant ce tutoriel REST, j'ai trouvé qu'il y avait Basic, OAuth, etc. En regardant l'exemple de code, il semble que l'authentification de base peut être effectuée avec le code suivant.

factory.createWithBasicHttpAuthentication(jiraServerUri, yourUsername, yourPassword);

Comment recherchez-vous?

J'ai recherché "Exemple de client de recherche JIRA". Quoi qu'il en soit, il semble bon d'ajouter un exemple. La page suivante était un hit, qui a également utilisé JerseyJiraRestClient pendant longtemps, mais c'est utile. http://stackoverflow.com/questions/29206524/how-to-get-all-issues-of-project-via-jira-rest-java-client

Un échantillon simple juste pour rechercher

À partir de l'exemple ci-dessus, nous pouvons voir que nous pouvons rechercher avec le code suivant. Qu'est-ce qu'une promesse? J'ai pensé, mais quand je réclame (), l'itérateur est retourné. Tout ce que vous avez à faire est de boucler comme dans l'exemple.

   Promise<SearchResult> searchJqlPromise = client.getSearchClient().searchJql("project = MYPURRJECT AND status in (Closed, Completed, Resolved) ORDER BY assignee, resolutiondate");

    for (Issue issue : searchJqlPromise.claim().getIssues()) {
        System.out.println(issue.getSummary());
    }

Conclusion pour créer un échantillon pour rechercher des problèmes

1. Dans pom.xml, écrivez ce qui suit.

    <dependency>
      <groupId>com.atlassian.jira</groupId>
      <artifactId>jira-rest-java-client-core</artifactId>
      <version>4.0.0</version>
    </dependency>

    <dependency>
      <groupId>com.atlassian.jira</groupId>
      <artifactId>jira-rest-java-client-api</artifactId>
      <version>4.0.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.atlassian.fugue/fugue -->
    <dependency>
      <groupId>com.atlassian.fugue</groupId>
      <artifactId>fugue</artifactId>
      <version>2.6.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
    </dependency>

2. Obtenez JiraRestClient avec l'authentification de base.

    JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
    URI uri = new URI("https://your-project-name.atlassian.net");
    jiraRestClient = factory.createWithBasicHttpAuthentication(uri, userName, password);

3. Prenez un problème en utilisant le client de recherche.

L'API était un peu étrange, mais je l'ai eu avec le code suivant.

    SearchRestClient searchRestClient = jiraRestClient.getSearchClient();
    final Set<String> fields = new HashSet<String>();
    String jql = "status!=done"; // Only not done issues.
    SearchResult result = searchRestClient.searchJql(jql, max, offset, fields).claim();
    Iterable<Issue> issues = result.getIssues();
    List<Issue> list = new ArrayList<Issue>();
    for (final Issue issue : issues) {
        list.add(issue);
    }

4. Vous pouvez obtenir les informations nécessaires à partir de l'API Issue.

  issue.getKey();
  issue.getSummary();
  issue.getDescription();

c'est tout.

Cliquez-ici pour le code.

Recommended Posts

Exporter un problème à l'aide de l'API Java de JIRA
J'ai essayé d'utiliser l'API Java8 Stream
Traitement des données à l'aide de l'API de flux de Java 8
Essayez d'utiliser l'API Stream en Java
Essayez d'utiliser l'API au format JSON en Java
API Java Stream
Interagir avec l'API de message LINE à l'aide de Lambda (Java)
ChatWork4j pour l'utilisation de l'API ChatWork en Java
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
Tri à l'aide du comparateur java
[Java] API / carte de flux
Dépannage de l'API Java Docker-Client
Pratique de grattage avec Java ②
Pratique de l'API Java8 Stream
API Zabbix en Java
Pratique du grattage avec Java ①
Opération Elasticsearch via l'API REST à l'aide d'Apache HttpClient en Java
Traduire à l'aide de l'API de texte Microsoft Translator en Java (japonais → anglais)
Conseils d'utilisation de Salesforce SOAP et de l'API Bulk en Java
Comment lire un fichier MIDI à l'aide de l'API Java Sound
Essayez d'utiliser RocksDB avec Java
Essayez de gratter en utilisant Java [Note]
Aide-mémoire de l'API Java Stream
API Java Stream en 5 minutes
[Java] Stream API - Traitement de l'arrêt du flux
[Java] Stream API - Traitement intermédiaire de flux
Utilisation de Mapper avec Java (Spring)
J'ai essayé d'utiliser Java REPL
[Java] Introduction à l'API Stream
Utilisation de Docker depuis Java Gradle
Contenu d'apprentissage de base Java 8 (API Java)
Faire un diamant en utilisant Java
[Java] Opération intermédiaire de l'API Stream
Génération récente de spécification d'API Java
Tri des bulles à l'aide de ArrayList (JAVA)
Exemple d'utilisation de l'API Bulk de Salesforce à partir d'un client Java avec PK-chunking