JIRA REST API-integrasjon

1. Introduksjon

I denne artikkelen tar vi en rask titt på hvordan vi kan integrere med JIRA ved hjelp av REST API.

2. Maven avhengighet

De nødvendige gjenstandene finnes i Atlassians offentlige Maven-arkiv:

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

Når depotet er lagt til i pom.xml, må vi legge til avhengighetene nedenfor:

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

Du kan henvise til Maven Central for de nyeste versjonene av kjerne og fuga avhengigheter.

3. Opprette en Jira-klient

La oss først se på grunnleggende informasjon som vi trenger for å kunne koble til en Jira-forekomst:

  • brukernavn - er brukernavnet til enhver gyldig Jira-bruker
  • passord - er passordet til den brukeren
  • jiraUrl - er URL-en der Jira-forekomsten er vert

Når vi har disse detaljene, kan vi instantiere vår Jira-klient:

MyJiraClient myJiraClient = ny MyJiraClient ("brukernavn", "passord", "//jira.company.com");

Konstruktøren av denne klassen:

offentlig MyJiraClient (strengbrukernavn, strengpassord, streng jiraUrl) {this.username = brukernavn; this.password = passord; this.jiraUrl = jiraUrl; this.restClient = getJiraRestClient (); }

De getJiraRestClient () bruker all gitt informasjon og returnerer en forekomst av JiraRestClient. Dette er hovedgrensesnittet som vi kommuniserer med Jira REST API gjennom:

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

Her bruker vi den grunnleggende autentiseringen for å kommunisere med API. Imidlertid støttes også mer sofistikerte autentiseringsmekanismer som OAuth.

De getUri () metoden bare konverterer jiraUrl inn i en forekomst av java.net.URI:

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

Dette avslutter vår infrastruktur for å lage en tilpasset Jira-klient. Vi kan nå se på forskjellige måter å samhandle med API-et på.

3.1. Lag et nytt nummer

La oss starte med å lage en ny utgave. Vi vil bruke denne nyopprettede utgaven for alle andre eksempler i denne artikkelen:

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 (); }

De projectKey er det unike som definerer prosjektet ditt. Dette er ingenting annet enn prefikset som er lagt til alle problemene våre. Det neste argumentet, issueType er også prosjektavhengig som identifiserer typen problemer som "Task" eller "Story". De utgave Sammendrag er tittelen på utgaven vår.

Problemet går som et eksempel på IssueInput til resten API. Bortsett fra inngangene vi beskrev, kan ting som rettighetshaver, reporter, berørte versjoner og andre metadata gå som en IssueInput.

3.2. Oppdater problembeskrivelse

Hver utgave i Jira er identifisert av en unik String som "MYKEY-123“. Vi trenger denne problemnøkkelen for å samhandle med resten API og oppdatere beskrivelsen av problemet:

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

Når beskrivelsen er oppdatert, la oss ikke lese tilbake den oppdaterte beskrivelsen:

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

De Utgave forekomst representerer et problem identifisert av issueKey. Vi kan bruke denne forekomsten til å lese beskrivelsen av dette problemet:

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

Dette vil skrive ut beskrivelsen av problemet til konsollen.

3.3. Stem på en utgave

Når vi har fått en forekomst av problemet, kan vi også bruke den til å utføre oppdaterings- / redigeringshandlinger. La oss stemme for saken:

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

Dette vil legge stemmen til utgave på vegne av brukeren hvis legitimasjon ble brukt. Dette kan bekreftes ved å sjekke antall stemmer:

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

En ting å merke seg her er at vi igjen henter en ny forekomst av Utgave her da vi ønsker å få reflektert den oppdaterte stemmetellingen.

3.4. Legge til en kommentar

Vi kan bruke det samme Utgave forekomst for å legge til en kommentar på vegne av brukeren. Som å legge til en stemme, er det også ganske enkelt å legge til en kommentar:

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

Vi brukte fabrikkmetoden verdien av() levert av Kommentar klasse for å lage en forekomst av en Kommentar. Det finnes forskjellige andre fabrikkmetoder for avanserte bruksområder, for eksempel å kontrollere synligheten til en Kommentar.

La oss hente en ny forekomst av Utgave og les alle Kommentars:

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

3.5. Slett et problem

Slette et problem er også ganske enkelt. Vi trenger bare problemnøkkelen som identifiserer problemet:

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

4. Konklusjon

I denne raske artikkelen opprettet vi en enkel Java-klient som integreres med Jira REST API og utfører noen av de grunnleggende operasjonene.

Hele kilden til denne artikkelen finner du på GitHub.


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