1. 程式人生 > >部署Jenkins實現Git提交後自動構建的踩坑記錄

部署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