Ubuntu 上使用 GitLab 进行团队协作全流程
一 环境准备与安装
- 准备一台 Ubuntu 20.04/22.04/24.04 服务器,建议内存 ≥4GB,磁盘 ≥50GB,并开放 22/80/443 端口(云服务器需在安全组放行)。
- 安装依赖并添加仓库:
- sudo apt update && sudo apt install -y curl openssh-server ca-certificates tzdata perl
- curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- 安装 GitLab(CE 或 EE,二选一):
- CE:sudo apt install -y gitlab-ce
- EE:sudo EXTERNAL_URL=“https://gitlab.example.com” apt install -y gitlab-ee
- 配置并启动:
- 编辑 /etc/gitlab/gitlab.rb,设置 external_url(如 https://gitlab.example.com 或 http://服务器IP)
- sudo gitlab-ctl reconfigure && sudo gitlab-ctl status
- 首次访问并完成 root 管理员密码设置(默认路径 /etc/gitlab/initial_root_password 可查看初始密码)。
二 本地 Ubuntu 开发者协作流程
- 配置 Git 身份:
- git config --global user.name “Your Name”
- git config --global user.email “you@example.com”
- 克隆仓库(SSH 推荐):
- git clone git@gitlab.example.com:group/project.git
- 或 HTTPS:git clone https://gitlab.example.com/group/project.git
- 日常开发(Git Flow 示例):
- 创建功能分支:git checkout -b feature/login
- 提交变更:git add . && git commit -m “feat: add login”
- 推送分支:git push origin feature/login
- 在 GitLab 创建 Merge Request(源分支 feature/login → 目标分支 main/develop),指派评审人、添加描述与任务关联(如 Closes #123),通过后合并并删除源分支。
- 同步上游变更:git checkout main && git pull --rebase;冲突时本地解决后 git push。
三 权限与分支策略
- 角色与权限(项目级):
- Guest:查看、评论、创建 Issue
- Reporter:克隆、查看代码,无写权限
- Developer:克隆、开发、提交、Push;对受保护分支的 Merge/Push 受项目设置限制
- Maintainer:创建标签、保护分支、添加成员、管理项目设置
- 分支策略建议:
- 长期分支:main(生产)、develop(集成)
- 临时分支:feature/、bugfix/、release/、hotfix/
- 保护分支设置:在 GitLab 项目 Settings → Repository → Protected branches 中配置允许 Maintainer/Developer 的 Merge/Push 权限,强制代码评审与 CI 通过后再合并。
四 CI/CD 自动化协作
- 安装 Runner(Ubuntu):sudo apt install -y gitlab-runner
- 注册 Runner(在项目 Settings → CI/CD → Runners 获取 Registration token):
- sudo gitlab-runner register
- 选择执行器:Shell 或 Docker
- 示例 .gitlab-ci.yml(Node.js 项目):
- stages: [build, test, deploy]
- build_job:
- stage: build
- script:
- artifacts:
- test_job:
- stage: test
- script: npm test – --ci
- deploy_job:
- stage: deploy
- script:
- rsync -av dist/ user@server:/var/www/app/
- only: [main]
- 提交后自动触发流水线,失败即阻断合并,保障质量门禁。
五 安全与运维要点
- 防火墙放行:sudo ufw allow 22,80,443/tcp;云上安全组同步放行。
- SSH 与文件权限:私钥 600(chmod 600 ~/.ssh/id_rsa);GitLab 数据目录属主 git:git(/var/opt/gitlab)。
- 备份与恢复:
- 备份:sudo gitlab-rake gitlab:backup:create(默认目录 /var/opt/gitlab/backups)
- 恢复:将备份文件放置备份目录后执行 sudo gitlab-rake gitlab:backup:restore(注意版本一致)
- 常用运维命令:sudo gitlab-ctl start|stop|restart|status|tail;修改 /etc/gitlab/gitlab.rb 后务必 sudo gitlab-ctl reconfigure。