在 Debian 上落地 GitLab 集成开发,可按“部署平台 → 身份与代码 → 自动化流水线 → 安全与运维”的顺序实施,覆盖从零到可用的完整闭环。
一 架构与准备
- 组件与职责
- GitLab CE:代码托管、合并请求、议题、Runner 调度、内置 Nginx/PostgreSQL/Redis。
- GitLab Runner:在 Debian 上以 Runner 角色执行 CI/CD 作业(可 Docker/Shell/Ssh 等执行器)。
- Debian 开发机/CI 节点:开发者与 Runner 所在环境,负责拉取代码、构建、测试、部署。
- 基础要求
- 建议 ≥4 GB 内存(生产环境更佳),开放 80/443 端口,域名解析就绪。
- 准备 SSH 密钥(用于 Git 操作与 Runner 注册),规划 HTTPS/证书 与 邮件通知(SMTP)。
二 部署 GitLab 平台
- 安装依赖与仓库
- 更新系统并安装基础依赖:sudo apt update && sudo apt install -y curl openssh-server ca-certificates tzdata perl
- 可选安装邮件服务:sudo apt install -y postfix(选择 Internet Site)
- 添加官方 APT 仓库并安装 GitLab CE:
- curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- sudo apt install gitlab-ce
- 核心配置与启动
- 编辑 /etc/gitlab/gitlab.rb,设置外部访问地址:external_url ‘https://your.domain.com’
- 应用配置并启动:sudo gitlab-ctl reconfigure;sudo gitlab-ctl start
- 网络与防火墙
- UFW:sudo ufw allow 80,443/tcp;sudo ufw enable
- 访问与初始化
- 浏览器访问 https://your.domain.com,设置 root 管理员密码,创建项目与用户,导入 SSH 公钥。
三 身份与代码集成
- SSH 与 Git 客户端
- 生成密钥:ssh-keygen -t ed25519 -C “you@example.com”
- 将公钥(~/.ssh/id_ed25519.pub)添加到 GitLab 用户 SSH Keys,克隆与推送使用 SSH 地址(git@your.domain.com:group/project.git)
- 开发者 IDE
- VS Code:安装 GitLens 增强提交、审阅与对比
- IntelliJ IDEA:内置 Git 集成
- Eclipse:安装 EGit 插件
- 基本协作流程
- 创建仓库 → 分支开发 → Merge Request(代码审查、讨论、流水线结果) → 合并到主干。
四 CI/CD 自动化流水线
- 安装并注册 Runner(在同一台或专用 Debian 节点)
- 安装 Runner:curl -s https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
- 安装包:sudo apt install gitlab-runner
- 注册 Runner:sudo gitlab-runner register(输入实例 URL 与项目/组 Runner 令牌,选择执行器如 docker/shell/ssh)
- 定义流水线 .gitlab-ci.yml(示例)
- 示例要点:多阶段(build/test/deploy)、使用 Docker 镜像、缓存依赖、产物上传、环境部署
- 参考片段:
- stages: [build, test, deploy]
- build_job: stage: build script: - echo “Building…” - ./build.sh
- test_job: stage: test script: - echo “Testing…” - ./test.sh
- deploy_job: stage: deploy script: - echo “Deploying…” - ./deploy.sh
- 提交并推送 .gitlab-ci.yml 后,每次推送将自动触发 Pipelines 执行构建、测试、部署。
五 安全与运维优化
- 通信与证书
- 启用 HTTPS:可使用 Let’s Encrypt 自动签发与续期(内置 Omnibus 支持),或外部 Nginx + Certbot 反向代理与证书管理
- 邮件通知
- 在 /etc/gitlab/gitlab.rb 配置 SMTP(地址、端口、账号、密码、TLS/STARTTLS),执行 sudo gitlab-ctl reconfigure 生效
- 防火墙与端口
- 性能与资源
- 建议 ≥4 GB 内存;可按资源调整 Unicorn/Sidekiq/数据库连接池 等参数
- 监控与日志
- 使用内置 Prometheus/Grafana 监控;日志位于 /var/log/gitlab,配合 logrotate 管理
- 备份与恢复
- 定期执行:sudo gitlab-backup create;恢复按官方流程导入备份。