Gitlab là gì? GitLab khác gì GitHub? Dùng để làm gì? Cách cài & Sử dụng Gitlab
GitLab là gì? GitLab là một nền tảng vòng đời DevOps hoàn chỉnh dựa trên nền tảng web, cung cấp hệ thống quản lý mã nguồn Git (Git Repository Manager), tích hợp sẵn công cụ CI/CD, theo dõi lỗi (Issue Tracking) và kho lưu trữ container. Đối với các đội ngũ phát triển lo ngại […]
GitLab là gì? GitLab là một nền tảng vòng đời DevOps hoàn chỉnh dựa trên nền tảng web, cung cấp hệ thống quản lý mã nguồn Git (Git Repository Manager), tích hợp sẵn công cụ CI/CD, theo dõi lỗi (Issue Tracking) và kho lưu trữ container. Đối với các đội ngũ phát triển lo ngại rủi ro rò rỉ mã nguồn theo cam kết NDA hoặc không muốn chi trả chi phí seat bản quyền hàng tháng đắt đỏ trên GitHub hay GitLab SaaS, giải pháp tối ưu nhất là tự triển khai máy chủ GitLab Self-Hosted trên hạ tầng riêng tại ThueVPSGiaRe.vn.
GitLab là gì?
GitLab là nền tảng quản trị mã nguồn và thực thi quy trình DevOps khép kín, cho phép lưu trữ kho Git, thiết lập đường ống CI/CD tự động, rà soát mã nguồn và kiểm soát quyền phát hành phần mềm trên một giao diện duy nhất.
Nhiều kỹ sư mới vào nghề thường nhầm lẫn giữa Git và GitLab. Git là công cụ quản lý phiên bản phân tán (Distributed Version Control System – DVCS) chạy cục bộ trên máy trạm thông qua giao diện dòng lệnh CLI. Git theo dõi lịch sử thay đổi của từng tệp tin và hỗ trợ phân nhánh (branching).
Trong khi đó, GitLab là giải pháp hạ tầng máy chủ tập trung hóa Git. GitLab cung cấp giao diện đồ họa trực quan (Web GUI), máy chủ xác thực tài khoản, trung tâm kiểm duyệt Merge Request, công cụ lập kế hoạch Issue Board và đặc biệt là hệ thống tự động hóa kiểm thử mã nguồn (GitLab CI/CD).
So sánh GitLab khác gì GitHub: Đâu là lựa chọn tối ưu cho bạn?
GitLab và GitHub hiện là hai nền tảng dẫn đầu trong hệ sinh thái quản lý mã nguồn toàn cầu. GitHub thống trị về số lượng dự án mã nguồn mở và cộng đồng developer đông đảo. Ngược lại, GitLab chiếm ưu thế vượt trội ở khả năng cung cấp nền tảng tự lưu trữ độc lập (Self-Hosted) và tích hợp đường ống CI/CD nguyên bản mạnh mẽ.

