部署Jenkins实现Git提交后自动构建的踩坑记录

本文详述了在使用Jenkins进行项目自动化部署至Tomcat过程中遇到的常见问题及解决方案,包括SSH协议配置、子进程被意外终止的处理办法,以及提供了一段Maven构建并重启Tomcat的Shell脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建工程后项目的"源码管理"->"Git"->"Repositories"配置中,Repository URL的地址填写需要注意:如果你的URL是http协议的地址,直接填入就好;如果你的URL是ssh协议的地址,则需要把"ssh://"去掉之后再填入。例如:完整地址为ssh://git@127.0.0.1:test.git,填入的时候只需要填入git@127.0.0.1:test.git即可,否则会报如下错误:

Failed to connect to repository : Command "/usr/bin/git ls-remote -h ssh://git@127.0.0.1:test.git HEAD" returned status code 128:
stdout: 
stderr: ssh: Could not resolve hostname : Name or service not known 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

如果下面的Credentials配置有问题,也会报上述错误。

2、jenkins自动部署中可以通过配置shell脚本启动tomcat,但是tomcat不启动的问题:虽然通过查看后台执行日志明确看到了tomcat的启动日志,但是实际检查却发现tomcat并未启动成功。真实的原因是:Jenkins会在构建完成后使用processTreeKiller杀掉了所有子进程,而且这是Jenkins的默认行为。所以tomcat实际上是启动成功了,只不过又被Jenkins杀死了,解决方法有如下两种:

(1)启动 Jenkins 的时候加上 -Dhudson.util.ProcessTree.disable=true。

(2)在后台进程前加上 BUILD_ID=dontkillme。(名称随意取)

3、分享一下个人的Maven构建及部署到tomcat并重启tomcat的shell脚本。

export BUILD_ID=dontkillme

mvn clean package -Dmaven.test.skip

echo ${WORKSPACE}
echo ${JOB_NAME}
echo ${BUILD_ID}
ps aux |grep java |grep tomcat-8080 |grep -v grep |grep -v tail |awk '{print $2}' |xargs kill -9
cp -f ${WORKSPACE}/target/test.war /usr/local/tomcat-8080/webapps/test.war
sleep 5
/usr/local/tomcat-8080/bin/startup.sh

参考文档:

https://blog.csdn.net/weixin_39483907/article/details/80840948

https://www.cnblogs.com/bluesky-yuan/p/9231956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值