一、GitLab簡介:

GitLab 是一款開源的「代碼託管 + DevOps 平台」,核心功能覆蓋「代碼管理、團隊協作、自動化 CI/CD、項目管理」全流程,簡單説就是:既可以當代碼倉庫(類似 GitHub、Gitee),又能一站式實現從「代碼提交」到「自動構建、測試、部署」的全自動化流程。

 

二、GitLab組織架構與關係模型:

GitLab 中「用户(User)」「羣組(Group)」「項目(Project)」是核心實體,三者通過層級化權限體系實現協作管理,關係可總結為以下結構化模型:

1、基本關係框架:

(1)、用户(User):

GitLab 的最小操作單元(人或機器人賬號),擁有獨立的賬號密碼 / Token,可被添加到「羣組」或「項目」中並賦予權限。

(2)、羣組(Group):

用於管理多個項目和用户的集合,相當於「部門」「團隊」或「組織」,可以嵌套子羣組(如 研發部 → 前端組),方便層級化管理。

(3)、項目(Project):

代碼倉庫的載體,必須歸屬於某個「用户」或「羣組」(默認創建者為所有者),權限可分配給「用户」或「羣組」。

2、核心關係與權限規則:

(1)、創建與歸屬:

  • 管理員(Admin)可創建所有實體(用户、羣組、項目);普通用户可創建個人項目或私有羣組(取決於全局配置)。
  • 項目必須歸屬「用户」或「羣組」,羣組可包含多個項目和子羣組,用户可加入多個羣組或直接關聯項目。

(2)、權限分配邏輯:

1)、羣組與用户:

  • 用户加入羣組時被賦予「羣組級權限」,該權限默認繼承到羣組下的所有項目(無需單獨配置)。

2)、項目與用户/羣組:

  • 項目可直接添加用户並賦予權限,該權限僅作用於當前項目,可覆蓋用户在羣組中的權限(更高或更低)。
  • 項目歸屬羣組後,自動繼承羣組的用户權限(即羣組內所有用户按其羣組角色獲得項目權限),無需逐個添加。

 

三、基於Docker-GitLab安裝部署:

1、拉取鏡像:

docker pull gitlab/gitlab-ce:latest

2、創建持久化目錄:

# 存放 GitLab 配置文件(如 gitlab.rb)
mkdir -p /data/gitlab-data/config

# 存放運行日誌(如訪問日誌、錯誤日誌)
mkdir -p /data/gitlab-data/logs

# 存放核心數據(代碼倉庫、數據庫、緩存等)
mkdir -p /data/gitlab-data/data

3、啓動容器:

# 宿主機IP替換127.0.0.1
docker run -d \
  --name gitlab \
  --hostname 127.0.0.1 \
  -p 8929:80 \
  -p 2222:22 \
  -v /data/gitlab-data/config:/etc/gitlab \
  -v /data/gitlab-data/logs:/var/log/gitlab \
  -v /data/gitlab-data/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

4、等待容器初始化:

# 實時查看容器啓動日誌,首次啓動需要初始化數據庫、配置服務等,約 5-10 分鐘
docker logs -f gitlab

5、訪問GitLab並完成初始化:

(1)、訪問網頁(宿主機IP)

http://127.0.0.1:8929/users/sign_in

(2)、管理員賬號密碼:

# 賬號
root

# 獲取密碼
docker exec gitlab cat /etc/gitlab/initial_root_password

# 修改密碼

GitLab使用教程(詳細)_docker

6、Docker-GitLab項目-HTTP克隆方式未攜帶端口號問題修復:

GitLab使用教程(詳細)_docker_02

 

Docker 部署 GitLab 時自定義端口映射(如-p 8929:80)後,HTTP 克隆地址不帶自定義端口 8929 而默認隱含 80 端口,核心是 GitLab 的external_url配置未同步該自定義端口 ——Docker 端口映射僅定義了主機與容器的訪問通道,容器內的 GitLab 並不知道這個外部端口,仍按默認 80 端口生成克隆地址。

(1)相關解決方案:

# 進入運行中的 GitLab 容器
sudo docker exec -it gitlab bash

# 切換到配置目錄
cd /opt/gitlab/embedded/service/gitlab-rails/config

# 編輯 gitlab.yml,修改 port 為 8929
vi gitlab.yml

# 容器內執行,重啓所有服務
gitlab-ctl restart

GitLab使用教程(詳細)_docker_03

GitLab使用教程(詳細)_羣組_04

 

四、GitLab相關操作:

1、用户管理:

 

GitLab使用教程(詳細)_git_05

GitLab使用教程(詳細)_羣組_06

GitLab使用教程(詳細)_羣組_07

GitLab使用教程(詳細)_git_08

2、羣組管理:

GitLab使用教程(詳細)_docker_09

GitLab使用教程(詳細)_羣組_10

GitLab使用教程(詳細)_docker_11

GitLab使用教程(詳細)_docker_12

3、項目管理:

GitLab使用教程(詳細)_羣組_13

GitLab使用教程(詳細)_git_14

GitLab使用教程(詳細)_git_15