Xem bảng so sánh để biết GitLab khác gì GitHub:
| Tiêu chí so sánh | GitLab Self-Hosted (Tự dựng) | GitLab.com (Cloud SaaS) | GitHub (Cloud SaaS) |
|---|---|---|---|
| Quyền kiểm soát mã nguồn | Tuyệt đối 100%, dữ liệu nằm trọn vẹn trên ổ cứng VPS riêng | Dữ liệu nằm trên máy chủ hạ tầng đám mây của GitLab | Dữ liệu đặt trên hạ tầng Microsoft Cloud |
| Chi phí định kỳ | Cố định theo tiền thuê VPS (không tăng theo số lượng thành viên) | Tính phí theo từng thành viên (User Seat) mỗi tháng | Tính phí theo từng tài khoản và gói tài nguyên đính kèm |
| Thời gian chạy CI/CD | Không giới hạn số phút, gắn Runner nội bộ tùy thích | Giới hạn định mức phút chạy miễn phí theo từng cấp bậc gói | Giới hạn 2.000 phút/tháng cho tài khoản miễn phí |
| Độ phức tạp quản trị | Cần kỹ năng Linux cơ bản để vận hành, sao lưu và cập nhật bản vá | Không cần quản trị hạ tầng, nhà cung cấp duy trì 24/7 | Không cần quản trị hạ tầng, hệ thống tự động hoàn toàn |
Đối với nhóm phát triển độc lập và doanh nghiệp vừa và nhỏ, việc đưa toàn bộ mã nguồn lên dịch vụ đám mây công cộng tiềm ẩn nguy cơ rò rỉ dữ liệu hoặc bị khóa tài khoản khi có sự cố tranh chấp quyền sở hữu. Phương án tự vận hành GitLab trên máy chủ ảo cá nhân là bài toán cân bằng hoàn hảo giữa tính an toàn, quyền tự quyết và chi phí.
Đặc điểm của nổi bật của nền tảng GitLab
Sức mạnh của GitLab đến từ lối thiết kế phân tầng quy củ, cho phép hệ thống mở rộng linh hoạt từ quy mô một máy chủ cá nhân đến mô hình cụm máy chủ nhiều nốt phân tán (High Availability Cluster).
GitLab hiện có những phiên bản nào?
GitLab được cung cấp với 3 phiên bản chính, phục vụ các nhu cầu khác nhau từ cộng đồng mã nguồn mở đến doanh nghiệp và tự động hóa quy trình phát triển phần mềm.
GitLab Community Edition (CE)
GitLab Community Edition (CE) là phiên bản mã nguồn mở và miễn phí dành cho cộng đồng. Phiên bản này được phân phối thông qua hệ thống Git và thường xuyên nhận các bản cập nhật từ đội ngũ phát triển chính thức trên cả các nhánh phát triển và nhánh ổn định.
GitLab Enterprise Edition (EE)
GitLab Enterprise Edition (EE) hướng đến đối tượng doanh nghiệp, cung cấp thêm nhiều tính năng nâng cao so với phiên bản Community Edition. EE được phân phối trực tiếp thông qua website GitLab và đi kèm dịch vụ hỗ trợ kỹ thuật trong quá trình triển khai cũng như sử dụng thực tế.
GitLab Continuous Integration (CI)
GitLab Continuous Integration (CI) là nền tảng phục vụ việc tự động hóa quá trình tích hợp và kiểm thử liên tục. Giải pháp này được đội ngũ GitLab phát triển nhằm rút ngắn thời gian triển khai và cải thiện chất lượng của quy trình phát triển phần mềm.

