Jenkins+Maven+SVN持续集成环境搭建实战
·
1. 持续集成环境搭建概述
在软件开发领域,持续集成(CI)已经成为现代工程实践的标配。通过将代码变更频繁地集成到共享主干,团队能够更早地发现和解决问题。Jenkins作为最流行的开源CI工具,配合Maven构建工具和SVN版本控制系统,可以构建一套完整的自动化构建、测试和部署流水线。
这套环境特别适合Java Web项目的持续交付场景。我曾在一个电商项目中实施这套方案,将原本需要手动执行的构建部署流程完全自动化,团队代码集成频率从每周一次提升到每天多次,线上问题减少了60%以上。
2. 环境准备与安装
2.1 基础环境配置
在开始之前,需要确保系统满足以下要求:
- 操作系统:CentOS 7.x或Ubuntu 18.04+
- JDK 1.8或更高版本
- 至少4GB内存和20GB磁盘空间
提示:生产环境建议使用专用服务器,不要与其他服务混用。我曾遇到过因内存不足导致构建失败的情况,后来单独配置了8GB内存的CI服务器。
安装JDK:
# CentOS
sudo yum install -y java-1.8.0-openjdk-devel
# Ubuntu
sudo apt-get install -y openjdk-8-jdk
验证安装:
java -version
2.2 Tomcat安装与配置
Jenkins可以独立运行,但通过Tomcat部署更便于管理:
- 下载Tomcat 9:
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
tar -xzf apache-tomcat-9.0.54.tar.gz
mv apache-tomcat-9.0.54 /usr/local/tomcat
- 配置Tomcat用户: 编辑
/usr/local/tomcat/conf/tomcat-users.xml:
<role rolename="manager-gui"/>
<user username="admin" password="admin123" roles="manager-gui"/>
- 启动Tomcat:
/usr/local/tomcat/bin/startup.sh
2.3 Maven安装与配置
- 下载Maven 3.6+:
wget https://dlcdn.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
- 配置环境变量: 编辑
/etc/profile:
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
- 配置阿里云镜像: 编辑
/usr/local/maven/conf/settings.xml:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
2.4 SVN服务器搭建
- 安装Subversion:
# CentOS
sudo yum install -y subversion
# Ubuntu
sudo apt-get install -y subversion
- 创建仓库:
sudo mkdir -p /var/svn/repos
sudo svnadmin create /var/svn/repos/project
- 配置权限: 编辑
/var/svn/repos/project/conf/svnserve.conf:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
编辑 passwd 文件添加用户:
[users]
dev1 = password1
dev2 = password2
3. Jenkins核心配置
3.1 Jenkins安装与初始化
- 部署Jenkins WAR包:
wget https://get.jenkins.io/war-stable/2.346.3/jenkins.war
cp jenkins.war /usr/local/tomcat/webapps/
- 访问Jenkins:
http://服务器IP:8080/jenkins
- 获取初始密码:
cat ~/.jenkins/secrets/initialAdminPassword
- 安装推荐插件: 选择"Install suggested plugins",等待安装完成。
注意:国内服务器可能会遇到插件下载慢的问题,可以尝试更换为清华镜像源: 编辑
/var/lib/jenkins/hudson.model.UpdateCenter.xml:<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
3.2 系统全局配置
- 配置JDK和Maven:
- 进入"Manage Jenkins" → "Global Tool Configuration"
- 添加JDK安装路径:
/usr/lib/jvm/java-1.8.0-openjdk - 添加Maven安装路径:
/usr/local/maven
- 配置系统时区:
- 安装"Locale"插件
- 在系统设置中将Locale设置为
zh_CN - 时区设置为
Asia/Shanghai
- 配置邮件通知:
- 进入"Manage Jenkins" → "Configure System"
- 设置SMTP服务器和发件人邮箱
- 测试邮件发送
4. 项目配置与自动化构建
4.1 创建Maven项目
- 新建Item → 选择"Maven项目"
- 输入项目名称,如"web-demo"
- 配置SVN仓库地址:
svn://服务器IP/project/trunk
- 添加SVN认证凭据
4.2 构建触发器配置
- 轮询SCM:
H/5 * * * *
表示每5分钟检查一次SVN变更
- 远程触发构建:
- 勾选"Trigger builds remotely"
- 设置Token,如"BUILD_TOKEN_123"
- 触发URL:
http://服务器IP:8080/jenkins/job/web-demo/build?token=BUILD_TOKEN_123
4.3 构建后操作
- 部署到Tomcat:
- 安装"Deploy to container"插件
- 在"Post-build Actions"中添加"Deploy war/ear to a container"
- 配置Tomcat管理凭据
- 设置Context path为
/webapp
- 邮件通知:
- 添加"Editable Email Notification"
- 配置成功/失败的邮件模板
5. SVN钩子自动触发
5.1 配置post-commit钩子
编辑 /var/svn/repos/project/hooks/post-commit :
#!/bin/sh
curl -X POST -u admin:admin123 \
"http://localhost:8080/jenkins/job/web-demo/build?token=BUILD_TOKEN_123"
设置可执行权限:
chmod +x /var/svn/repos/project/hooks/post-commit
5.2 测试自动化流程
- 本地提交代码到SVN
- 观察Jenkins是否自动触发构建
- 检查Tomcat的webapps目录是否更新
- 访问应用验证功能
常见问题:如果构建没有触发,检查:
- post-commit脚本是否有执行权限
- Jenkins服务器是否能访问SVN服务器
- 防火墙是否开放了8080端口
6. 高级配置与优化
6.1 构建节点扩展
- 添加Linux从节点:
- 进入"Manage Jenkins" → "Manage Nodes"
- 新建节点,选择"Permanent Agent"
- 配置从节点IP和认证方式
- 启动agent程序
- 配置构建标签:
- 为不同节点设置标签,如"linux","docker"
- 在项目配置中限制构建节点
6.2 构建流水线优化
- 多阶段构建:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
stage('Deploy') {
steps {
sh 'cp target/*.war /usr/local/tomcat/webapps/'
}
}
}
}
- 并行构建:
stage('Parallel Build') {
parallel {
stage('Unit Test') {
steps {
sh 'mvn test'
}
}
stage('Integration Test') {
steps {
sh 'mvn verify -Pintegration'
}
}
}
}
6.3 安全加固
- 启用RBAC:
- 安装"Role-based Authorization Strategy"插件
- 创建角色和分配权限
- 限制开发人员只能查看自己的项目
- 定期备份:
- 安装"ThinBackup"插件
- 配置自动备份计划
- 设置备份保留策略
7. 常见问题排查
7.1 构建失败分析
- 依赖下载失败:
- 检查Maven镜像配置
- 清理本地仓库后重试
mvn dependency:purge-local-repository
- 内存不足:
- 增加Jenkins JVM参数:
JAVA_OPTS="-Xms512m -Xmx2048m"
- 权限问题:
- 检查Tomcat manager应用权限
- 验证SVN读写权限
7.2 性能优化建议
- 构建缓存:
- 配置Maven离线模式
- 重用本地仓库
- 构建调度:
- 避免高峰期同时构建多个项目
- 设置构建优先级
- 日志管理:
- 定期清理构建历史
- 配置日志轮转
这套Jenkins+Maven+SVN持续集成环境在实际项目中表现出色,特别适合中小型团队的Java Web项目。通过自动化构建、测试和部署,团队可以更专注于代码质量而非发布流程。我在多个项目中采用这种架构,显著提高了交付效率和质量。
更多推荐



所有评论(0)