温馨提示×

GitLab项目在Ubuntu上的协作

小樊
34
2025-12-12 20:36:13
栏目: 智能运维

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:
        • npm ci
        • npm run build
      • artifacts:
        • paths: [dist/]
    • 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。

0