GitLab hiện có những phiên bản nào?
Protected Branches là cơ chế bảo vệ branch trong GitLab, cho phép kiểm soát quyền đọc, ghi và thay đổi nội dung repository. Tính năng này giới hạn quyền commit và push code đối với những người dùng được cấp phép, qua đó tăng cường khả năng bảo vệ mã nguồn.
Cơ chế Protected Branches có 3 đặc điểm kiểm soát chính:
- Hạn chế quyền push: Không cho phép tất cả người dùng thực hiện push, ngoại trừ những user được cấp quyền và master.
- Kiểm soát quyền truy cập branch: Ngăn những người không có quyền thực hiện push code lên branch được bảo vệ.
- Bảo vệ branch khỏi việc xóa: Không cho phép những người không có quyền thực hiện thao tác xóa branch.
Theo mặc định, master branch được thiết lập ở trạng thái protected branch. Những user khác sẽ được cấp mức quyền thấp hơn nhằm hạn chế các thay đổi không được phép và đảm bảo an toàn cho mã nguồn.
Kiến trúc tầng vật lý của GitLab
Tầng vật lý của nền tảng GitLab bao gồm nhiều thành phần phối hợp với nhau để tiếp nhận yêu cầu, lưu trữ dữ liệu, xử lý tác vụ và quản lý hoạt động của hệ thống.
Repository – Kho lưu trữ dự án
Repository đảm nhiệm việc lưu trữ và quản lý các dự án trên GitLab. Dữ liệu của dự án có thể được lưu trong nhiều loại hệ thống lưu trữ khác nhau, từ các thiết bị đơn giản như ổ cứng cho đến những hệ thống file phức tạp như NFS.
Nginx – Thành phần tiếp nhận request
Nginx hoạt động như điểm tiếp nhận đầu tiên của hệ thống. Khi người dùng gửi request, Nginx tiếp nhận yêu cầu và chuyển công việc đến các worker phía sau để xử lý tác vụ tương ứng.
Database – Hệ thống lưu trữ dữ liệu
Cơ sở dữ liệu có thể được xem như hệ thống hồ sơ điện tử của GitLab, chịu trách nhiệm lưu trữ nhiều loại thông tin quan trọng, bao gồm:
- Các đối tượng liên quan đến repository như metadata, issue, merge request,…
- Thông tin về quyền truy cập của người dùng gửi yêu cầu đến hệ thống.
Redis – Kênh trung gian điều phối tác vụ
Redis đóng vai trò là lớp giao tiếp trung gian, tiếp nhận và sắp xếp các nhiệm vụ hoặc yêu cầu để chuyển đến những worker phù hợp xử lý thông qua các cubby hole.
Sidekiq – Worker xử lý tác vụ nền
Sidekiq là một loại worker chuyên xử lý các công việc chạy nền trong GitLab, trong đó email là một trong những tác vụ chủ yếu. Sidekiq nhận các công việc cần thực hiện từ Redis.
Unicorn Worker – Xử lý các tác vụ nhanh
Unicorn Worker đảm nhiệm những tác vụ đơn giản và cần phản hồi nhanh. Thành phần này tương tác với Redis để thực hiện nhiều công việc như:
- Xác thực quyền truy cập dựa trên session của người dùng được lưu trong Redis.
- Hỗ trợ thực hiện các nhiệm vụ liên quan đến Sidekiq.
- Truy xuất dữ liệu hoặc tổ chức lại tài nguyên được lưu trữ trong repository.
GitLab Shell – Tiếp nhận yêu cầu qua SSH
GitLab Shell là một worker khác có nhiệm vụ tiếp nhận các lệnh được gửi thông qua SSH. Có thể hình dung thành phần này giống như bộ phận tiếp nhận fax thay vì giao tiếp trực tiếp với người dùng. GitLab Shell có thể kết nối với Sidekiq thông qua Redis hoặc tương tác trực tiếp với Unicorn Worker và Nginx.
GitLab Enterprise Edition – Thành phần ứng dụng trung tâm
GitLab Enterprise Edition (ứng dụng) là nơi tập hợp các quy trình, nghiệp vụ và hoạt động vận hành của hệ thống. Các thành phần này được quản lý tập trung tại khu vực được ví như “office” trong kiến trúc GitLab.
System Layout – Cấu trúc thư mục và lưu trữ của GitLab
Trong kiến trúc GitLab, khi đề cập đến Git, thư mục home mặc định dành cho user Git là /home/git.
Các bare repository được lưu tại /home/git/repositories. Do GitLab được xây dựng dựa trên Ruby on Rails, người dùng có thể tìm hiểu sâu hơn về cơ chế vận hành của ứng dụng bằng cách nghiên cứu framework Ruby on Rails.
Đối với việc truy cập và thao tác với kho dữ liệu thông qua giao thức SSH, GitLab sử dụng thành phần riêng có tên gitlab-shell. Thành phần này được cài đặt tại /home/git/gitlab-shell.
Components – Các thành phần trong kiến trúc GitLab
Sơ đồ Components mô tả tổng quan mối quan hệ giữa những thành phần chính của GitLab. Qua đó, bạn có thể hình dung cách các thành phần phối hợp và tương tác với nhau để phục vụ quá trình phát triển phần mềm cũng như quản lý dự án.
Lợi ích của việc sử dụng GitLab khi tự triển khai
GitLab dùng để làm gì? Tự lưu trữ GitLab trên hạ tầng máy chủ ảo riêng mang lại những giá trị chiến lược vượt trội về mặt bảo mật và ngân sách so với việc phụ thuộc hoàn toàn vào dịch vụ thuê ngoài:
- Mô hình Open Core bảo vệ quyền riêng tư: Toàn bộ dữ liệu nằm hoàn toàn dưới quyền quản trị của bạn. Không một bên thứ ba nào có quyền thu thập dữ liệu mã nguồn hoặc phân tích logic phần mềm của doanh nghiệp.
- Tiện lợi trong việc truy cập và tốc độ kết nối: Đặt máy chủ VPS tại các Data Center chuẩn quốc tế trong nước giúp giảm độ trễ (latency) khi
git clonehoặcgit pushcác kho mã dung lượng lớn xuống chỉ còn vài mili-giây, không bị ảnh hưởng bởi sự cố đứt cáp quang biển quốc tế. - Tối ưu hóa bài toán kinh tế cho doanh nghiệp: Nếu nhóm của bạn có 20 lập trình viên, chi phí trả tiền bản quyền Cloud có thể lên đến hàng trăm USD mỗi tháng. Với giải pháp Self-Hosted, bạn chỉ cần trả chi phí cố định cho một máy chủ VPS ổn định.
- Cộng đồng hỗ trợ hùng hậu và tài liệu chuẩn chỉ: Hệ sinh thái người dùng GitLab trên toàn cầu rất đông đảo, mọi sự cố về cấu hình hay xung đột dịch vụ đều có tài liệu hướng dẫn xử lý chi tiết.
- Dễ dàng tích hợp hệ sinh thái DevOps khác: Hệ thống cung cấp Webhook cực kỳ nhạy bén, cho phép bạn dễ dàng đẩy mã nguồn tự động sang nền tảng PaaS như triển khai Coolify trên Ubuntu để quản lý các ứng dụng microservices một cách linh hoạt.

