xampp + jenkins 在 windows 本地做轻量级 ci 可行,但需避开 xampp 默认端口(80/3306)冲突,正确配置 svn 认证、ssl 证书、代理及 ant/jmeter 路径,否则易出现绑定失败、认证异常或路径错误。

直接说结论:XAMPP + Jenkins 在 Windows 本地做轻量级 CI 是可行的,但必须绕开 XAMPP 自带的 Apache 和 MySQL 对 Jenkins 的干扰,尤其不能让 Jenkins 运行在 80 或 3306 端口上——否则会冲突、启动失败、日志报错 Address already in use。
为什么 Jenkins 不能和 XAMPP 共用默认端口
XAMPP 默认占用了 80(Apache)、443(HTTPS)、3306(MySQL)、21(FTP)等端口。Jenkins 启动时默认尝试绑定 8080,看似不冲突,但很多用户为图方便手动改成了 80,结果 Jenkins 就起不来,控制台只显示 java.net.BindException: Address already in use。
更隐蔽的问题是:XAMPP 的 mysql 服务若已运行,而 Jenkins 插件(如 Database Plugin 或自定义构建脚本)又尝试连接本地 3306,可能因权限或 socket 路径不一致导致连接超时,错误信息常为 Communications link failure 或空连接。
- 务必检查端口占用:
netstat -ano | findstr :8080(确认 Jenkins 端口未被其他 Java 进程占) - Jenkins 启动命令中显式指定端口:
java -jar jenkins.war --httpPort=8081 - 如果要用反向代理(比如用 XAMPP 的 Apache 代理 Jenkins),必须配置
ProxyPass和ProxyPassReverse,且 Jenkins 系统配置里要填对JENKINS_URL(如http://localhost/jenkins/),否则登录跳转、Webhook 回调、静态资源路径全乱
SVN 拉取失败常见于 XAMPP 环境的三个原因
在 XAMPP 环境下配 SVN,不是插件装了就能跑通。Jenkins 用的是 Java 实现的 SVNKit,它不依赖系统 svn 命令,但会受 Windows 用户权限、SSL 证书、代理设置三重影响。
典型现象:Job 配置好 SVN URL 和凭证后,点击 “Check now” 报错 org.tmatesoft.svn.core.SVNAuthenticationException: svn: E170001: Authentication required,即使密码正确也反复弹窗。
- 原因一:Jenkins 服务以
Local System账户运行(Windows 服务默认),无法读取你当前用户保存的 SVN 凭据(存于%APPDATA%\Subversion\auth\)。解决方法:改用 Windows 任务计划程序启动 Jenkins,或手动指定 JVM 参数-Dsvnkit.http.sslProtocols=TLSv1.2 - 原因二:SVN 服务器用的是自签名证书,Jenkins 会拒绝握手。需在 Jenkins 启动前导入证书到 Java truststore:
keytool -import -alias svn-server -file server.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts" - 原因三:公司网络走 HTTP 代理,但 Jenkins 没配。进
Manage Jenkins → Configuration → Advanced → Proxy填写Host、Port、Username、Password(如有),否则连svn://或https://都超时
用 Ant + build.xml 执行 JMeter 脚本时路径容易出错
你在 XAMPP 下跑 Jenkins,又用 Ant 调 build.xml 执行 JMeter 测试,最常卡在路径解析上——因为 Ant 默认工作目录是 Jenkins Job 的 workspace,而 JMeter 的 jmeter.properties、CSV 数据文件、HTML 报告输出路径全是相对路径,稍有不慎就报 Could not read properties file 或 java.lang.IllegalArgumentException: Results file does not exist。
- 在
build.xml里显式指定绝对路径:<property name="jmeter.home" value="C:/jmeter/apache-jmeter-5.6"></property>,别用../jmeter - JMeter 的 CSV 数据文件路径,不要写成
data/testdata.csv,而应写成${basedir}/data/testdata.csv,并在 Jenkins Job 的 “Build Environment” 中勾选 “Set Jenkins environment variables” - HTML 报告生成后,Jenkins 的
Publish HTML Reports插件要求路径是相对于 workspace 的子目录,比如report/html,对应磁盘路径就是C:/xampp/jenkins/workspace/your-job/report/html;若 Ant 输出到了C:/temp/report,插件就找不到
真正麻烦的不是配置步骤多,而是 Windows 权限模型、Java 进程用户上下文、SVN 认证缓存机制这三者在 XAMPP 环境下叠加之后,错误表现高度非线性——同一个配置,在你本机能跑,在同事电脑上就卡在凭据那一步。建议每次改完配置后,先在 Jenkins Script Console 里执行一段 Groovy 测试 SVN 连通性:new org.tmatesoft.svn.core.wc.SVNWCClient().doInfo(new java.io.File('C:/xampp/jenkins/workspace/test'), org.tmatesoft.svn.core.SVNRevision.WORKING),比盲试快得多。











