Ubuntu 上用 GitLab 进行团队协作的实操指南
一 环境与安装
- 准备一台 Ubuntu 服务器,安装依赖:curl、openssh-server、ca-certificates、tzdata、perl(可选:postfix 用于邮件通知)。
- 添加 GitLab 仓库并安装(以社区版为例,亦可安装 gitlab-ee):
- 安装依赖:sudo apt-get update && sudo apt-get 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
- 安装:sudo apt-get install -y gitlab-ce
- 配置外部访问地址(编辑 /etc/gitlab/gitlab.rb):external_url ‘http://your-domain-or-ip’
- 初始化并启动:sudo gitlab-ctl reconfigure && sudo gitlab-ctl status
- 首次登录:访问 external_url,初始管理员密码在 /etc/gitlab/initial_root_password(首次登录后尽快修改并妥善保管)。
二 团队协作流程
- 创建项目与成员邀请
- 登录 → New project → 选择 Create blank project → 填写项目名与可见性(Private/Internal/Public)→ 创建后获取项目地址(如:git@your-gitlab:group/project.git)。
- 项目 → Members → 邀请成员并分配角色(如:Guest、Reporter、Developer、Maintainer、Owner),不同角色对应不同权限。
- 本地克隆与分支开发
- 克隆仓库:git clone git@your-gitlab:group/project.git
- 配置身份:git config --global user.name “Your Name”;git config --global user.email “you@example.com”
- 开发流程:git checkout -b feature/x;编辑 → git add . → git commit -m “feat: xxx” → git push origin feature/x
- 代码评审与合并
- 在 GitLab 项目页 → Merge Requests → New Merge Request → 选择源分支与目标分支(如:feature/x → main)→ 填写标题与描述 → 指派评审人并关联 Issue。
- 评审与讨论 → 通过 Pipeline(如有)→ 点击 Merge 合并 → 可删除已合并的远程分支。
- 议题与里程碑管理
- 使用 Issue 跟踪任务/缺陷,配合 Milestone 做迭代计划;在 MR 中通过 Closes #123 自动关闭关联议题。
三 权限与分支策略
- 权限建议
- Guest:仅查看;Reporter:查看与克隆;Developer:推送分支、创建 MR、运行 CI;Maintainer:合并、保护分支管理、环境管理;Owner:群组与账单管理。
- 分支策略示例
- 长期分支:main/develop;特性分支:feature/;修复分支:hotfix/;发布分支:release/。
- 保护关键分支(如 main):仅 Maintainer 可合并;开启 Require merge request、Require approval、Require status checks to pass、Delete source branch when merge request is accepted 等策略,确保质量门槛与可追溯性。
四 CI/CD 自动化协作
- Runner 与流水线
- 在 Settings → CI/CD → Runners 注册 GitLab Runner(可用 Shell/ Docker 等执行器),为项目启用共享或特定 Runner。
- 在仓库根目录创建 .gitlab-ci.yml,定义构建、测试、部署流程;推送代码后自动触发 Pipeline,在 MR 中展示结果,未通过时阻止合并。
- 常用实践
- 静态检查与单元测试为必选关卡;合并前要求 Pipeline 成功;按分支/环境区分部署作业;产物与部署权限受保护,避免越权发布。
五 邮件通知与常用配置
- 邮件通知(SMTP)
- 编辑 /etc/gitlab/gitlab.rb 启用并配置 SMTP(示例):
- gitlab_rails[‘gitlab_email_enabled’] = true
- gitlab_rails[‘gitlab_email_from’] = ‘noreply@your-domain.com’
- gitlab_rails[‘smtp_enable’] = true
- gitlab_rails[‘smtp_address’] = “smtp.your-provider.com”
- gitlab_rails[‘smtp_port’] = 587
- gitlab_rails[‘smtp_user_name’] = “your_username”
- gitlab_rails[‘smtp_password’] = “your_password”
- gitlab_rails[‘smtp_domain’] = “your-domain.com”
- gitlab_rails[‘smtp_authentication’] = “login”
- gitlab_rails[‘smtp_enable_starttls_auto’] = true
- gitlab_rails[‘smtp_tls’] = true
- 使配置生效:sudo gitlab-ctl reconfigure
- 常用维护
- 查看服务状态:sudo gitlab-ctl status;重启:sudo gitlab-ctl restart;备份:sudo gitlab-backup create(建议定期备份并异地保存)。