Bạn đang sử dụng dịch vụ quản lý source code nào? Bạn đã bao giờ nghe tới dịch vụ Gitlab chưa? Gitlab CI nữa?
Chưa đúng không?
Có lẽ các bạn đã quá quen thuộc với dịch vụ GitHub nổi tiếng của Microsoft rồi đúng không? Mình cũng vậy, các dự án lớn nhỏ mình đều sử dụng Github như một dịch vụ lưu trữ và quản lý source code mặc định.
Cho đến một ngày, mình tham gia dự án ở công ty và khách hàng yêu cầu sử dụng một dịch vụ git tương đối lạ lẫm: Gitlab. Từ đây, mình bắt đầu tìm hiểu dịch vụ Gitlab và thấy nó có rất nhiều ưu điểm, đáng để bạn trao gửi niềm tin.
Bài viết này chúng ta sẽ cùng nhau tìm hiểu Gitlab cơ bản, Gitlab CI là gì? So sánh Gitlab vs Github xem nó nổi bật hơn điểm gì.
Nội dung chính của bài viết
#Gitlab là gì?
Gitlab là một dịch vụ quản lý source code dựa trên nền tảng git. Xét trên khía cạnh nào đó thì Gitlab giống với Github.
Gitlab với những tính năng được tối ưu cho quyền riêng tư nên phù hợp với doanh nghiệp. Tuy nhiên, với người dùng là cá nhân như chúng ta thì Gitlab cũng rất tốt.
Trước kia, Github rất hạn chế việc ẩn các Repository với người dùng cá nhân. Trừ khi bạn phải bỏ tiền thì mới có thể tạo các repository riêng tư cho các dự án đặc biệt. Nhưng với Gitlab thì khác, họ miễn phí hoàn toàn.
Mời các bạn xem video giới thiệu Gitlab từ chính nhà phát hành.
Có một điểm đặc biệt của Gitlab, đó là Gitlab cho phép tải mã nguồn và tự triển khai Gitlab trên server riêng của bạn. Chính vì điều này mà rất nhiều công ty startup sử dụng Gitlab trên server để tiện bề quản lý mã nguồn và đảm bảo độ bảo mật cao nhất.
#So sánh Gitlab vs Github
Mặc dù giữa Gitlab vs Github có nhiều điểm tương đồng, nhưng cũng có những nét riêng. Ngay trên trang chủ của Gitlab cũng có một bảng so sánh tính năng giữa gitlab vs github.
Họ so sánh nhiều lắm, các bạn có thể tham khảo. Nhưng với trải nghiệm của bản thân thì mình thấy có vài điểm khác biệt lớn nhất giữa Gitlab vs Github như sau:
1. Phân quyền member
Với Gitlab, bạn có thể thay đổi quyền truy cập dự án thông qua role (hiểu nôm na là một group permission). Còn với Github, bạn cần phải quyết định quyền truy cập (đọc/ghi) vào repo cho từng member.
Ngoài ra, Gitlab còn một tính năng hay ho khác đó là: Bạn có thể cấp quyền cho một ai đó vào Issue tracker mà không cần quyền truy cập vào source code. Tính năng này đặc biệt hữu ích cho các team lớn, hoặc doanh nghiệp lớn muốn phân quyền member theo role.
2. Tính năng Gitlab CI / CD
Một trong những khác biệt lớn nhất giữa github vs gitlab đó chính là tính năng CI/CE được tích hợp miễn phí trong Gitlab.
Với Github, bạn sẽ cần phải sử dụng CI bên thứ 3 như: Travis CI, CircleCI hay Codeship… để chạy và test tự động.
3. Import & Export
Khi bạn muốn thay đổi dịch vụ quản lý source code, ví dụ bạn muốn chuyển từ Github sang Gitlab. Ngoài vấn đề giá cả cần phải xem xét thì việc import và export dữ liệu dự án từ dịch vụ cũ sang dịch vụ mới là rất cần thiết.
Gitlab cung cấp tài liệu rất chi tiết để hướng dẫn các bạn import dữ liệu từ một dịch vụ khác như GitHub, Bitbucket… sang Gitlab.
Về vấn đề này thì dường như Github làm kém hơn Gitlab rất nhiều.
4. The GitHub community
Về khía cạnh cộng đồng thì rõ ràng Github làm tốt hơn Gitlab rất nhiều. Có lẽ do chiến lược phát triển khác nhau giữa Github và Gitlab nên như vậy.
Ngay từ ban đầu, Github muốn hướng tới một cộng đồng chia sẻ mã nguồn. Dựa trên việc kết nối cộng đồng developer với nhau giống như một mạng xã hội vậy.
Nếu bạn muốn tìm kiếm một cộng đồng developer lớn thì nên lựa chọn Github.
Phần tiếp theo, chúng ta sẽ tìm hiểu những tính năng nổi bật nhất của Gitlab nhé.
#Gitlab cơ bản
Về cơ bản, Gitlab là dịch vụ để quản lý mã nguồn Git, nên chắc chắn Gitlab sẽ có đầy đủ những tính năng của Git như: branch, commit, push, pull, merge…
Tuy nhiên, Gitlab sẽ có những tính năng mở rộng khác để hỗ trợ việc làm việc theo team, quản lý mã nguồn tốt hơn nữa.
1. Gitlab login
Việc đăng ký tài khoản Gitlab hoàn toàn miễn phí. Kể cả với yêu cầu nâng cao, ví dụ các doanh nghiệp chẳng hạn, thì giá cho các gói cao cấp cũng rất rẻ.
Với cá nhân, thì chúng ta cứ chọn loại miễn phí mà chiến thôi.
Quá trình đăng ký cực kỳ đơn giản, thậm chỉ bạn có thể sử dụng tài khoản Google, Twitter, Github để đăng ký cho nhanh cũng được.
Khi đã có tài khoản rồi thì bạn tiến hành login như bên dưới: đăng nhập
2. Gitlab CI
CI là từ viết tắt của Continuous Integration. CI là công nghệ giúp chúng ta tự động build và test phần mềm mỗi khi có một developer push code mới vào ứng dụng.
CI được sử dụng khi các dự án yêu cầu các developer phải push code thường xuyên, thực hiện hàng ngày luôn. Lúc này, code sẽ được push lên Test server liên tục, và khi code bị lỗi ở đâu đó thì lập tức bị phát hiện ngay.
Công nghệ CI thường được triển khai để thực hiện compile hoặc unit test dự án mỗi khi có code được push lên. Đảm bảo mỗi commit đều phải pass hết các unit test, phát hiện lỗi sớm nhất có thể.
Gitlab CI là một tính năng miễn phí, đây chính là một điểm nổi bật của Gitlab so với các dịch vụ git khác. Chính vì thế mà nhiều người hay nghĩ tên dịch vụ này là Gitlab CI. Mà trên chính trang chủ cũng nhắc đến nhiều cụm từ này, nên nhầm là bình thường 🙂
Demo tính năng Gitlab CI:
3. Gitlab runner – cách cài đặt Gitlab runner
Để bạn có thể chạy được test tự động mỗi khi có code mới, bạn cần phải có một runner. Gitlab runner là một công cụ được cài đặt sẵn trên server, luôn luôn lắng nghe và sẽ chạy theo một kịch bản được định sẵn.
Mình sẽ hướng dẫn các bạn cài đặt gitlab runner trên Centos 9
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash sudo yum install gitlab-ci-multi-runner
Sau khi cài đặt thành công, bạn cần đăng ký runner với Gitlab. Bạn vào setting -> CI- CD, chọn Runner settings để lấy mã token.
OK, khi đã có token rồi, bạn quay trở lại server vừa cài đặt Runner, gõ lệnh sau để đăng ký:
sudo gitlab-ci-multi-runner register
Quá trình đăng ký rất đơn giản, bạn cứ làm theo hướng dẫn trên màn hình là được. Nó hỏi gì thì cứ trả lời, nếu cần token thì bạn paste cái mã token bạn vừa lấy ở bước trên là được
4. Gitlab ssh – kết nối Runner với Repo
Sau khi bạn đã cài đặt runner trên một test server, nhưng gitlab và gitlab runner vẫn chưa thể nhìn thấy nhau được. Ta phải tiến hành cấu hình đôi chút để kết nối gitlab runner này với repo trên gitlab.
Giao thức để kết nối gitlab runner với repo chính là gitlab SSH.
Gitlab ssh, thực ra cũng chính là giao thức kết nối bảo mật SSH. Giao thức SSH là một kiểu kết nối an toàn sử dụng phương thức bảo mật bất đối xứng (với 2 khóa là public key và private key).
>>Bạn có hứng thú với giao thức bảo mật SSH, mời bạn đọc bài viết này để hiểu rõ hơn về giao thức SSH: SSH là gì? Phương pháp kết nối không cần mật khẩu.
Bạn chạy ssh-key để tạo key cho SSH như bình thường, nếu có key rồi thì thôi.
vi ~/.ssh/id_rsa
Bạn copy private key và dán vào trường SSH_PRIVATE_KEY
trên gitlab
Đến đây là bạn đã hoàn thành việc kết nối gitlab runner với repo trên gitlab rồi. Giờ đây, mỗi khi có một commit nào đó trên repo, runner sẽ chạy test theo đúng kịch bản mà bạn đã cấu hình từ trước.
5. Gitlab docker
Như mình đã giới thiệu ở trên, Gitlab cho phép bạn tải mã nguồn và tự triển khai gitlab trên server riêng. Tuy nhiên, với cách cài đặt thủ công như vậy sẽ phức tạp và dễ xung đột với các phần mềm có sẵn.
Để khắc phục được điều này, bạn chỉ cần cài đặt gitlab qua Docker – một công nghệ ảo hóa cực kỳ hot hiện nay.
Bài viết này mình sẽ không đi sâu về Docker, cách cài đặt và sử dụng Docker như thế nào. Giả sử các bạn đã có sẵn Docker trên server.
Để cài đặt Gitlab, bạn mở Terminal lên vào gõ đúng một dòng sau:
$ docker run -d --name local-gitlab --restart always -p 80:80 gitlab/gitlab-ce
Bạn đợi một chút để Gitlab hoàn thiện việc cấu hình nhé, trong lúc đó thì nhâm nhi cốc cà phê thui.
#Tạm kết
Về cơ bản Gitlab là một dịch vụ quản lý source code tuyệt vời, với nhiều tính năng tích hợp sẵn lại miễn phí, đặc biệt là tính năng gitlab CI tích hợp sẵn.
Mình hi vọng, qua bài viết này bạn sẽ có thêm lựa chọn cho dự án của mình bên cạnh Github.
Ý kiến của bạn về Gitlab này như thế nào? Để lại bình luận bên dưới cho mọi người cùng thảo luận nhé.
Bình luận. Cùng nhau thảo luận nhé!