软件开发中,“效率"与"稳定"是永恒的追求。瀑布模型的线性流程早已难以适配快速变化的市场需求,而敏捷开发的普及让持续集成(CI) 成为团队协作的核心支撑——它能让开发人员频繁集成代码,通过自动化测试提前暴露问题,避免上线前的"集成灾难”。
今天,我们就来实战搭建一套基于 Jenkins+GitLab 的企业级持续集成与代码管理环境。从核心概念解析到环境部署,再到项目实战与集成配置,全程手把手带你搞定,让团队协作效率翻倍!
一、先搞懂核心概念:为什么需要Jenkins+GitLab?
在动手前,我们先理清几个关键概念,避免盲目操作~
1. 软件开发的"前世今生"
- 软件开发生命周期(SDLC):一套完整的开发流程,包括需求分析、设计、实现、测试、进化(维护优化)5个核心阶段。
- 瀑布模型:早期的线性开发模型,优点是简单易懂,但缺点致命——阶段固定、文档冗余、用户直到末期才能看到成果,完全无法应对需求变更。
- 敏捷开发:现在主流的开发模式,核心是"迭代+增量"——把大项目拆成多个小周期,每个周期交付完整功能,既能早期交付、降低风险,又能快速响应市场需求。
2. 持续集成(CI):敏捷开发的"核心引擎"
持续集成的本质是频繁将代码集成到主干,核心要求是:代码集成前必须通过自动化测试。
完整流程:
而实现这套流程的核心工具组合就是:
- GitLab:负责代码的集中管理、团队协作(权限控制、合并请求等);
- Jenkins:负责自动化构建、测试、部署,是持续集成的"执行器"。
二、实战部署GitLab:代码管理的"中央仓库"
GitLab是开源免费的代码仓库管理工具,支持部署到自己的服务器,安全性和可控性拉满。下面开始实操部署(基于CentOS 7/8)。
1. 环境准备
- 虚拟机/服务器:至少4G内存(GitLab对内存要求较高)
- 操作系统:CentOS 7/8
- 关闭防火墙和核心防护(避免端口占用)
2. 部署步骤(全程命令行实操)
(1)基础环境配置
# 关闭防火墙并设置开机不自启
systemctl disable firewalld –now
# 关闭核心防护
setenforce 0
# 安装依赖环境(SSH、邮件支持等)
yum -y install policycoreutils openssh-server openssh-clients postfix
# 启动SSH服务并设置开机自启
systemctl enable sshd && systemctl start sshd
# 启动postfix(支持GitLab发信功能,比如密码重置邮件)
systemctl enable postfix && systemctl start postfix
(2)安装GitLab
上传GitLab安装包(推荐版本:gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm),执行安装命令:
yum install -y gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
(3)修改GitLab配置
编辑配置文件,设置访问地址和端口:
vim /etc/gitlab/gitlab.rb
找到以下两行并修改(根据自己的服务器IP调整):
external_url 'http://192.168.10.23:82' # 访问地址+端口
nginx['listen_port'] = 82 # 监听端口
(4)重载配置并重启GitLab
gitlab-ctl reconfigure # 重载配置(耐心等待,可能需要几分钟)
gitlab-ctl restart # 重启服务
(5)验证部署
打开浏览器,访问 http://192.168.10.23:82,会看到设置管理员(root)密码的页面,设置密码后即可登录(默认用户名root)。
三、GitLab项目管理实战:团队协作从这里开始
GitLab的核心价值是团队协作与代码管控,我们需要创建群组、用户、项目,并配置权限,让团队成员有序协作。
1. 核心概念
- 群组(Group):对应开发团队(比如"devops团队");
- 项目(Project):对应具体的软件项目(比如"myweb网站");
- 成员(Member):团队中的用户账户,通过权限控制访问范围。
2. 实操步骤
(1)创建开发群组
- 群组路径:devops(访问URL中显示);
- 群组名称:devops(显示名称);
- 可见等级:公开(根据项目需求选择,私有/内部/公开);
(2)创建用户账户
(3)创建项目
- 项目路径:选择devops群组(归属团队);
- 项目名称:myweb(项目名称);
- 可见等级:公开;
(4)分配项目权限
权限控制是团队协作的关键,GitLab提供5种角色(从低到高):Guest→Reporter→Developer→Maintainer→Owner。
方式1:直接添加成员到项目
方式2:通过群组添加成员
四、Git代码管理实操:开发人员的日常操作
项目创建完成后,开发人员需要通过Git提交代码、拉取更新,这里重点讲基础操作和SSH免密配置(避免每次提交都输密码)。
1. 基础操作:提交代码到GitLab
(1)用户登录与配置
(2)克隆项目到本地
# 进入本地目录(比如/opt)
cd /opt
# 克隆GitLab项目(HTTP方式)
git clone http://192.168.10.23/devops/myweb.git
(3)初始化项目并提交代码
# 进入项目目录
cd myweb
# 创建README.md文件
touch README.md
# 添加文件到暂存区
git add README.md
# 配置Git用户信息(与GitLab账户一致)
git config –global user.email "zhangsan@gitlab.com"
git config –global user.name "zhangsan"
# 提交代码(备注提交信息)
git commit -m "add README文件"
# 推送到GitLab主干分支
git push -u origin master
(4)推送现有本地项目
如果本地已有项目,需关联GitLab仓库:
cd ~/本地项目目录
# 关联GitLab远程仓库
git remote add origin http://192.168.10.23/devops/myweb.git
# 推送所有代码和标签
git push -u origin –all
git push -u origin –tags
2. SSH免密配置:提升开发效率
HTTP方式每次推送都需输密码,SSH方式可免密登录,推荐配置:
(1)生成SSH密钥对
# 生成RSA密钥(邮箱为GitLab账户邮箱)
ssh-keygen -t rsa -C "zhangsan@gitlab.com" -b 4096
# 一路回车,使用默认路径和空密码
(2)配置GitLab公钥
(3)切换SSH方式推送代码
# 查看当前远程仓库方式(默认是HTTP)
git remote show origin
# 删除HTTP方式
git remote remove origin
# 添加SSH方式(注意路径格式:git@IP:群组/项目.git)
git remote add origin git@192.168.10.23:devops/myweb.git
# 验证并测试推送
echo '<h3>测试SSH推送</h3>' >> index.html
git add index.html
git commit -m "测试SSH免密推送"
git push # 无需输密码,直接推送成功
五、Jenkins与GitLab集成:打通持续集成第一步
Jenkins是持续集成的核心工具,负责拉取GitLab代码、自动化构建、测试、部署。下面我们完成Jenkins与GitLab的集成配置。
1. 环境规划
| 代码托管服务器 | 192.168.10.23 | GitLab-12.4.2 |
| 持续集成服务器 | 192.168.10.13 | Jenkins、JDK、Maven、Git |
2. 核心集成流程
3. Jenkins凭证配置(关键步骤)
Jenkins需要通过凭证访问GitLab,支持两种方式:
(1)用户密码凭证(简单易配置)
- 进入Jenkins→【凭证】→【系统】→【全局凭证】→【添加凭证】;
- 选择"Username with password"类型;
- 输入GitLab用户名(zhangsan)、密码,描述填写"gitlab-auth-password";
- 保存即可。
(2)SSH密钥凭证(更安全)
- 选择"SSH Username with private key"类型;
- 用户名填写GitLab用户名(zhangsan);
- 粘贴私钥内容(cat ~/.ssh/id_rsa 查看);
- 保存。
4. 测试集成是否成功
- 选择"Git";
- 仓库URL填写GitLab项目地址(HTTP或SSH均可,需与凭证类型匹配);
- 选择对应的凭证;
六、总结与展望
通过本文的实战操作,我们已经完成了一套完整的Jenkins+GitLab持续集成与代码管理环境:
- 理论层面:理解了SDLC、敏捷开发、持续集成的核心概念;
- 实操层面:部署了GitLab服务器,创建了团队群组、用户、项目,配置了权限;
- 开发层面:掌握了Git代码提交、SSH免密配置的日常操作;
- 集成层面:完成了Jenkins与GitLab的凭证对接,为自动化流程打下基础。
这套环境的价值在于:




