JIRA REST API integracija

1. Uvod

U ovom ćemo članku na brzinu pogledati kako se integrirati s JIRA-om koristeći njegov REST API.

2. Ovisnost Mavena

Potrebni artefakti mogu se naći u Atlassianovom javnom spremištu Maven:

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

Nakon što se spremište doda u pom.xml, moramo dodati sljedeće ovisnosti:

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

Možete se obratiti Maven Central za najnovije verzije jezgra i fuga ovisnosti.

3. Stvaranje Jira klijenta

Prvo, pogledajmo neke osnovne informacije koje su nam potrebne za povezivanje s instancom Jira:

  • Korisničko ime - je korisničko ime bilo kojeg važećeg Jira korisnika
  • zaporka - je lozinka tog korisnika
  • jiraUrl - je URL na kojem je hostirana Jira instanca

Nakon što dobijemo ove detalje, možemo stvoriti instancu za našeg Jira klijenta:

MyJiraClient myJiraClient = novi MyJiraClient ("korisničko ime", "lozinka", "//jira.company.com");

Konstruktor ove klase:

javni MyJiraClient (korisničko ime niza, lozinka niza, niz jiraUrl) {this.username = korisničko ime; this.password = lozinka; ovo.jiraUrl = jiraUrl; this.restClient = getJiraRestClient (); }

The getJiraRestClient () koristi sve pružene informacije i vraća primjerak JiraRestClient. Ovo je glavno sučelje putem kojeg ćemo komunicirati s Jira REST API:

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

Ovdje koristimo osnovnu provjeru autentičnosti za komunikaciju s API-jem. Međutim, podržani su i sofisticiraniji mehanizmi provjere autentičnosti poput OAuth.

The getUri () metoda jednostavno pretvara jiraUrl u primjerak java.net.URI:

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

Ovim je zaključena naša infrastruktura za stvaranje prilagođenog Jira klijenta. Sada možemo pogledati razne načine interakcije s API-jem.

3.1. Stvorite novo izdanje

Krenimo s izradom novog broja. Novostvoreno izdanje upotrijebit ćemo za sve ostale primjere u ovom članku:

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

The projectKey jedinstven je koji definira vaš projekt. Ovo nije ništa drugo do prefiks koji je dodan svim našim izdanjima. Sljedeći argument, issueType također ovisi o projektu koji identificira vrstu vaših problema poput "Zadatak" ili "Priča". The issueSažetak naslov je našeg broja.

Pitanje ide kao primjer IssueInput na ostalo API. Osim unosa koje smo opisali, stvari kao što su primatelj, izvjestitelj, pogođene verzije i drugi metapodaci mogu ići kao IssueInput.

3.2. Opis problema s ažuriranjem

Svako izdanje u Jiri identificirano je jedinstvenim Niz Kao "MYKEY-123“. Ovaj ključ problema potreban nam je za interakciju s ostatkom API-ja i ažuriranje opisa problema:

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

Nakon što se opis ažurira, nemojmo više čitati ažurirani opis:

javno izdanje getIssue (String issueKey) {return restClient.getIssueClient () .getIssue (issueKey) .claim (); }

The Problem instanca predstavlja problem koji je identificirao issueKey. Ovu instancu možemo koristiti za čitanje opisa ovog problema:

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

Ovo će ispisati opis problema na konzolu.

3.3. Glasajte za izdanje

Nakon što dobijemo primjerak izdanja, možemo ga koristiti i za izvršavanje radnji ažuriranja / uređivanja. Glasajmo za izdanje:

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

To će dodati glas za problem u ime korisnika čije su vjerodajnice korištene. To se može provjeriti provjerom brojanja glasova:

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

Ovdje treba napomenuti da ponovno donosimo novu instancu Problem ovdje želimo da se odrazi ažurirano brojanje glasova.

3.4. Dodavanje komentara

Možemo koristiti isto Problem instancu za dodavanje komentara u ime korisnika. Poput dodavanja glasa, dodavanje komentara također je prilično jednostavno:

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

Koristili smo tvorničku metodu vrijednost() koje pruža Komentar klase za stvaranje instance a Komentar. Postoje razne druge tvorničke metode za slučajeve napredne upotrebe, poput kontrole vidljivosti a Komentar.

Dohvatimo novu instancu Problem i pročitajte sve Komentars:

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

3.5. Brisanje izdanja

Brisanje izdanja također je prilično jednostavno. Trebamo samo ključ problema koji identificira problem:

javna void deleteIssue (String issueKey, logička deleteSubtasks) {restClient.getIssueClient () .deleteIssue (issueKey, deleteSubtasks) .claim (); }

4. Zaključak

U ovom brzom članku stvorili smo jednostavan Java klijent koji se integrira s Jira REST API-jem i izvodi neke od osnovnih operacija.

Cjelovit izvor ovog članka možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found