Gitlab Jira Integration

Trân.
ZaloPay Engineering
4 min readApr 10, 2020

GitLab là một công cụ quản lí mã nguồn đã quá quen thuộc với mỗi chúng ta. Còn Jira là một ứng dụng theo dõi và quản lý dự án. Một vài tính năng cơ bản của Jira có thể kể đến như: quản lý các tasks, bugs, tính năng mới; dễ dàng quản lý nhiều dự án phần mềm cùng lúc; xây dựng quy trình làm việc tương thích với yêu cầu của từng dự án;…

Trước đây, khi chưa đưa vào sử dụng Jira, ta sử dụng GitLab issue để theo dõi tiến độ công việc. Nhưng Jira hiện tại là công cụ quản lý chính vậy nên ta cần có cách liên kết Gitlab Project và Jira issue.

GitLab cho ta tính năng tích hợp Jira vào project, lúc này GitLab thể tự động phát hiện và liên kết tới Jira issue, từ đó dễ dàng quản lý và theo dõi tiến độ công việc ngay trên Jira.

Tính năng

Một số tính năng có thể thực hiện khi tích thợp GitLab với Jira:

  • Liên kết Jira Issue trong một commit hoặc merge request (MR) trên Gitlab (ví dụ: “ISSUE-123 nội dung commit”). GitLab sẽ tự tạo một hyperlink liên kết thẳng đến issue được mention. Tại Jira, Jira issue sẽ tự động được thêm một comment thể hiện lại commit/MR bao gồm: author, nội dung commit, và một hyperlink liên kết ngược lại GitLab commit/MR.
  • Đóng một Jira Issue. Khi commit hoặc merge vào default branch nội dung “closes ISSUE-ID” (hoặc “resolves” hay “fixes” với issue ID tương ứng), GitLab sẽ thêm vào phần mention trong Jira Issue tương ứng và đánh dấu DONE cho issue này.

Liên kết tới Jira Issue

Khi bạn commit/MR với nội dung có mention đến Jira issue, lúc này Jira issue được đề cập tới sẽ tự động thêm một comment trong đó có liên kết ngược lại GitLab.

Ví dụ Jira issue ID mình là PMACORE-418 và commit message mình trông như thế này:

Lúc này, PMACORE-418 sẽ liên kết thẳng tới Jira issue của mình, và đồng thời thêm comment và mention GitLab commit này tại Jira issue tương ứng.

Mention tới GitLab commit...
…. đồng thời cũng thêm comment.

Đóng một Jira Issue

Có 3 trigger word để thực hiện lệnh đóng Jira issue:

  • Resolves ISSUE-ID
  • Closes ISSUE-ID
  • Fixes ISSUE-ID

Bạn chỉ cần sử dụng trigger word này trong commit vào default branch , lúc này Jira Issue bạn mention tới sẽ được đánh là DONE và phần mention sẽ được thêm một mục Solved by commit commit-ID.

Issue được đánh DONE.
Phần comment cũng thể hiện đã được solve bởi commit.

Cấu hình

Để có thể tích hợp Jira và GitLab ta cần có một tài khoản Jira và tài khoản này cần có quyền ghi vào project Jira tương ứng.
Nếu bạn có quyền admin trên Jira, bạn có thể xem thêm cách cấu hình Jira: Jira Server, Jira Clould.

Sau khi có được tài khoản Jira, tại Project GitLab, vào mục Settings — Integrations — Project Services — JIRA cấu hình cho JIRA tương tự như sau:

Cấu hình Jira trên Gitlab

Đối với Jira Server ta sử dụng username password. Nếu bạn sử dụng Jira Cloud thì điền Email api token.

Về Transition ID, các ID này được dùng để close Jira issue, nếu bạn cảm thấy không cần thiết có thể bỏ qua mục này. Để lấy được Transition ID, ta sử dụng API: JiraURL/rest/api/2/issue/IssueID/transitions

Ví dụ: https://jira.url.com/rest/api/2/issue/ISSUE-418/transitions

Query transition ID

Tuy nhiên API này chỉ hiện được các transition có thể đến tiếp theo, theo ví dụ trên trạng thái hiện tại là IN_PROGRESS, và từ trạng thái này chỉ đến được PENDING, IN SANDBOXCANCELLED. Vậy nên ở đây chỉ thể hiện được 3 transition ID . Vì vậy để lấy được hết transition ID thì ta nên duyệt hết các status của issue. Ta cần lấy đủ và đúng các Transition ID nhờ đó GitLab mới có thể close được issue.

Kết luận

Liên kết GitLab Jira cũng khá đơn giản và nhờ việc liên kết này tại Jira ta có thể quản lí, theo dõi công việc đầy đủ, hiệu quả và rõ ràng hơn.

Cảm ơn anh Thinh Dang đã hướng dẫn em trong suốt quá trình làm việc và tìm hiểu.

Happy Engineering!

--

--