JIRA REST API-integration

1. Introduktion

I denne artikel ser vi hurtigt på, hvordan vi kan integrere med JIRA ved hjælp af REST API.

2. Maven-afhængighed

De krævede artefakter kan findes i Atlassians offentlige Maven-arkiv:

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

Når arkivet er føjet til pom.xml, vi skal tilføje nedenstående afhængigheder:

 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 versioner af kerne og fugue afhængigheder.

3. Oprettelse af en Jira-klient

Lad os først se på nogle grundlæggende oplysninger, som vi har brug for for at kunne oprette forbindelse til en Jira-forekomst:

  • brugernavn - er brugernavnet på enhver gyldig Jira-bruger
  • adgangskode - er brugerens adgangskode
  • jiraUrl - er den URL, hvor Jira-forekomsten er hostet

Når vi har disse detaljer, kan vi instantiere vores Jira-klient:

MyJiraClient myJiraClient = ny MyJiraClient ("bruger.navn", "adgangskode", "//jira.company.com");

Konstruktøren af ​​denne klasse:

offentlig MyJiraClient (String-brugernavn, String-adgangskode, String jiraUrl) {this.username = brugernavn; this.password = adgangskode; this.jiraUrl = jiraUrl; this.restClient = getJiraRestClient (); }

Det getJiraRestClient () bruger alle de leverede oplysninger og returnerer en forekomst af JiraRestClient. Dette er hovedgrænsefladen, hvorigennem vi kommunikerer med Jira REST API:

privat JiraRestClient getJiraRestClient () {returner ny AsynchronousJiraRestClientFactory () .createWithBasicHttpAuthentication (getJiraUri (), dette.brugernavn, dette.password); }

Her bruger vi den grundlæggende godkendelse til at kommunikere med API'en. Imidlertid understøttes mere sofistikerede godkendelsesmekanismer som OAuth.

Det getUri () metode konverterer simpelthen jiraUrl ind i en instans af java.net.URI:

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

Dette afslutter vores infrastruktur til oprettelse af en brugerdefineret Jira-klient. Vi kan nu se på forskellige måder at interagere med API'en på.

3.1. Opret et nyt nummer

Lad os starte med at oprette et nyt nummer. Vi bruger dette nyoprettede emne til alle andre eksempler i denne artikel:

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

Det projektnøgle er det unikke, der definerer dit projekt. Dette er intet andet end præfikset, der er knyttet til alle vores problemer. Det næste argument, issueType er også projektafhængig, der identificerer typen af ​​dine problemer som "Task" eller "Story". Det issueSummary er titlen på vores udgave.

Spørgsmålet går som en forekomst af IssueInput til resten API. Bortset fra de input, vi beskrev, kan ting som modtager, reporter, berørte versioner og andre metadata gå som en IssueInput.

3.2. Opdater problembeskrivelse

Hvert nummer i Jira identificeres med et unikt Snor synes godt om "MYKEY-123“. Vi har brug for denne problemnøgle for at interagere med resten API og opdatere beskrivelsen af ​​problemet:

offentlig ugyldig opdateringIssueDescription (String issueKey, String newDescription) {IssueInput input = new IssueInputBuilder () .setDescription (newDescription) .build (); restClient.getIssueClient () .updateIssue (issueKey, input) .claim (); }

Når beskrivelsen er opdateret, lad os ikke læse den opdaterede beskrivelse tilbage:

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

Det Problem eksempel repræsenterer et problem identificeret af issueKey. Vi kan bruge denne forekomst til at læse beskrivelsen af ​​dette problem:

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

Dette vil udskrive beskrivelsen af ​​problemet til konsollen.

3.3. Stem på et emne

Når vi først har fået en forekomst af problemet, kan vi også bruge den til at udføre opdaterings- / redigeringshandlinger. Lad os stemme for emnet:

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

Dette vil føje afstemningen til problem på vegne af den bruger, hvis legitimationsoplysninger blev brugt. Dette kan bekræftes ved at kontrollere antallet af stemmer:

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

En ting at bemærke her er, at vi igen henter en ny forekomst af Problem her, da vi ønsker at få det opdaterede antal af stemmer afspejlet.

3.4. Tilføjelse af en kommentar

Vi kan bruge det samme Problem eksempel for at tilføje en kommentar på vegne af brugeren. Ligesom at tilføje en afstemning er det også ret simpelt at tilføje en kommentar:

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

Vi brugte fabriksmetoden Værdi af() leveret af Kommentar klasse for at oprette en forekomst af en Kommentar. Der er forskellige andre fabriksmetoder til avancerede anvendelsestilfælde, såsom kontrol af synligheden af ​​en Kommentar.

Lad os hente en ny forekomst af Problem og læs alle de Kommentars:

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

3.5. Slet et problem

Sletning af et problem er også ret simpelt. Vi har kun brug for den nøgle, der identificerer problemet:

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

4. Konklusion

I denne hurtige artikel oprettede vi en simpel Java-klient, der integreres med Jira REST API og udfører nogle af de grundlæggende operationer.

Den fulde kilde til denne artikel kan findes på GitHub.


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