AgileOps Blog | Học hỏi từ các chuyên gia

Bitbucket là gì? Nền tảng lưu trữ và quản lý mã nguồn hoàn chỉnh

Written by Phung Trinh | Aug 17, 2023 7:04:17 AM

Có hơn 15 triệu người dùng từ hàng triệu team khác nhau đã và đang tin dùng công cụ Bitbucket để triển khai các dự án phát triển phần mềm.

Bitbucket

Đó là kết quả cho quá trình xây dựng và nâng cấp Bitbucket của Atlssian. Bitbucket là giải pháp quản lý kho lưu trữ, được thiết kế nhằm mục đích triển khai các giải pháp DevOps tối ưu và hiệu quả nhất.

Cùng AgileOps tìm hiểu về Bitbucket và kiểm chứng “công năng” của sản phẩm này, cụ thể là phiên bản cloud!

Giải mã Version Control

Khi thực hiện dự án phát triển phần mềm, đôi khi, sẽ có những sự việc không mong muốn xảy ra như xóa nhầm code, nhầm file hay không tìm thấy đoạn code đã viết. Một số sản phẩm đòi hỏi sự tham gia của nhiều lập trình viên, lúc này, họ cần một kho lưu trữ dữ liệu, nơi chia sẻ code và quan sát tiến độ làm việc của các lập trình viên khác.

Để khắc phục vấn đề này, hệ thống Version Control, hay còn gọi là hệ thống quản lý phiên bản, đã “xuất hiện”. Hệ thống kiểm soát phiên bản cho phép bạn lưu trữ mã nguồn, theo dõi lịch sử thay đổi của mã nguồn, quản lý các nhánh (branch) và tích hợp công việc của nhiều người dùng. Bằng cách sử dụng hệ thống kiểm soát phiên bản, các thành viên trong dự án có thể làm việc song song trên cùng một mã nguồn mà không gây xung đột và dễ dàng quay lại các phiên bản trước đó nếu cần.

Bitbucket cung cấp hệ thống kiểm soát phiên bản để quản lý và theo dõi sự thay đổi trong mã nguồn dự án. Hệ thống kiểm soát phiên bản được hỗ trợ trong Bitbucket là Git.

Bitbucket là gì?

Để “tiếp cận” Bitbucket dễ dàng hơn, cùng AgileOps xem qua khái niệm về Git.

Git là gì? Xuất hiện từ năm 2005, Git là một hệ thống quản lý phiên bản. Git lưu trữ toàn bộ mã code và lịch sử thay đổi của dự án. Nhờ đó, các thành viên có thể chia sẻ và theo dõi tiến độ dự án dễ dàng hơn.

  • 📢 “Liệu Git có thông báo cho tôi khi có cập nhật mới trong source code?”
  • 🔒 “Các mã code được bảo mật như thế nào? Có cách nào đảm bảo “chất lượng” của các mã code, kiểm tra lỗi và fix lỗi dễ dàng hơn?”

Nhận ra được các thắc mắc của các nhóm phát triển phần mềm, năm 2010, Atlassian mua lại Bitbucket và phát triển công cụ này nhằm giải quyết các vấn đề trên.

Bitbucket là một dịch vụ quản lý mã nguồn và hệ thống quản lý phiên bản của dự án, hỗ trợ hai hệ thống quản lý phiên bản phổ biến là Git và Mercurial. Năm 2020, sản phầm này chính thức ngừng hỗ trợ Mercurial và chỉ hỗ trợ Git cho đến hiện tại.

Bitbucket có thể hoạt động trên đa dạng nền tảng, bao gồm Cloud, Server và Data Center. Với Bitbucket, người dùng có thể tạo các kho lưu trữ (repository), xem và so sánh thay đổi (diff), và giải quyết xung đột (conflict resolution). Bên cạnh các điểm nổi bật như quản lý nhánh và cung cấp các kho lưu trữ cá nhân không giới hạn, Bitbucket còn hỗ trợ người dùng theo dõi, đánh giá tiến độ dự án dàng hơn thông qua giao diện trực quan và khả năng liên kết với các sản phẩm Jira.

