1. 持续集成环境搭建概述在当今的软件开发流程中持续集成(CI)已经成为提升团队效率、保证代码质量的关键实践。通过将Jenkins、Maven和SVN这三个工具组合使用我们可以构建一个完整的自动化构建、测试和部署流水线。这套方案特别适合中小型团队快速搭建自己的CI环境无需投入过多基础设施成本。我曾在多个Java Web项目中实践过这套技术栈发现它最大的优势在于配置简单、资源占用低同时又能满足基本的持续集成需求。对于刚接触持续集成的团队来说这套方案的学习曲线相对平缓而且各组件都有丰富的插件生态支持。2. 环境准备与工具安装2.1 基础环境配置在开始搭建前我们需要准备以下基础环境一台Linux服务器推荐CentOS 7或Ubuntu LTSJDK 1.8或更高版本Tomcat 8.5作为应用服务器网络连接正常用于下载依赖包和插件提示生产环境建议使用专用服务器不要与其他服务混用。我在实际部署中发现内存至少需要2GB才能保证流畅运行所有组件。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 ~/.bashrc2.2.2 Tomcat部署# 下载解压Tomcat wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz tar -xzf apache-tomcat-8.5.69.tar.gz mv apache-tomcat-8.5.69 /usr/local/tomcat # 修改server.xml配置UTF-8编码 sed -i /Connector port8080/s/$/ URIEncodingUTF-8 \// /usr/local/tomcat/conf/server.xml # 启动Tomcat /usr/local/tomcat/bin/startup.sh2.2.3 Maven安装# 下载安装Maven 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 # 配置环境变量 echo export MAVEN_HOME/usr/local/maven ~/.bashrc echo export PATH\$PATH:\$MAVEN_HOME/bin ~/.bashrc source ~/.bashrc # 验证安装 mvn -v # 配置阿里云镜像加速依赖下载 mkdir -p ~/.m2 cat ~/.m2/settings.xml EOF settings mirrors mirror idaliyunmaven/id name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url mirrorOfcentral/mirrorOf /mirror /mirrors /settings EOF3. SVN服务器搭建与配置3.1 SVN服务安装# 安装SVN服务器 sudo yum install -y subversion # 创建版本库目录 sudo mkdir -p /var/svn/repos sudo svnadmin create /var/svn/repos/myproject # 修改权限 sudo chown -R apache:apache /var/svn/repos3.2 配置用户认证编辑/var/svn/repos/myproject/conf/svnserve.conf[general] anon-access none auth-access write password-db passwd authz-db authz realm My Project Repository编辑/var/svn/repos/myproject/conf/passwd添加用户[users] dev1 password123 dev2 password4563.3 配置访问权限编辑/var/svn/repos/myproject/conf/authz[groups] developers dev1,dev2 [/] developers rw * 3.4 启动SVN服务svnserve -d -r /var/svn/repos4. Jenkins安装与初始化配置4.1 Jenkins部署# 下载Jenkins WAR包 wget https://get.jenkins.io/war-stable/2.346.3/jenkins.war # 部署到Tomcat cp jenkins.war /usr/local/tomcat/webapps/ # 访问Jenkins # 浏览器打开 http://服务器IP:8080/jenkins4.2 初始解锁首次访问时需要解锁Jenkins# 查看初始管理员密码 cat ~/.jenkins/secrets/initialAdminPassword4.3 插件安装建议在初始化向导中选择安装推荐插件创建管理员账户完成基础配置经验国内网络环境下插件安装可能失败可以后续在Manage Jenkins Manage Plugins中单独安装。我通常会先配置清华镜像源加速下载。4.4 必要插件安装通过Manage Jenkins Manage Plugins安装以下关键插件Subversion PluginSVN支持Maven Integration pluginDeploy to container PluginLocale Plugin中文支持5. 全局工具配置5.1 JDK配置进入Manage Jenkins Global Tool Configuration在JDK部分添加安装名称jdk11JAVA_HOME/usr/lib/jvm/java-11-openjdk根据实际路径调整5.2 Maven配置在Maven部分添加安装名称maven3MAVEN_HOME/usr/local/maven5.3 系统环境配置在Manage Jenkins Configure System中设置系统管理员邮箱配置Jenkins URL如http://your-server:8080/jenkins在Locale设置zh_CN可切换为中文界面需先安装Locale插件6. 创建Maven项目与自动化构建6.1 新建Maven项目点击新建Item输入项目名称如my-webapp选择Maven项目点击OK进入配置6.2 源码管理配置在Source Code Management选择Subversion输入Repository URL如svn://your-server/myproject/trunk添加认证凭据SVN用户名密码6.3 构建触发器配置在Build Triggers勾选Poll SCM设置日程表如H/5 * * * *表示每5分钟检查一次变更或配置Build when a change is pushed to SVN需设置SVN钩子6.4 构建配置在Build部分Root POMpom.xml默认Goals and optionsclean package在Post Steps可添加Execute shell用于自定义构建后操作6.5 部署配置在Post-build Actions添加Deploy war/ear to a container配置WAR/EAR filestarget/*.war根据实际构建产物路径调整Context path/myapp部署后的应用上下文路径Containers选择Tomcat 8.x并配置管理凭据7. SVN钩子与自动触发构建7.1 创建post-commit钩子# 进入SVN钩子目录 cd /var/svn/repos/myproject/hooks # 创建post-commit脚本 cat post-commit EOF #!/bin/sh REPOS$1 REV$2 # Jenkins构建URL JENKINS_URLhttp://localhost:8080/jenkins/job/my-webapp/build?tokenMYTOKEN # 获取Jenkins CrumbCSRF防护 CRUMB$(curl -s -u admin:password $JENKINS_URL/crumbIssuer/api/xml?xpathconcat(//crumbRequestField,\:\,//crumb)) # 触发构建 curl -X POST -u admin:password -H $CRUMB $JENKINS_URL EOF # 赋予执行权限 chmod x post-commit7.2 Jenkins安全配置在Manage Jenkins Configure Global Security确保Prevent Cross Site Request Forgery exploits已启用在项目配置中设置身份验证令牌与钩子脚本中的TOKEN一致8. 常见问题与解决方案8.1 构建失败排查依赖下载失败检查Maven镜像配置确认网络连通性SVN认证失败确认凭据正确检查SVN服务器日志权限不足确保Jenkins用户有足够权限访问SVN和部署目录8.2 性能优化建议调整Jenkins JVM参数# 在Tomcat的setenv.sh中添加 export JAVA_OPTS-Xms512m -Xmx1024m -XX:MaxPermSize256m定期清理构建历史在项目配置中设置Discard old builds配置保留构建的天数或数量上限8.3 中文乱码问题确保所有组件使用UTF-8编码Tomcat的server.xml配置URIEncodingUTF-8Jenkins系统编码设置为UTF-8SVN客户端配置使用UTF-89. 进阶配置与扩展9.1 多环境部署可以通过添加多个Deploy to container步骤实现测试环境自动部署每次构建预生产环境手动触发部署生产环境审批后部署9.2 邮件通知安装Email Extension Plugin配置SMTP服务器在项目配置中添加Editable Email Notification后置操作9.3 构建矩阵对于多模块项目创建父POM项目为每个子模块创建独立的构建任务使用Build other projects触发下游构建在实际项目中这套环境已经帮助我们将代码提交到部署的时间从原来的几小时缩短到几分钟。特别是在团队协作时能够快速发现集成问题大大减少了在我机器上能运行的情况。