Jenkins自动部署WAR包至树莓派Tomcat7遇异常求助
搞定Jenkins部署WAR包到树莓派Tomcat7的异常问题
兄弟,看你描述的情况——Jenkins构建没问题,但往树莓派的Tomcat7(5000端口)部署时抛出了org.eclipse.aether.transfer.NoTr...开头的异常,这个坑我之前踩过,大概率是传输中断、权限配置错了或者Tomcat端的问题,给你列几个实用的排查和解决方向:
一、先把Tomcat端的基础配置捋清楚
- 先确认Tomcat的管理端口和manager应用状态:你说Tomcat跑在5000端口,那manager应用的访问地址就是
http://树莓派IP:5000/manager/html,先在树莓派本地用curl http://localhost:5000/manager/html测下能不能打开,要是打不开,要么是manager没启用,要么是端口配置错了。 - 必须给Tomcat配置带
manager-script权限的用户:编辑树莓派上Tomcat的conf/tomcat-users.xml,加一段用户配置,比如:
<user username="jenkins-deploy" password="你的密码" roles="manager-script,manager-gui"/>
这个manager-script权限是Jenkins调用Tomcat部署API必须的,少了肯定报错。
- 检查树莓派的防火墙:要是用ufw的话,执行
sudo ufw allow 5000放开端口,不然Jenkins连不上Tomcat的管理服务。
二、核对Jenkins的部署配置细节
- 如果你用的是Maven的
tomcat7-maven-plugin部署,先看pom.xml里的配置对不对:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://你的树莓派IP:5000/manager/text</url> <!-- 注意是/text接口,不是/html --> <server>tomcat-rpi</server> <path>/MyProject</path> </configuration> </plugin>
然后要在Jenkins的全局Maven配置里,或者Maven的settings.xml里,配置tomcat-rpi对应的账号密码,和Tomcat里的用户完全匹配。
- 要是用Jenkins的Tomcat插件部署,确保插件里填的Tomcat URL是
http://树莓派IP:5000,账号密码正确,并且选对了“Deploy to container”的目标容器。
三、考虑树莓派的性能和网络稳定性
- 树莓派性能有限,Tomcat默认内存可能不够,部署时容易卡断:修改树莓派上Tomcat的
bin/catalina.sh,在开头加一行JAVA_OPTS="-Xmx512m -Xms256m",给Tomcat多分配点内存。 - 检查Jenkins和树莓派之间的网络:在Jenkins服务器上用
ping 树莓派IP测下有没有丢包,或者用curl -u jenkins-deploy:你的密码 http://树莓派IP:5000/manager/text/list测试能不能获取已部署应用列表,这个命令失败的话,直接排查网络或者权限问题。
最后,补全异常信息会更精准
你现在只贴了异常开头的org.eclipse.aether.transfer.NoTr...,最好把完整的异常栈信息贴出来,比如是不是NoTransferProgressException,有没有后续的错误描述(比如连接超时、权限拒绝),这样能更快定位问题。
内容的提问来源于stack exchange,提问作者clorisanderton
相关产品推荐
相关产品推荐