Bitbucket chỉ dành cho các kỹ sư phần mềm?

Là một giải pháp DevOps của Atlassian, Bitbucket là cầu nối giữa bộ phận phát triển phần mềm và bộ phận vận hành với các bộ phận khác trong tổ chức, nâng cao khả năng hợp tác và hợp lý hóa quy trình xử lý công việc. Với khả năng liên kết các sản phẩm trong hệ sinh thái Atlassian, Bitbucket thúc đẩy sự cộng tác giữa các sản phẩm giúp tối ưu hoá hiệu quả công việc.

Ví dụ, một sản phẩm phần mềm được sản xuất và giao cho khách hàng cần sự “góp mặt” của bộ phận kinh doanh, bộ phận hỗ trợ và bộ phận phát triển phần mềm. Cụ thể hơn, các lập trình viên sử dụng Bitbucket cho việc xây dựng mã code, phát triển phần mềm. Bằng cách tích hợp Bitbucket với các sản phẩm như Jira Software và Jira Service Management, các thành viên trong nhóm kinh doanh có thể theo dõi tiến độ của dự án, đưa ra các phản hồi sửa lỗi hay truyền tải yêu cầu của khách hàng.

Làm quen với Bitbucket qua 5 thuật ngữ thông dụng

“Điểm danh” các khái niệm mà chắc chắn người mới nào cũng cần biết khi sử dụng Bitbucket.

Project

Đối với các sản phẩm khác của Jira như Jira Software hay Jira Service Management, project là nơi tập hợp các issue cần phải giải quyết. Cũng tương tự như vậy, trong Bitbucket, project tập trung các repository. Bằng cách sắp xếp các repository theo project, nhóm phát triển phần mềm dễ dàng theo dõi tiến độ công việc và theo sát mục tiêu để ra.

Repository

Repository đóng vai trò như một “nơi” lưu trữ mã nguồn và quản lý phiên bản. Người dùng có thể tạo và quản lý repository trực tiếp trên Bitbucket hoặc sao chép repository từ một nguồn khác.

Một số đặc điểm và tính năng quan trọng của repository trong Bitbucket bao gồm:

  • Lưu trữ mã nguồn của dự án.

  • Quản lý lịch sử thay đổi, bao gồm thông tin về các bản ghi lại các thay đổi (commit), người thực hiện và thời gian thay đổi được thực hiện.

  • Quản lý branch để phát triển đồng thời nhiều tính năng, sửa lỗi hoặc thực hiện các thay đổi mà không ảnh hưởng đến main branch.

  • Quản lý pull requests cho phép người dùng xem xét, thảo luận và chấp nhận các thay đổi được đề xuất trước khi hợp nhất vào main branch.

  • Quản lý issues tích hợp (issues tracking), cho phép tạo và theo dõi các vấn đề, lỗi và công việc liên quan đến repository.

  • Khả năng tích hợp CI/CD với các công cụ như Bamboo và các dịch vụ CI/CD khác, giúp tự động hóa quy trình kiểm tra và triển khai của dự án.

Branch

Khi lập trình, nhất là khi làm việc nhóm, mỗi lập trình viên sẽ chịu trách nhiệm cho một chức năng khác nhau của sản phẩm. Lúc này, từ source code, họ “tách” thành các branch (nhánh) khác nhau, thường được gọi là feature branch, để xây dựng đoạn code. Các branch sẽ được merge (gộp) lại vào source code để phát triển sản phẩm.

Các feature branch được phát triển dựa trên main branch

 

🗒️ Main/Master

Tất cả các branch được “phát triển” dựa trên một branch chính được gọi là main/master branch. Khi tạo một repository, branch chính cũng sẽ được tạo và kích hoạt. Lập trình viên sẽ tạo các feature branch dựa trên nhánh này để phát triển sản phẩm. Một repository chỉ tồn tại một main branch và không thể xóa được.

Pipelines và Pipes

