在jenkins中处理外部命令7z的异常

powershell中有自己的异常捕获机制,但是在jenkins中处理第三方工具抛出的异常时,一直抓不到,疑惑了很久,本篇内容主要描述此次过程及解决方案。


powershell可以处理外部异常

try
{
    .\7z.exe -tzip abx a.zip bcd  #dcd不存在,此命令执行必定失败
}
catch [System.Exception]
{
    echo "异常捕获成功"
}

 执行结果:

将powershell代码移植到jenkins中,构建后查看结果:

结果:

 

【猜测】:可能是第三方工具7z命令重新启动了一个进程,而jenkins没有能捕获到这个异常。

换个思路:

7z执行后会返回退出码,我们可以利用退出码来判断7z是否执行成功。

根据上图可知,当退出码是0时,表示执行成功!

在powershell中如何获取返回码呢?

echo $LASTEXITCODE

在powershell中测试成功和失败的退出码:

将此方法应用到jenkins中

结果:

若需要隐藏输出结果,使用“2>&1”即可将正确错误的输出信息输入到某个文件中。

 

 

 7z正常执行:

posted @ 2019-04-12 18:54  一个有故事的devops  阅读(3760)  评论(0编辑  收藏  举报