在 Debian 上用 GitLab 协作 Debian 项目的完整实践
一 环境与权限准备
- 服务器与基础依赖
- 更新系统并安装依赖:sudo apt update && sudo apt install -y curl openssh-server ca-certificates tzdata perl
- 添加 GitLab 仓库并安装 CE 版:curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- 安装时设置外部地址:sudo EXTERNAL_URL=“https://gitlab.example.com” apt-get install -y gitlab-ce
- 重新配置并启动:sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
- 防火墙放行:sudo ufw allow 80,443/tcp && sudo ufw reload
- 客户端与账号
- 本地安装 Git:sudo apt install -y git
- 配置 Git 全局信息:git config --global user.name “Your Name”,git config --global user.email “you@example.com”
- 生成并添加 SSH 公钥到 GitLab(Settings → SSH Keys),便于免密推送与拉取
- 团队与权限
- 创建项目(Public/Private/Internal),邀请成员并分配角色(如 Developer/Maintainer/Owner)
- 建议开启 Two-Factor Authentication,并对 Maintainer/Owner 权限进行最小授权
二 仓库与分支策略
- 仓库初始化与导入
- 新建空项目或导入现有代码;Debian 打包仓库建议使用 Git branches 管理不同版本线(如 master/develop 或 debian/sid、debian/bookworm)
- 克隆仓库:git clone git@gitlab.example.com:group/pkgname.git
- 分支与保护
- 保护关键分支(如 master 或发行分支),仅允许通过 Merge Request(MR) 更新,开启 Code Owner 与 Required Approvals
- 采用 Feature Branch + MR 工作流:从目标分支拉出功能/修复分支,完成后发起 MR,经评审与 CI 通过后合并
- 提交与审查
- 小步快跑、频繁提交;提交信息遵循规范(如说明意图、变更范围、影响)
- 在 MR 中进行 代码审查、讨论与 CI 结果校验,必要时在本地 rebase 保持线性历史
三 CI/CD 与 Debian 打包流水线
四 协作流程与日常操作清单
- 日常开发
- 同步上游:git fetch --all --prune && git rebase origin/master
- 功能开发:git checkout -b feature/x → 提交 → git push -u origin feature/x
- 发起 MR:在 GitLab 创建 MR,指派 Reviewer,关联 Issue/Milestone,在 MR 描述中说明变更动机与测试情况
- 代码审查与合并
- 关注 MR 讨论、流水线结果、变更差异;必要时本地 rebase 后再推送
- 通过审查后由 Maintainer 合并,删除已合并分支
- 问题跟踪与里程碑
- 使用 Issues 管理缺陷与任务,配合 Labels/Milestones/看板 进行计划与进度跟踪
- 在 MR 中通过 Closes #123 自动关闭关联 Issue
五 运维与安全加固
- 备份与恢复
- 定期备份:sudo gitlab-backup create(默认备份到 /var/opt/gitlab/backups)
- 恢复时确保版本一致,按官方流程执行停止服务、恢复数据、重启等步骤
- 安全与可用性
- 启用 HTTPS/TLS(可用 Let’s Encrypt),强制 2FA,限制 Root 登录与对外暴露面
- 定期 更新 GitLab 获取安全补丁;监控 服务状态与资源使用,必要时扩容
- 如需使用自有 Nginx,可在 /etc/gitlab/gitlab.rb 中设置 nginx[‘enable’] = false 并配置反向代理后执行 gitlab-ctl reconfigure