Jenkins+Maven+SVN持续集成环境搭建指南
·
1. 持续集成环境搭建概述
在当今的软件开发流程中,持续集成(CI)已成为提升团队效率、保证代码质量的关键实践。通过将Jenkins、Maven和SVN这三个工具组合使用,我们可以构建一个稳定可靠的自动化构建和部署流水线。这套方案特别适合中小型团队快速搭建自己的CI环境,无需复杂的基础设施投入。
我曾在多个Java Web项目中实践过这套技术栈,发现它最大的优势在于配置简单、资源占用低,同时又能满足基本的持续集成需求。对于刚接触持续集成的团队来说,这套方案的学习曲线相对平缓,且社区资源丰富,遇到问题容易找到解决方案。
2. 环境准备与工具安装
2.1 基础环境配置
在开始搭建前,我们需要准备以下基础环境:
- 一台Linux服务器(推荐CentOS 7+或Ubuntu 18.04+)
- JDK 1.8或以上版本
- Tomcat 8.5+作为应用服务器
- 网络连接正常(用于下载依赖包)
提示:生产环境建议使用专用服务器,不要与其他关键服务混用同一台机器。
2.2 各组件安装步骤
2.2.1 JDK安装与配置
# 下载JDK(以OpenJDK 11为例)
sudo yum install -y java-11-openjdk-devel
# 验证安装
java -version
javac -version
# 设置JAVA_HOME环境变量
echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" >> ~/.bashrc
source ~/.bashrc
2.2.2 Tomcat安装与配置
# 下载解压Tomcat
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
tar -xzf apache-tomcat-9.0.65.tar.gz
mv apache-tomcat-9.0.65 /usr/local/tomcat
# 配置管理用户
vi /usr/local/tomcat/conf/tomcat-users.xml
在tomcat-users.xml中添加:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin123" roles="manager-gui,manager-script"/>
2.2.3 Maven安装与配置
# 下载安装Maven
wget https://downloads.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
tar -xzf apache-maven-3.8.6-bin.tar.gz
mv apache-maven-3.8.6 /usr/local/maven
# 配置环境变量
echo "export MAVEN_HOME=/usr/local/maven" >> ~/.bashrc
echo "export PATH=\$PATH:\$MAVEN_HOME/bin" >> ~/.bashrc
source ~/.bashrc
# 验证安装
mvn -v
# 配置阿里云镜像加速
vi /usr/local/maven/conf/settings.xml
在mirrors节点下添加:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
2.2.4 SVN服务器安装
# 安装SVN
sudo yum install -y subversion
# 创建版本库目录
sudo mkdir -p /var/svn/repos
sudo svnadmin create /var/svn/repos/myproject
# 配置访问权限
vi /var/svn/repos/myproject/conf/svnserve.conf
修改以下配置:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
3. Jenkins核心配置
3.1 Jenkins安装与初始化
将Jenkins部署到Tomcat:
# 下载Jenkins WAR包
wget https://get.jenkins.io/war-stable/2.346.3/jenkins.war
cp jenkins.war /usr/local/tomcat/webapps/
# 启动Tomcat
/usr/local/tomcat/bin/startup.sh
访问Jenkins控制台(假设服务器IP为192.168.1.100):
http://192.168.1.100:8080/jenkins
初始化步骤:
- 从/root/.jenkins/secrets/initialAdminPassword获取管理员密码
- 选择"安装推荐插件"
- 创建管理员账户
- 完成基础配置
3.2 系统全局配置
3.2.1 工具配置
进入"系统管理"→"全局工具配置":
- JDK:配置JAVA_HOME路径
- Maven:配置MAVEN_HOME路径
- Git:如不使用可忽略
3.2.2 插件安装
必须安装的核心插件:
- Maven Integration
- Subversion
- Deploy to container
- Locale(中文支持)
3.3 安全配置建议
生产环境安全配置要点:
- 启用"矩阵授权策略"
- 禁用匿名用户读取权限
- 配置项目级权限
- 定期备份JENKINS_HOME目录
4. 项目配置与自动化构建
4.1 创建Maven项目
- 点击"新建任务"→选择"构建一个Maven项目"
- 输入项目名称(如"MyWebApp")
- 配置SVN仓库地址:svn://192.168.1.100/svn/myproject/trunk
4.2 构建触发器配置
推荐配置方案:
- 轮询SCM:H/5 * * * * (每5分钟检查一次代码变更)
- 远程触发:添加身份验证token
- SVN钩子脚本触发(后文详述)
4.3 构建环境配置
关键配置项:
- 指定JDK版本
- 配置Maven构建目标和选项(如clean package)
- 设置构建超时时间(建议30分钟)
4.4 构建后操作
部署到Tomcat的配置示例:
- 选择"Deploy war/ear to a container"
- 指定WAR文件路径:target/*.war
- 配置Tomcat管理凭据
- 设置上下文路径(如/myapp)
5. SVN钩子与自动化触发
5.1 钩子脚本配置
创建post-commit钩子实现提交后自动构建:
vi /var/svn/repos/myproject/hooks/post-commit
内容示例:
#!/bin/sh
REPOS="$1"
REV="$2"
# Jenkins构建URL
JENKINS_URL="http://192.168.1.100:8080/jenkins/job/MyWebApp/build?token=MY_TOKEN"
# 获取Jenkins Crumb(CSRF防护)
CRUMB=$(curl -s 'http://192.168.1.100:8080/jenkins/crumbIssuer/api/json' \
--user admin:admin123 | grep -o '"crumb":"[^"]*' | cut -d'"' -f4)
# 触发构建
curl -X POST -v -u admin:admin123 \
-H "Jenkins-Crumb:$CRUMB" \
"$JENKINS_URL"
设置脚本可执行权限:
chmod +x /var/svn/repos/myproject/hooks/post-commit
5.2 常见问题排查
-
钩子脚本不执行:
- 检查脚本权限(必须755)
- 检查SVN服务用户对脚本的读取权限
- 查看/var/log/svnserve.log日志
-
Jenkins未触发构建:
- 检查网络连通性
- 验证token是否正确
- 查看Jenkins系统日志
-
构建结果与预期不符:
- 检查工作空间代码是否为最新
- 在构建命令中添加-U参数强制更新依赖:mvn clean package -U
6. 高级配置与优化建议
6.1 构建性能优化
- 配置Maven本地仓库镜像
- 设置Jenkins的JVM参数:
vi /usr/local/tomcat/bin/setenv.sh
添加:
export JAVA_OPTS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m"
- 使用增量构建策略
6.2 邮件通知配置
- 安装Email Extension插件
- 配置SMTP服务器
- 设置构建失败通知规则
6.3 多环境部署
通过参数化构建实现:
- 在项目中添加"构建参数"
- 根据参数值选择不同部署目标
- 在构建脚本中使用条件判断
7. 维护与监控
7.1 日常维护建议
-
定期清理工作空间:
- 配置"Discard old builds"策略
- 设置保留构建的天数和数量
-
监控磁盘空间:
- 特别关注JENKINS_HOME目录大小
- 设置构建产物自动清理
-
备份策略:
- 定期备份JENKINS_HOME目录
- 使用ThinBackup插件
7.2 监控指标
关键监控项:
- 构建成功率
- 构建平均时长
- 系统资源使用率
- 插件更新情况
7.3 故障恢复
常见故障处理:
-
Jenkins无法启动:
- 检查端口冲突
- 验证JVM内存设置
- 查看catalina.out日志
-
插件冲突:
- 回滚到之前版本
- 手动删除有问题的插件
-
构建队列堵塞:
- 增加执行器数量
- 优化构建脚本执行时间
更多推荐



所有评论(0)