Yêu cầu cấu hình phần cứng VPS để tự vận hành GitLab mượt mà
GitLab là phần mềm rất nặng về tài nguyên do tích hợp đồng thời nhiều dịch vụ chạy ngầm. Rất nhiều người dùng khi cài đặt lần đầu trên máy chủ 1GB hay 2GB RAM đã gặp lỗi treo hệ thống hoặc nhận phản hồi mã lỗi 502 Whoops, GitLab is taking too much time to respond.
Để máy chủ vận hành trơn tru và các tác vụ nền không bị sập, hệ thống VPS cần đáp ứng cấu hình tối thiểu sau:
- CPU: Tối thiểu 2 vCPU, khuyến nghị từ 4 vCPU. Thế hệ vi xử lý Intel Gold với xung nhịp đơn nhân cao giúp tăng tốc độ biên dịch mã nguồn và giảm tải cho tiến trình xử lý Ruby.
- Bộ nhớ RAM: Tối thiểu 4GB RAM vật lý (cho nhóm từ 1 đến 5 người sử dụng cơ bản). Tuyệt đối khuyến nghị 8GB RAM nếu có từ 10 thành viên hoặc có chạy kèm tác vụ build CI/CD. Ngoài ra, bắt buộc tạo thêm 2GB đến 4GB Swap RAM trên ổ cứng để chống treo server.
- Ổ đĩa cứng: Tối thiểu 40GB trống. Sử dụng ổ cứng Enterprise SSD NVMe chuẩn U.2 là yếu tố sống còn giúp thao tác đọc ghi dữ liệu trên cơ sở dữ liệu PostgreSQL và các lệnh Git I/O không bị thắt cổ chai.
- Hệ điều hành: Ưu tiên phiên bản Ubuntu 22.04 LTS hoặc Ubuntu 24.04 LTS 64-bit để nhận được các gói cập nhật phần mềm ổn định và lâu dài nhất từ đội ngũ phát triển GitLab.
Cách cài đặt GitLab trên Windows và Ubuntu chi tiết từ A-Z
Quy trình triển khai GitLab bao gồm việc chuẩn bị máy chủ, cài đặt các thành phần cốt lõi và làm chủ các tính năng quản trị dự án. Dưới đây là tài liệu hướng dẫn cụ thể từng thao tác triển khai GitLab Runner trên Windows, thiết lập gói máy chủ GitLab Omnibus trên Linux Ubuntu cùng quy trình quản trị người dùng, phân quyền nhóm và bảo vệ nhánh làm việc trong thực tế.
1. Hướng dẫn cài đặt GitLab Runner trên hệ điều hành Windows
Đối với môi trường Windows, lập trình viên thường triển khai GitLab Runner để phục vụ điều phối và thực thi các tác vụ tự động hóa CI/CD. Quy trình đăng ký và kích hoạt Runner được thực hiện qua 12 bước tiêu chuẩn sau:
Khởi tạo thư mục chứa ứng dụng: Tạo một thư mục mới có tên GitLab-Runner trên ổ đĩa hệ thống (ví dụ đường dẫn: C:\GitLab-Runner).
Tải tệp thực thi nhị phân: Tải xuống tệp thực thi (binary) tương ứng với kiến trúc phần cứng máy tính của bạn (bản x86 hoặc amd64). Di chuyển tệp tải về vào thư mục C:\GitLab-Runner và đổi tên tệp thành gitlab-runner.exe.
Mở trình điều khiển dòng lệnh: Mở cửa sổ Command Prompt (CMD) với quyền quản trị, điều hướng vào thư mục vừa tạo và khởi chạy lệnh đăng ký:
C:\GitLab-Runner>gitlab-runner.exe register
Khai báo URL điều phối CI: Hệ thống sẽ yêu cầu cung cấp đường dẫn coordinator của GitLab CI. Nhập URL hệ thống (ví dụ: https://gitlab.com):
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): https://gitlab.com
Cung cấp mã xác thực Token:
Please enter the gitlab-ci token for this runner: xxxxx
Cách lấy mã token: Đăng nhập tài khoản tại https://gitlab.com/users/sign_in .

