- Giới thiệu trải nghiệm sử dụng GitLab trong thời gian dài, tập trung vào quản lý dự án cá nhân và tích hợp CI/CD
- Ban đầu, cung cấp kho lưu trữ riêng tư miễn phí là ưu điểm lớn của GitLab so với GitHub, và về sau quy trình làm việc cũng đã hoàn toàn ổn định trên nền tảng này
- Tính năng Container Registry là thứ được dùng thường xuyên nhất, cho phép lưu trữ image mà không cần tài khoản Docker Hub hay quản lý token riêng
- GitLab CI được nhắc đến với các điểm mạnh chính như pipeline dựa trên tệp cấu hình, shared runner miễn phí và tài liệu phong phú
- Tuy vậy, tốc độ giao diện web chậm và quá nhiều tính năng là các nhược điểm được chỉ ra; cách dùng song song GitHub và GitLab theo từng mục đích được xem là hiệu quả nhất
Bối cảnh sử dụng GitLab
- Bắt đầu dùng GitLab vào thời GitHub còn tính phí cho kho lưu trữ riêng tư vì GitLab cung cấp kho riêng tư miễn phí
- Có thể quản lý nhiều dự án thử nghiệm mà không cần công khai chúng
- Sau đó GitHub cũng áp dụng chính sách miễn phí, nhưng khi ấy pipeline CI, image Docker và script triển khai đã được xây dựng xoay quanh GitLab nên không còn lý do cần chuyển đổi
Tính năng Docker Registry
- Mọi dự án GitLab đều mặc định đi kèm Container Registry
- Quy trình rất đơn giản: build image ở máy local hoặc trong CI rồi push lên, sau đó pull ở nơi cần dùng
- Không cần tài khoản Docker Hub hay quản lý token riêng, cũng không phải lo về giới hạn pull
- Với dự án cá nhân, bộ tính năng này là hoàn toàn đủ dùng, và giới hạn dung lượng 10GB trên thực tế cũng không thành vấn đề
- Dọn dẹp các tag cũ và chia sẻ layer giúp duy trì hiệu quả sử dụng không gian
Môi trường CI/CD
- Ngay từ đầu, GitLab CI đã hiện thực hóa khái niệm “CI dựa trên tệp cấu hình”
- Chỉ cần thêm tệp
.gitlab-ci.yml là pipeline sẽ tự động chạy
- Cấu hình được quản lý phiên bản nên có thể theo dõi trạng thái pipeline trong quá khứ
- Pipeline cơ bản gồm các bước build image, push và triển khai tùy chọn
- Bước triển khai có thể được kiểm soát bằng trigger thủ công
- Shared runner là miễn phí nhưng chậm; khi cần có thể dễ dàng cài runner riêng trên VPS
- Tài liệu CI/CD rất đồ sộ; một khi đã nắm được mẫu triển khai thì có thể quản lý hiệu quả bằng cách sao chép và tái sử dụng cấu hình sẵn có
Những điểm bất tiện
- Tốc độ giao diện web chậm, thời gian chờ xuất hiện khi chuyển giữa merge request, pipeline và log
- Gần đây có vẻ đã cải thiện đôi chút nhưng vẫn chậm hơn GitHub
- Có vấn đề thừa tính năng
- Có nhiều tính năng như theo dõi issue, wiki, package registry, quét bảo mật..., nhưng tỷ lệ dùng thực tế chỉ khoảng 10%
- Tuy nhiên, đây cũng là lợi thế tiềm năng vì có thể tận dụng các tính năng đã tích hợp sẵn khi cần
Chi phí và quy trình làm việc
- Đang vận hành khoảng 12 dự án cá nhân miễn phí, bao gồm cả dự án đang hoạt động lẫn các thử nghiệm đã tạm dừng
- GitLab được dùng như không gian làm việc riêng tư, còn GitHub là không gian chia sẻ dự án công khai
- GitHub phù hợp cho cộng tác và tăng khả năng hiển thị, còn GitLab phù hợp cho thử nghiệm và quản lý tự động hóa
- Cách dùng song song hai nền tảng này giúp duy trì sự cân bằng và hiệu quả trong quy trình làm việc
3 bình luận
Người ta vẫn đánh giá GitLab có CI/CD tốt.
Nhưng vì giới hạn của tài khoản miễn phí nên dù có hỗ trợ tiếng Hàn thì tôi vẫn hay nghiêng về GitHub hơn.
Forgejo và Gitea, nền tảng gốc của nó, lại cho cảm giác như bản nhái GitHub nên tôi cũng không mấy muốn dùng.
Bên tôi đang dùng Gitea; do có hình ảnh giao diện khá giống nên đường cong học tập thấp, vì vậy đã áp dụng.
GitLab thì có quá nhiều tính năng nên khó dùng, và cũng nhận nhiều phản hồi rằng nó khá nặng..
Ý kiến trên Hacker News
Nhân viên hỗ trợ khách hàng biến mất và mọi yêu cầu đều phải thông qua đội sales, trong khi phần lớn tính năng lại bị khóa trong gói Ultimate đắt đỏ
Các tính năng không phải “AI” thì nhiều năm nay gặp cùng một vấn đề mà vẫn bị bỏ mặc
Vì thế giờ mỗi khi có email bán hàng gửi đến, tôi lại chơi trò “không biết đến bao giờ mới được thấy tốc độ phát triển nhanh như ngày xưa?”
Khoảng 2015~2020 tôi dùng khá vui, nhưng mọi tính năng đều còn thô và họ tập trung vào việc lấp đầy checklist tính năng hơn là độ hoàn thiện
Có lẽ đó cũng là lựa chọn khó tránh nếu một đội nhỏ muốn cạnh tranh với các tập đoàn lớn
Sau 10 năm vẫn vậy, trong khi Gitea hay Forgejo nhanh hơn nhiều và sau khi Go 1.26 ra mắt thì còn hứa hẹn tốt hơn nữa
Đặc biệt tốc độ tìm kiếm issue quá chậm nên tôi không có ý định dùng lại nữa
Năm 2018 tôi chuyển từ Bitbucket và Confluence sang GitLab Cloud, và sản phẩm của Atlassian chậm hơn nhiều cũng như phức tạp hơn
GitLab cho cảm giác nhẹ và nhanh, đến giờ phần lớn vẫn hoạt động tốt
Gần đây thử Jira Cloud thì thấy còn chậm và bất tiện hơn nhiều
Hiện tượng này thật sự rất khó tin
Điện năng tiêu thụ của máy chủ giảm 10%, còn GitLab thì có quá nhiều tính năng không cần thiết khiến UI trở nên ngột ngạt
Forgejo đơn giản hơn và có thể ẩn tính năng theo từng dự án
Dù vậy nó không có tự động cập nhật, độ hoàn thiện thấp hơn và một số tính năng hoạt động chưa đúng
Không rõ đó là theme Jekyll hay tự làm, nhưng chỉ riêng việc duyệt trang đã thấy thú vị
Vẫn giữ được những thứ cần thiết như CI, theo dõi issue, v.v. nhưng giao diện tải gần như tức thì và không có tính năng thừa
Tôi thích cú pháp GitLab CI hơn, nhưng API của Forgejo thì ít được trau chuốt hơn
Dù vậy vẫn có thể xử lý bằng script tùy chỉnh vì có thể truy cập trực tiếp vào DB
Tôi khởi chạy một cụm Kubernetes rồi kết nối Forgejo với Argo để thử nghiệm
Không rõ dùng tài nguyên của Codeberg thay vì Microsoft có phải lựa chọn đúng hay không
Có vẻ CI do dự án Woodpecker đảm nhiệm, nên tôi khá tò mò khi so với GitLab CI thì thế nào
GitLab tuy không đến mức như Gerrit nhưng vẫn hỗ trợ stack MR, và sau force push vẫn xem được comment
Tôi nghĩ văn hóa làm việc xoay quanh các PR lớn kiểu GitHub làm hại cả năng suất lẫn văn hóa review
Các tính năng quản trị như thiết lập đồng bộ LDAP vẫn còn chỗ để cải thiện, nhưng cú pháp CI/CD nhìn chung khá tiện
Trong giai đoạn 2021~2024 tôi dùng hằng ngày đến mức còn phải ghi riêng nhật ký bug
Tôi đã để lại trải nghiệm liên quan trong bình luận trước
Trình theo dõi issue đơn giản của GitHub dễ dùng hơn nhiều
Người quản lý dự án có thể thích GitLab, nhưng từ góc nhìn người dùng thì GitHub tốt hơn
Giờ dùng GitHub thì đơn giản và hiệu quả hơn nhiều
Tôi thực sự ghét GitLab
Với Docker image thì chỉ có giới hạn theo từng layer, còn tổng dung lượng có thể lớn hơn nhiều
Tài liệu liên quan: Storage Usage Quotas, Container Registry Issue
Tôi muốn thử upload bản Interstellar REMUX 70GB
Cứ lặp đi lặp lại mô thức “định làm gì đó → lỗi → tìm kiếm → phát hiện bug report chính thức từ 3~8 năm trước”
Nhiều tính năng vẫn chỉ đạt mức hoàn thiện kiểu 80/20, còn chế độ xem MR thì chậm đến mức khó chịu
Tôi đã để lại nội dung liên quan trong bình luận trước
Tôi thích việc có thể tích hợp Maven, NPM và Python package registry vào pipeline CI
Nhưng tính năng thì quá nhiều và màn hình nào cũng chậm gấp đôi
Sau đó lại đổi sang Azure DevOps thì thấy chậm và quality gate cũng kém
Máy build server bị chuyển sang VM nên build chậm vì giới hạn IOPS
Tôi muốn quay lại GitLab và cũng sẵn sàng đóng góp để cải thiện hiệu năng