一、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
# 修改密碼
6、Docker-GitLab項目-HTTP克隆方式未攜帶端口號問題修復:
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相關操作:
1、用户管理:
2、羣組管理:
3、項目管理: