JIRA REST API-integratie

1. Inleiding

In dit artikel zullen we snel bekijken hoe we kunnen integreren met de JIRA met behulp van de REST API.

2. Maven Afhankelijkheid

De vereiste artefacten zijn te vinden in de openbare Maven-repository van Atlassian:

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

Zodra de repository is toegevoegd aan het pom.xml, we moeten de onderstaande afhankelijkheden toevoegen:

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

U kunt naar Maven Central verwijzen voor de nieuwste versies van kern en fuga afhankelijkheden.

3. Een Jira-client maken

Laten we eerst eens kijken naar wat basisinformatie die we nodig hebben om verbinding te kunnen maken met een Jira-instantie:

  • gebruikersnaam - is de gebruikersnaam van een geldige Jira-gebruiker
  • wachtwoord - is het wachtwoord van die gebruiker
  • jiraUrl - is de URL waar de Jira-instantie wordt gehost

Zodra we deze details hebben, kunnen we onze Jira Client instantiëren:

MyJiraClient myJiraClient = nieuwe MyJiraClient ("gebruikersnaam", "wachtwoord", "//jira.company.com");

De constructor van deze klasse:

openbare MyJiraClient (String gebruikersnaam, String wachtwoord, String jiraUrl) {this.username = gebruikersnaam; this.password = wachtwoord; this.jiraUrl = jiraUrl; this.restClient = getJiraRestClient (); }

De getJiraRestClient () gebruikt alle verstrekte informatie en retourneert een exemplaar van JiraRestClient. Dit is de belangrijkste interface waarmee we communiceren met de Jira REST API:

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

Hier gebruiken we de basisverificatie om met de API te communiceren. Er worden echter ook meer geavanceerde authenticatiemechanismen zoals OAuth ondersteund.

De getUri () methode converteert eenvoudig de jiraUrl in een instantie van java.net.URI:

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

Hiermee is onze infrastructuur voor het maken van een aangepaste Jira-client voltooid. We kunnen nu verschillende manieren bekijken om met de API te communiceren.

3.1. Maak een nieuwe uitgave

Laten we beginnen met het creëren van een nieuw probleem. We zullen deze nieuwe uitgave gebruiken voor alle andere voorbeelden in dit artikel:

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

De projectKey is het unieke dat uw project definieert. Dit is niets anders dan het voorvoegsel dat aan al onze problemen wordt toegevoegd. Het volgende argument, issueType is ook projectafhankelijk en identificeert het type van uw problemen, zoals "Taak" of "Verhaal". De Samenvatting van het probleem is de titel van onze uitgave.

Het probleem is een voorbeeld van IssueInput naar de rest API. Afgezien van de invoer die we hebben beschreven, kunnen zaken als toegewezen persoon, verslaggever, betrokken versies en andere metagegevens als een IssueInput.

3.2. Update Probleem Beschrijving

Elk probleem in Jira wordt geïdentificeerd door een uniek Draad Leuk vinden "MYKEY-123“. We hebben deze issuesleutel nodig om te communiceren met de rest API en om de beschrijving van het probleem bij te werken:

openbare ongeldige updateIssueDescription (String issueKey, String newDescription) {IssueInput input = nieuwe IssueInputBuilder () .setDescription (newDescription) .build (); restClient.getIssueClient () .updateIssue (issueKey, invoer) .claim (); }

Nadat de beschrijving is bijgewerkt, laten we de bijgewerkte beschrijving niet meer teruglezen:

openbaar probleem getIssue (String issueKey) {return restClient.getIssueClient () .getIssue (issueKey) .claim (); }

De Kwestie instantie vertegenwoordigt een probleem geïdentificeerd door de issueKey. We kunnen dit exemplaar gebruiken om de beschrijving van dit probleem te lezen:

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

Hierdoor wordt de beschrijving van het probleem op de console afgedrukt.

3.3. Stem voor een probleem

Zodra we een exemplaar van Issue hebben verkregen, kunnen we dit ook gebruiken om update- / bewerkingsacties uit te voeren. Laten we stemmen voor de kwestie:

openbare ongeldige stemForAnIssue (probleemprobleem) {restClient.getIssueClient () .vote (issue.getVotesUri ()) .claim (); }

Hiermee wordt de stem toegevoegd aan de kwestie namens de gebruiker wiens inloggegevens zijn gebruikt. Dit kan worden geverifieerd door het aantal stemmen te controleren:

openbare int getTotalVotesCount (String issueKey) {BasicVotes stemmen = getIssue (issueKey) .getVotes (); stemmen terug == null? 0: stemmen.getVotes (); }

Een ding om hier op te merken is dat we opnieuw een nieuw exemplaar van Kwestie hier omdat we het bijgewerkte aantal stemmen willen weergeven.

3.4. Een opmerking toevoegen

We kunnen hetzelfde gebruiken Kwestie instantie om namens de gebruiker een opmerking toe te voegen. Net als het toevoegen van een stem, is het toevoegen van een opmerking ook vrij eenvoudig:

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

We hebben de fabrieksmethode gebruikt waarde van() verstrekt door de Commentaar class om een ​​instantie van een Commentaar. Er zijn verschillende andere fabrieksmethoden voor geavanceerde gebruiksscenario's, zoals het controleren van de zichtbaarheid van een Commentaar.

Laten we een nieuw exemplaar van het Kwestie en lees alle Commentaars:

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

3.5. Verwijder een probleem

Het verwijderen van een probleem is ook vrij eenvoudig. We hebben alleen de probleemcode nodig die het probleem identificeert:

openbare ongeldige deleteIssue (String issueKey, boolean deleteSubtasks) {restClient.getIssueClient () .deleteIssue (issueKey, deleteSubtasks) .claim (); }

4. Conclusie

In dit korte artikel hebben we een eenvoudige Java-client gemaakt die kan worden geïntegreerd met de Jira REST API en enkele basisbewerkingen kan uitvoeren.

De volledige bron van dit artikel is te vinden op GitHub.