Integrasi JIRA REST API

1. Perkenalan

Pada artikel ini, kita akan melihat sekilas bagaimana mengintegrasikan dengan JIRA menggunakan REST API-nya.

2. Ketergantungan Maven

Artefak yang diperlukan dapat ditemukan di repositori Maven publik Atlassian:

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

Setelah repositori ditambahkan ke pom.xml , kita perlu menambahkan dependensi di bawah ini:

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

Anda dapat merujuk ke Maven Central untuk versi terbaru dari dependensi core dan fugue .

3. Membuat Klien Jira

Pertama, mari kita lihat beberapa informasi dasar yang kita perlukan untuk dapat terhubung ke instance Jira:

  • username - adalah nama pengguna dari setiap pengguna Jira yang valid
  • sandi - adalah sandi pengguna itu
  • jiraUrl - adalah URL tempat instance Jira dihosting

Setelah kami memiliki detail ini, kami dapat membuat contoh Klien Jira kami:

MyJiraClient myJiraClient = new MyJiraClient( "user.name", "password", "//jira.company.com");

Konstruktor kelas ini:

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

The getJiraRestClient () memanfaatkan semua informasi yang tersedia dan kembali contoh JiraRestClient . Ini adalah antarmuka utama yang akan digunakan untuk berkomunikasi dengan Jira REST API:

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

Di sini, kami menggunakan otentikasi dasar untuk berkomunikasi dengan API. Namun, mekanisme autentikasi yang lebih canggih seperti OAuth juga didukung.

Metode getUri () hanya mengubah jiraUrl menjadi instance java.net.URI :

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

Ini menyimpulkan infrastruktur kami dalam membuat klien Jira kustom. Sekarang kita dapat melihat berbagai cara untuk berinteraksi dengan API.

3.1. Buat Edisi Baru

Mari kita mulai dengan membuat terbitan baru. Kami akan menggunakan masalah yang baru dibuat ini untuk semua contoh lain di artikel ini:

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

The projectKey adalah unik yang mendefinisikan proyek Anda. Ini tidak lain adalah awalan yang ditambahkan ke semua masalah kami. Argumen berikutnya, issueType juga bergantung pada proyek yang mengidentifikasi jenis masalah Anda seperti "Task" atau "Story". The issueSummary adalah judul dari masalah kami.

Masalah ini berjalan sebagai contoh IssueInput ke API lainnya. Terlepas dari masukan yang kami jelaskan, hal-hal seperti penerima tugas, pelapor, versi yang terpengaruh, dan metadata lainnya dapat digunakan sebagai IssueInput .

3.2. Perbarui Deskripsi Masalah

Setiap masalah di Jira diidentifikasi oleh String unik seperti " MYKEY-123 ". Kami memerlukan kunci masalah ini untuk berinteraksi dengan API lainnya dan memperbarui deskripsi masalah:

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

Setelah deskripsi diperbarui, jangan membaca kembali deskripsi yang diperbarui:

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

Contoh Masalah mewakili masalah yang diidentifikasi oleh issueKey . Kita dapat menggunakan contoh ini untuk membaca deskripsi masalah ini:

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

Ini akan mencetak deskripsi masalah ke konsol.

3.3. Beri suara untuk suatu Masalah

Setelah kami mendapatkan contoh Masalah, kami dapat menggunakannya untuk melakukan tindakan pembaruan / edit juga. Mari pilih masalah ini:

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

Ini akan menambahkan suara ke masalah atas nama pengguna yang kredensial digunakan. Ini dapat diverifikasi dengan memeriksa penghitungan suara:

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

Satu hal yang perlu diperhatikan di sini adalah bahwa kami kembali mengambil contoh baru dari Masalah di sini karena kami ingin agar penghitungan suara yang diperbarui tercermin.

3.4. Menambahkan Komentar

Kita dapat menggunakan contoh Masalah yang sama untuk menambahkan komentar atas nama pengguna. Seperti menambahkan suara, menambahkan komentar juga cukup sederhana:

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

Kami menggunakan metode pabrik valueOf () yang disediakan oleh kelas Comment untuk membuat sebuah instance dari sebuah Comment . Ada berbagai metode pabrik lainnya untuk kasus penggunaan tingkat lanjut, seperti mengontrol visibilitas sebuah Komentar .

Mari kita ambil contoh baru dari Masalah dan baca semua Komentar :

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

3.5. Hapus Masalah

Menghapus masalah juga cukup sederhana. Kami hanya membutuhkan kunci masalah yang mengidentifikasi masalah:

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

4. Kesimpulan

Dalam artikel singkat ini, kami membuat klien Java sederhana yang terintegrasi dengan Jira REST API dan melakukan beberapa operasi dasar.

Sumber lengkap artikel ini dapat ditemukan di GitHub.