Pipeline là dịch vụ CI/CD được tích hợp trong Bitbucket. Pipelines cho phép bạn xây dựng một cách tự động, kiểm thử, hay thậm chí triển khai mã code dựa trên file được lưu trữ trong repository.

Pipelines

Pipes là các đoạn code ngắn được “gắn vào” pipelines để xây dựng quy trình CI/CD. Mỗi Pipe đại diện cho một công việc cụ thể trong quy trình CI/CD*, chẳng hạn như chạy kiểm thử.

*Continuous Integration (CI) là một phương pháp phát triển phần mềm.
*Continuous Deployment (CD) là một phương pháp tự động triển khai phần mềm.

Pull request

Khi cần merge một branch vào main, người dùng sẽ tạo Pull request để kiểm tra đoạn code trước khi merge chúng lại với nhau. Nói cách khác, Pull request hỗ trợ nhóm phát triển phần mềm kiểm tra code trong feature branch trước khi hợp nhất chúng vào main branch. Nhờ đó, cả team có thể theo dõi được đoạn code với thông tin chi tiết, thêm bình luận vào request hay từng dòng code, giúp việc “kiểm duyệt” thuận lợi hơn.

Ngoài ra, Pull request thường được tích hợp CI/CD để kiểm tra và quản lý chất lượng code bằng việc tự động hóa các loại test như unit test/integration test.

Các tính năng không thể bỏ qua khi dùng Bitbucket

1. Bảng hiển thị công việc Your work

Bảng công việc Your work cho phép bạn theo dõi tiến trình công việc và thực hiện tác vụ dễ dàng nhờ vào các đề mục đã được thiết lập sẵn:

  • Recent repositories - Hiển thị danh sách các repository bạn vừa truy cập.

  • Pull requests - Hiển thị các request mà bạn là người tham gia “kiểm duyệt” hay các request được bạn tạo.

  • Jira issues - Bằng việc liên kết Jira Software với Bitbucket, các issue được assign (gán) cho bạn sẽ hiển thị trong mục Jira issues. Bạn có thể tạo branch trên chính issue mình chịu trách nhiệm, giúp ban dễ dàng theo dõi quá trình làm việc.

Your work

 

2. Sắp xếp các repository “gọn gàng” hơn với Project

Khi tạo một repository, bạn được yêu cầu thêm thông tin về project sẽ “chứa” repository đó. Việc sắp xếp và phân loại các repository theo project giúp cho bạn tìm kiếm các repository nhanh chóng hơn. Bạn còn có thể gán quyền tương tác với project như view, read, write hay admin cho từng người dùng khác hay nhóm, đảm bảo cho các thành viên tham gia dự án thực hiện đúng công việc cần làm và nâng cao tính bảo mật cho “không gian làm việc”.

3. Nhận diện code

Đối với các feature branch, Bitbucket cho phép người dùng tìm kiếm đoạn code theo file. Tuy nhiên, bạn có thể truy vấn đoạn code trên main branch dựa trên bộ lọc theo file và theo code.

Để truy vấn đoạn code bằng bộ lọc code:

  • 1️⃣ Truy cập vào repository

  • 2️⃣ Chọn main branch, chọn bộ lọc Code và nhập từ khóa tìm kiếm

Tìm kiếm code trên main branch

 

4. Kiểm duyệt mã code với Pull request

Kiểm duyệt mã code là một bước quan trọng trước khi merge một branch - đoạn code vào main, giúp cả team xem xét “kỹ lưỡng” đoạn code đó và đề xuất các cải tiến cho đoạn code nếu có. Pull request là nơi thực hiện quá trình kiểm duyệt trong Bitbucket. Tại đây, bạn và các thành viên trong team có xem xét đoạn code cùng nhau. Các thay đổi của đoạn code sẽ được hiển thị bằng dòng có màu sắc khác nhau, người kiểm duyệt đoạn code để lại phản hồi hay đặt câu hỏi cho toàn bộ request hay từng dòng của đoạn code, và phê duyệt hay từ chối yêu cầu merge branch vào main.

Kiểm duyệt với Pull request

 

5. Xây dựng cơ sở dữ liệu Wiki

Thay vì soạn thảo các nội dung liên quan tới project ở một ứng dụng khác, bạn có thể lưu trữ các tài liệu này trong repository bằng cách tạo trang wiki. Trang wiki đóng vai trò như một cơ sở dữ liệu tri thức được hình thành và phát triển cộng tác bởi nhiều cá nhân. Bất kỳ ai có quyền truy cập vào trang wiki đều có thể thêm hoặc chỉnh sửa nội dung, “đính kèm” các giải thích hay hướng dẫn cụ thể về dự án.

Trang wiki của một repository

Khác biệt giữa Bitbucket và GitHub

Bitbucket và GitHub đều là các dịch vụ lưu trữ mã nguồn và quản lý phiên bản phổ biến được sử dụng rộng rãi. Cả hai sản phầm cung cấp các tính năng quan trọng cho quản lý dự án phát triển

  • Quản lý phiên bản và hợp nhất mã nguồn.

  • Công cụ quản lý công việc tích hợp (issue tracking) bằng cách tạo, theo dõi, gán người phụ trách và giải quyết các issue (vấn đề) liên quan đến dự án.

  • Hỗ trợ đa dạng ngôn ngữ lập trình như Java, Python, JavaScript, Ruby, và nhiều ngôn ngữ khác.

  • Tích hợp CI/CD cho phép tự động hóa quy trình xây dựng, kiểm tra và triển khai sản phẩm.

  • Khả năng tích hợp với nhiều công cụ khác nhau.

Vậy Bitbucket và GitHub là hai sản phẩm có chức năng tự nhau? Mặc dù đều cung cấp các tính năng thiết yếu trong việc lưu trữ và quản lý mã nguồn, Bitbucket sở hữu một số điểm vượt trội hơn so với GitHub

  • Dễ dàng tích hợp Bitbucket với các sản phẩm của Atlassian như Jira hay Confluence để “bổ sung” cho một hay nhiều bước của quy trình làm việc, giúp hoàn thiện và tối ưu dự án phát triển.

  • Thiết lập các quyền triển khai phần mềm để kiểm soát hoạt động của người dùng.

  • Code Insights đem đến các báo cáo chi tiết, chú thích và số liệu, giúp cải thiện chất lượng đoạn code.

Dưới đây là bảng so sánh chi tiết các chức năng của Bitbucket và GitHub:

So sánh chi tiết các chức năng của Bitbucket và GitHub

Vì sao chọn Bitbucket?

Bitbucket là công cụ quản lý mã nguồn trong bộ công cụ DevOps được Atlassian phát triển dựa trên tiêu chí Hợp tác - Mở rộng - Tăng trưởng - Bảo mật. Nhờ khả năng tích hợp tối ưu bộ sản phẩm Jira của Bitbucket, các repository, các bước xây dựng và triển khai sản phẩm sẽ được hiển thị cùng các issue cần xử lý trong Jira. Từ đó, các phòng ban có thể phối hợp và giao tiếp dễ dàng hơn, đảm bảo tiến độ dự án và chất lượng sản phẩm. Với Bitbucket, bạn không chỉ cập nhật được những thay đổi của đoạn code mà còn hiểu được lý do của chúng.

Tính năng phân quyền truy cập nhánh là một phần “độc đáo” của Bitcbuket. Nó giúp hạn chế trường hợp vô tình merge nhánh vào main. Ngoài ra, tập trung vào trải nghiệm của người dùng còn là một điểm “cộng” cho Bitbucket. Tất cả các công việc cần làm sẽ hiển thị bằng giao diện trực quan, cho phép người dùng nhanh chóng tiếp cận các mục cụ thể.

Còn băn khoăn và thắc mắc về các tính năng của Bitbucket? Liên hệ AgileOps - đối tác Atlassian tại Việt Nam để được hỗ trợ tư vấn sản phẩm miễn phí.