jenkins 问题处理

证书问题

jeniins  发布再maven 打包的时候遇到如下问题

 

 解决:

原因就是访问https://build.shi..  时候证书验证错误,需要把该网站的公钥证书添加到jre 中。

 

下载网站的证书

 

 详细信息》复制到文件》下一步》base64..》保存本地,文件名例如为a.cert ,再上传到jenkins服务器上面 比如/tmp

找到证书存放路径,  $JAVA_HOME/jre/lib/security/cacerts , changeit  是密钥库的默认密码。

 

keytool   -import -alias taobao -file    /tmp/a.cer  -keystore   "%JAVA_HOME%/jre/lib/security/cacerts"      -storepass  changeit

提示是否加入此密钥,输入:Y即可。

其他命令

//删除cacerts中指定名称的证书:

              keytool -delete -alias taobao -keystore "%JAVA_HOME%/jre/lib/security/cacerts"  -storepass changeit

//查看cacerts中的证书列表:

              keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts"  -storepass changeit

注意可能需要清除workspace 下面的项目目录才能成功。

编译后失败的缓存问题

maven 报错信息

 

 

删除本地缓存里面的配置

rm  -f   /root/.m2/repository/com/xx/asset/xx/1.0.3/*.lastUpdated

Job 构建失败

Build step 'Execute shell' marked build as failure

现象:

  当在jenkins 里面执行脚本的时候,命令并没有执行失败,但是jenkins 标记为失败状态,例如执行git push ,当前仓库已经与远程仓库保持一致了,没有要提交推送的代码了,此时再推送提示:nothing to commit, working directory clean ,但是单独执行此命令,shell 返回的是状态码“0” ,而jenkins 只是把非0 视为失败

解决:

  在jenkins shell 里面添加:#!/bin/bash -x

 

 

原因分析

在jenkins里面执行的脚本,jenkins 默认的脚本参数是 -xe , 其中-x 表示调试模式,把每条执行命令打印出来,而-e使shell立即退出某些东西会返回一个错误(这通常在shell脚本中用作故障保护机制),也就是回返回非0 状态码,由此导致jenkins job执行失败。所以可以通过添加自定义的shell 参数来覆盖jenkins 默认参数-e。

但是后续发现如果这么做,有些本应该返回非0状态码的执行失败的命令也被jenkins 忽略了,job 不会显示失败

posted @ 2020-04-16 20:31  fanggege  阅读(361)  评论(0编辑  收藏  举报