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

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

Failed to connect to repository : Command "/usr/bin/git ls-remote -h ssh://[email protected]: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

你可能感兴趣的:(Java)