集成思路与总体架构
在 debian 上,通常采用“平台 + runner”的方式与 gitlab 集成:在 debian 服务器上部署 gitlab(社区版 ce 或企业版 ee),通过 omnibus 管理组件运行;在相同或不同 debian 主机上安装 gitlab runner 并注册到 gitlab 实例,执行 ci/cd 作业;结合 nginx/letsencrypt 提供 https 访问,并用 ufw 放通 80/443 端口,形成从代码托管到自动化交付的一体化链路。
安装与基础配置
- 准备环境并更新系统:sudo apt update && sudo apt upgrade -y;安装依赖:sudo apt install -y curl openssh-server ca-certificates postfix(postfix 用于邮件通知)。
- 添加 gitlab 官方仓库并安装:curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash,随后 sudo apt install -y gitlab-ce;安装时或安装后设置 external_url(例如 http://your_server_ip 或 https://your_domain)。
- 使配置生效:sudo gitlab-ctl reconfigure;常用管理:sudo gitlab-ctl start|restart|status|tail。
- 防火墙放通:sudo ufw allow 80/tcp 与 443/tcp,然后 sudo ufw reload。
- 访问 http://your_server_ip 或域名完成管理员初始化设置。
ci cd 集成与自动化
- 安装 gitlab runner(debian 包):curl -l https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash,随后 sudo apt install -y gitlab-ci-multi-runner;或采用签名源方式导入 gpg 并 apt 安装。
- 注册 runner:sudo gitlab-runner register,输入 gitlab 实例 url 与项目/实例注册 token,选择执行器(如 shell、docker)。
- 启动并设置开机自启:sudo systemctl enable --now gitlab-runner。
- 在仓库根目录创建 .gitlab-ci.yml 定义 stages(如 build、test、deploy)与任务,推送代码后自动触发流水线。
安全与网络集成
- https 与证书:启用 letsencrypt 自动证书,在 /etc/gitlab/gitlab.rb 中设置 letsencrypt[‘enable’] = true 并执行 sudo gitlab-ctl reconfigure;或使用 certbot --nginx -d yourdomain.com 获取并配置证书。
- 反向代理(可选):如需外部 nginx 代理,安装 nginx 并配置 proxy_pass 与 x-forwarded-* 头,确保 gitlab 正确识别协议与主机。
- 防火墙与端口:确保 ufw/iptables 放通 80/443,避免 runner 与 webhook 通信受阻。
- 访问控制:在 gitlab 用户设置中添加 ssh 公钥用于 git 克隆/推送;按需配置项目与组成员权限。
运维与扩展建议
- 资源与兼容性:debian 与 gitlab 兼容性良好;建议至少 2–8gb 内存 与 20gb 磁盘(生产环境更偏向 8gb+),以保证页面响应与 ci 任务稳定。
- 自动化部署:使用 ansible 编排多机部署(系统更新、依赖、仓库、gitlab/runner 安装与注册),提升一致性与可重复性。
- 监控与可观测性:结合 prometheus + grafana 监控 gitlab 与 runner 指标,设置流水线失败与资源告警。
- 容器与镜像:对接私有镜像仓库(如 harbor),在 ci 中构建并推送镜像,实现云原生交付闭环。