Chọn project cần gắn Runner > vào mục Settings > chọn CI/CD > tìm đến phần Runners Settings và bấm mở rộng (Expand) để sao chép chuỗi mã token được cung cấp.



Nhập thông tin mô tả cho Runner:
Please enter the gitlab-ci description for this runner: [Admin-PC]: Hello GibLab Runner
Thiết lập nhãn điều hướng (Tag): Nhập các nhãn phân tách bằng dấu phẩy để phân loại tác vụ mà Runner này sẽ đảm nhận:
Please enter the gitlab-ci tags for this runner (coma separated): tag1, tag2
Khóa Runner với dự án hiện tại: Nhập giá trị true nếu chỉ muốn Runner xử lý riêng cho repository này:
Whether to lock the Runner to current project [true/false]: [true]: true
Sau thao tác này, màn hình sẽ thông báo: Registering runner…succeeded.
Lựa chọn môi trường thực thi (Executor): Nhập docker để tạo môi trường build cô lập và thuận tiện trong quản lý dependencies:
Please enter the executor: parallels, shell, docker+machine, kubernetes, docker-ssh+machine, docker, docker-ssh, ssh, virtualbox: docker
Chỉ định Docker Image mặc định: Chọn image nền tảng khi chạy container (ví dụ: alpine:latest):
Please enter the default Docker image (e.g. ruby:2.1): alpine:latest
Hoàn tất đăng ký: Hệ thống sẽ trả về dòng thông báo xác nhận thành công: Runner registered successfully.
Kiểm tra trạng thái kích hoạt: Truy cập lại giao diện dự án trên web, mở mục Settings > CI/CD để thấy Runner đã chuyển sang trạng thái kích hoạt màu xanh. Mọi thông tin cấu hình vừa thiết lập đều được lưu trữ trực tiếp tại tệp config.toml nằm trong thư mục C:\GitLab-Runner.

2. Hướng dẫn cài đặt máy chủ GitLab trên hệ điều hành Ubuntu bằng gói Omnibus
Gói cài đặt Omnibus đóng gói toàn bộ các dịch vụ cần thiết (Nginx, PostgreSQL, Redis, Unicorn/Puma) thành một thể thống nhất. Cách cài đặt này giúp giảm thiểu việc cấu hình phân tán và hỗ trợ quản trị hệ thống tập trung qua 7 bước:
Truy cập vào máy chủ từ xa: Đăng nhập vào VPS chạy Ubuntu bằng giao thức SSH thông qua terminal máy tính.
Tải gói cài đặt Omnibus: Tải tệp cài đặt định dạng .deb của phiên bản GitLab Community Edition tương ứng về máy chủ.

Cài đặt dịch vụ chuyển thư Postfix: Postfix là tác tử chuyển tiếp thư tín mã nguồn mở (Mail Transfer Agent) chịu trách nhiệm gửi các cảnh báo và email thông báo hoạt động của GitLab đến người dùng:
sudo apt-get install postfix
Thiết lập thông số cho Postfix: Khi giao diện đồ họa xuất hiện trong terminal, bạn dùng phím mũi tên để chọn chế độ Internet Site, sau đó điền tên miền hệ thống của máy chủ (System mail name) để hoàn tất cấu hình gửi mail.

