Integrasi API JIRA REST

1. Pengenalan

Dalam artikel ini, kita akan melihat dengan cepat bagaimana menggabungkan dengan JIRA menggunakan REST API-nya.

2. Ketergantungan Maven

Artifak yang diperlukan boleh didapati di repositori awam Maven Atlassian:

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

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

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

Anda boleh merujuk ke Maven Central untuk versi terkini pergantungan teras dan fugue .

3. Membuat Pelanggan Jira

Pertama, mari kita lihat beberapa maklumat asas yang perlu kita sambungkan ke contoh Jira:

  • nama pengguna - adalah nama pengguna mana-mana pengguna Jira yang sah
  • kata laluan - adalah kata laluan pengguna tersebut
  • jiraUrl - adalah URL tempat hos Jira dihoskan

Sebaik sahaja kami mempunyai butiran ini, kami dapat menunjukkan Pelanggan Jira kami:

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

Pembina kelas ini:

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

The getJiraRestClient () menggunakan semua maklumat yang diberikan dan pulangan satu contoh JiraRestClient . Ini adalah antara muka utama di mana kami akan berkomunikasi dengan Jira REST API:

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

Di sini, kami menggunakan pengesahan asas untuk berkomunikasi dengan API. Walau bagaimanapun, mekanisme pengesahan yang lebih canggih seperti OAuth juga disokong.

Kaedah getUri () hanya menukar jiraUrl menjadi contoh java.net.URI :

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

Ini menyimpulkan infrastruktur kami untuk mewujudkan pelanggan Jira tersuai. Kita sekarang dapat melihat pelbagai cara untuk berinteraksi dengan API.

3.1. Buat Isu Baru

Mari mulakan dengan membuat masalah baru. Kami akan menggunakan isu yang baru dibuat ini untuk semua contoh lain dalam 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 menentukan projek anda. Ini hanyalah awalan yang dilampirkan pada semua masalah kita. Argumen seterusnya, issueType juga bergantung pada projek yang mengenal pasti jenis masalah anda seperti "Task" atau "Story". The issueSummary adalah tajuk terbitan kami.

Masalahnya berlaku sebagai contoh IssueInput ke API selebihnya. Selain daripada input yang kami jelaskan, perkara seperti penerima tugas, wartawan, versi yang terpengaruh, dan metadata lain dapat digunakan sebagai IssueInput .

3.2. Kemas kini Penerangan Isu

Setiap terbitan di Jira dikenal pasti oleh String unik seperti " MYKEY-123 ". Kami memerlukan kunci masalah ini untuk berinteraksi dengan API selebihnya dan mengemas kini perihalan masalahnya:

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

Setelah keterangan dikemas kini, jangan baca semula keterangan yang dikemas kini:

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

Contoh Isu mewakili masalah yang dikenal pasti oleh issueKey . Kami dapat menggunakan contoh ini untuk membaca keterangan mengenai masalah ini:

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

Ini akan mencetak penerangan masalah ke konsol.

3.3. Undi Masalah

Setelah kami mendapat contoh Masalah, kami dapat menggunakannya untuk melakukan tindakan mengemas kini / mengedit juga. Mari pilih isu ini:

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

Ini akan menambahkan suara untuk masalah bagi pihak pengguna yang kelayakannya digunakan. Ini dapat disahkan dengan memeriksa jumlah undi:

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

Satu perkara yang perlu diperhatikan di sini adalah bahawa kita sekali lagi mendapatkan contoh Isu yang baru di sini kerana kita ingin mencerminkan jumlah undian yang dikemas kini.

3.4. Menambah Komen

Kita boleh menggunakan contoh Isu yang sama untuk menambahkan komen bagi pihak pengguna. Seperti menambahkan suara, menambah komen juga cukup mudah:

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

Kami menggunakan nilai kaedah kilangOf () yang disediakan oleh kelas Komen untuk membuat contoh Komen . Terdapat pelbagai kaedah kilang lain untuk kes penggunaan lanjutan, seperti mengawal keterlihatan Komen .

Mari dapatkan contoh Isu baru dan baca semua Komen :

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

3.5. Padamkan Isu

Menghapus masalah juga agak mudah. Kami hanya memerlukan kunci masalah yang mengenal pasti masalahnya:

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

4. Kesimpulan

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

Sumber lengkap artikel ini boleh didapati di GitHub.