Cài đặt gói nhị phân qua dpkg: Sử dụng trình quản lý gói dpkg của các bản phân phối Debian để giải nén và nạp gói cài đặt GitLab:
sudo dpkg -i gitlab-ce_7.10.4~omnibus-1_amd64.deb
Biên dịch lại toàn bộ hệ thống GitLab: Thực thi lệnh reconfigure để hệ thống tự động thiết lập các dịch vụ, khởi tạo cơ sở dữ liệu và lưu lại các tham số cấu hình:
sudo gitlab-ctl reconfigure
Kiểm tra trạng thái vận hành của dịch vụ: Xác nhận tất cả các thành phần nền tảng đều ở trạng thái hoạt động bình thường:
sudo gitlab-ctl status
3. Hướng dẫn sử dụng GitLab chi tiết trong quản trị dự án
Vận hành GitLab hiệu quả đòi hỏi sự kiểm soát chặt chẽ đối với quyền truy cập của từng cá nhân, khả năng gom nhóm repository cũng như thiết lập các cơ chế phòng ngừa thao tác nhầm lẫn trên mã nguồn.
A. Thao tác bổ sung người dùng vào hệ thống
Khi dự án tăng trưởng, việc thêm thành viên mới được thực hiện thông qua quy trình bảo mật sau:
- Gửi thư mời qua email: Quản trị viên nhập thông tin của nhân sự mới để hệ thống gửi lời mời chính thức qua email.
- Khai báo hồ sơ thành viên: Cho phép cập nhật ảnh đại diện (avatar) hiển thị cạnh tên trong các thảo luận cùng liên kết tài khoản liên hệ như Skype, LinkedIn, Twitter vào hồ sơ cá nhân.
- Kiểm soát số lượng người tham gia: Cho phép quản trị viên giới hạn định mức số thành viên được phép truy cập vào dự án để đảm bảo tiêu chuẩn an toàn thông tin.
- Chính sách phân quyền mặc định: Tài khoản mới tham gia không được cấp quyền quản trị (Admin) mặc định; quyền tối cao chỉ dành riêng cho những nhân sự phụ trách hạ tầng then chốt.
- Khởi tạo và đổi mật khẩu lần đầu: Hệ thống tự động tạo chuỗi mật khẩu ban đầu gửi kèm trong thư mời, đồng thời bắt buộc người dùng phải đổi mật khẩu mới ngay trong lần đăng nhập đầu tiên.
B. Tạo và quản lý nhóm làm việc (Group)
Nhóm (Group) đóng vai trò là không gian tổ chức tập trung nhiều repository liên quan đến cùng một sản phẩm hoặc phòng ban:
- Kế thừa quyền hạn tự động: Khi một thành viên được thêm vào nhóm, người đó sẽ tự động nhận quyền truy cập vào tất cả các dự án con nằm trong nhóm đó mà không cần quản trị viên phải cấp quyền thủ công từng kho code.
- Vai trò của người sáng lập: Người tạo nhóm sẽ tự động giữ vai trò Owner, nắm toàn quyền điều chỉnh cấu hình, mời thêm/loại bỏ thành viên hoặc xóa nhóm.
- Hệ thống 5 cấp bậc vai trò: Thành viên mới được phân vào 1 trong 5 cấp bậc: Guest, Reporter, Developer, Master, Owner. Trong đó chỉ hai vai trò Master và Owner mới có quyền quản trị nâng cao. Master được phép khởi tạo dự án mới trong nhóm, còn Owner có toàn quyền thay đổi thông tin cấu hình và xóa nhóm.
Bảng phân quyền chi tiết theo từng cấp độ vai trò trong GitLab:
| Cấp độ vai trò | Các quyền hạn và thao tác được phép thực hiện |
|---|---|
| Guest | – Tạo mới Issue theo dõi lỗi – Để lại bình luận, phản hồi trong dự án |
| Reporter | – Toàn bộ các quyền của cấp độ Guest – Tải mã nguồn của dự án về máy tính – Viết và chỉnh sửa tài liệu trên Wiki – Thêm Git Tag vào các mốc phát triển – Quản lý hệ thống theo dõi vấn đề (Issue Tracker) |
| Developer | – Toàn bộ các quyền của cấp độ Reporter – Tạo yêu cầu hợp nhất mã (Merge Request) – Tạo các đoạn mã chia sẻ (Code Snippets) – Đẩy mã (Push) và xóa các nhánh không được bảo vệ – Mời thêm nhóm người dùng mới vào dự án |
| Master | – Toàn bộ các quyền của cấp độ Developer – Đẩy mã trực tiếp vào các nhánh được bảo vệ (Protected Branches) – Quản lý và cấu hình danh sách nhánh được bảo vệ – Quản trị và kiểm soát hệ thống Git tags – Thực hiện sửa chữa, tinh chỉnh dự án – Thêm khóa triển khai (Deploy Key) vào dự án |
| Owner | – Toàn bộ các quyền của cấp độ Master – Cấu hình toàn diện các tham số của dự án – Giữ toàn quyền quản trị, kiểm soát và xóa dự án |
C. Thiết lập bảo vệ các nhánh chính (Protected Branches)
Bảo vệ các nhánh quan trọng (như Master, Acceptance, Production) là biện pháp cốt lõi để tránh việc mã nguồn bị ghi đè hoặc vô tình xóa mất:
- Cấm thao tác đẩy mã trực tiếp: Thành viên giữ vai trò Developer trở xuống sẽ bị chặn hoàn toàn thao tác
git pushtrực tiếp lên nhánh được bảo vệ. - Bắt buộc thông qua Merge Request: Muốn đưa thay đổi vào nhánh chính, lập trình viên bắt buộc phải tạo Merge Request để người quản lý (Master/Owner) rà soát và phê duyệt.
- Chống xóa nhánh ngoài ý muốn: Ngăn chặn triệt để nguy cơ xóa nhầm các nhánh phát hành quan trọng của sản phẩm.
D. Cấu hình khả năng hiển thị của dự án (Project Visibility)
GitLab hỗ trợ 3 cấp độ hiển thị kho mã nguồn tùy thuộc vào mức độ bảo mật yêu cầu:
- Public (Công khai): Mọi đối tượng trên mạng Internet đều có thể xem và clone mã nguồn mà không cần đăng nhập. Những ai có tài khoản hệ thống (dù không thuộc dự án) vẫn có thể gửi Issue và tạo Merge Request.
- Private (Riêng tư – Mặc định): Chỉ những người dùng được cấp quyền đích danh mới có thể tìm thấy và truy cập vào dự án. Mức độ truy cập phụ thuộc vào vai trò được giao.
- Internal (Nội bộ): Cho phép bất kỳ thành viên nào đã đăng nhập thành công vào hệ thống GitLab đều có thể xem nội dung dự án với thẩm quyền mặc định là Guest.
Những lưu ý quan trọng để vận hành GitLab hiệu quả
Để quá trình phối hợp mã nguồn luôn ổn định và nhất quán, đội ngũ phát triển nên tuân thủ các nguyên tắc sau:
- Quy hoạch thư mục rõ ràng: Sắp xếp cấu trúc code và hồ sơ tài liệu mạch lạc giúp việc tìm kiếm và bảo trì dễ dàng hơn.
- Tách nhánh cho từng tính năng: Mỗi khi triển khai tính năng mới, hãy tạo một nhánh làm việc độc lập thay vì thao tác trực tiếp trên nhánh chính
master. - Commit thường xuyên kèm mô tả chi tiết: Đóng gói các thay đổi nhỏ gọn kèm thông điệp commit rõ ràng để thuận tiện truy vết lịch sử thay đổi mã nguồn.
- Duy trì quy trình Review Code qua Pull/Merge Request: Đảm bảo toàn bộ mã nguồn đều được đồng nghiệp kiểm tra chất lượng trước khi hòa nhập vào nhánh chính.
- Tận dụng triệt để Issue và Wiki: Quản lý lỗi, phân chia công việc thông qua Issue Tracker và lưu trữ tài liệu kỹ thuật dài hạn trên hệ thống Wiki tích hợp sẵn của dự án.
Một số câu lệnh cơ bản của GitLab dành cho quản trị viên hệ thống
Công cụ dòng lệnh gitlab-ctl là cầu nối duy nhất giúp người quản trị điều khiển mọi dịch vụ bên trong máy chủ GitLab Omnibus. Khi làm việc với repository trên GitLab, bạn có thể sử dụng một số lệnh Git phổ biến dưới đây để thực hiện các thao tác quản lý mã nguồn.
Dưới đây là bảng tổng hợp các lệnh bắt buộc phải nhớ:
Sao chép Repository
git clone <repository_url>
Tạo Branch mới
git branch <branch_name>
Chuyển sang Branch khác
git checkout <branch_name>
Commit thay đổi
git commit -m "Thông điệp commit"
Đẩy thay đổi lên Repository
git push origin <branch_name>
Đồng bộ thay đổi từ Repository
git pull origin <branch_name>
Gộp Branch
git merge <branch_name>
Kiểm tra trạng thái Repository
git status
Xem lịch sử Commit
git log
Kiểm tra phần thay đổi bằng Diff
git diff
Lưu ý: Khi thực hiện các câu lệnh trên, hãy thay <repository_url> bằng URL thực tế của repository trên GitLab và thay <branch_name> bằng tên branch mà bạn đang sử dụng. Đây là những lệnh cơ bản, hỗ trợ thực hiện các thao tác phổ biến khi làm việc với mã nguồn trên GitLab.
Bên cạnh việc cài đặt trực tiếp thông qua gói Omnibus lên hệ điều hành, nhiều nhóm công nghệ hiện nay còn lựa chọn phương pháp triển khai thông qua các container biệt lập. Bạn có thể sử dụng công cụ quản trị container bằng Portainer để dễ dàng đóng gói, cập nhật và khởi chạy máy chủ GitLab Runner một cách trực quan qua giao diện web.
Câu hỏi thường gặp về nền tảng GitLab (FAQ)
1. Có thể cài đặt GitLab trên VPS có 2GB RAM được không?
Về lý thuyết là có thể nếu bạn tạo thêm 4GB Swap RAM và giảm tối đa worker của Puma. Tuy nhiên, trong thực tế sản xuất, VPS 2GB RAM sẽ chạy rất chậm, thời gian phản hồi trang web cao và thường xuyên gặp lỗi 502 khi có nhiều hơn 2 người cùng thao tác. Cấu hình khuyến nghị tối thiểu để vận hành ổn định là 4GB RAM.
2. GitLab Runner là gì và có bắt buộc cài đặt chung trên máy chủ GitLab không?
GitLab Runner là ứng dụng phụ trách trực tiếp việc nhận chỉ thị từ máy chủ GitLab để thực thi các tác vụ kiểm thử và build phần mềm trong pipeline CI/CD. Bạn hoàn toàn không nên cài Runner chung trên cùng một máy chủ GitLab nhỏ vì tác vụ build code có thể vắt kiệt CPU và làm tê liệt máy chủ quản lý mã nguồn. Nên tách Runner sang một VPS riêng biệt.
3. Bản miễn phí GitLab Community Edition (CE) có bị giới hạn số lượng người dùng không?
Hoàn toàn không. Khác với mô hình dịch vụ SaaS tính phí theo từng người dùng (Seat license), phiên bản tự dựng GitLab CE mã nguồn mở cho phép bạn tạo số lượng tài khoản người dùng và số lượng kho lưu trữ không giới hạn, năng lực hệ thống chỉ phụ thuộc vào dung lượng phần cứng VPS của bạn.
4. Làm thế nào để đổi mật khẩu root khi bị quên hoặc quá thời hạn 24 giờ?
Bạn có thể dùng SSH đăng nhập vào máy chủ VPS và chạy câu lệnh sudo gitlab-rake "gitlab:password:reset[root]". Hệ thống dòng lệnh của GitLab sẽ hiển thị trường nhập trực tiếp để bạn điền mật khẩu quản trị mới mà không yêu cầu nhập lại mật khẩu cũ.
5. Dữ liệu kho mã nguồn thực tế của GitLab được lưu tại đường dẫn nào?
Trên các bản phân phối Linux chạy Omnibus, các kho Git thô (Bare Repositories) được daemon Gitaly quản lý và lưu mặc định tại đường dẫn /var/opt/gitlab/git-data/repositories/. Dữ liệu này được mã hóa thư mục theo định dạng Hashed Storage để tối ưu tốc độ phân giải của hệ thống tệp tin.
Tổng kết
Hiểu rõ GitLab là gì cùng bản chất cấu trúc hạ tầng phức tạp bên trong giúp bạn dễ dàng làm chủ quy trình phát triển phần mềm độc lập, nâng cao an toàn thông tin cho toàn bộ tài sản mã nguồn của tổ chức. Việc tự triển khai hệ thống GitLab Self-Hosted trên máy chủ ảo không chỉ giúp đội ngũ thoát khỏi gánh nặng chi phí dịch vụ hàng tháng mà còn trao quyền kiểm soát tuyệt đối vào tay bạn. Để hệ sinh thái hoạt động ổn định và bền bỉ, việc trang bị một nền tảng máy chủ ảo có vi xử lý mạnh mẽ kèm ổ cứng tốc độ cao là yêu cầu mang tính tiên quyết.
Khởi Tạo Máy Chủ Chạy GitLab Ngay Hôm Nay
Cấu hình mạnh mẽ, băng thông không giới hạn, toàn quyền root với chi phí tối ưu.
Miễn trừ trách nhiệm kỹ thuật: Nội dung hướng dẫn được biên soạn dựa trên tài liệu chuẩn của GitLab Omnibus trên nền tảng Ubuntu Linux. Cú pháp câu lệnh và định mức tiêu hao tài nguyên có thể chênh lệch tùy thuộc vào phiên bản phần mềm và cường độ sử dụng thực tế. Hãy luôn thực hiện sao lưu máy chủ trước khi thay đổi cấu hình sâu bên trong hệ thống.



