Jenkins powershell块不会等到完成时才进入下一个块,即Windows批处理命令。通过对所有变量进行回显测试,所有变量均可以正常工作,并且控制台输出显示其正确值。
Windows Powershell块
Start-Process -FilePath "C:\Program Files\MATLAB\R2018b\bin\matlab.exe" -ArgumentList "-automation -nosplash -nodesktop -wait -r `"echo ; cd $DOMAIN\Framework\Integration; setDOMAINPath $DOMAIN; disp(iAnalytics.domain.getSingleton.getRevision); createExecutable; exit`" -logfile $logfile" -Credential $credential -wait
然后立即进入该可执行文件,该可执行文件是由Matlab创建的,因此找不到它并导致工作失败。
Windows批处理命令
cd %Domain%\ModuleTest
DomainTestConsistency.exe
那么,有没有一种方法让Jenkins等待Powershell进程结束,然后才执行下一个程序块所需的时间呢?我尝试添加-wait和管道|无效,但无济于事。有什么想法吗?
答案 0 :(得分:0)
您将要使用$?自动变量。 (https://ss64.com/ps/syntax-automatic-variables.html)如果最后一个操作成功,则返回TRUE,否则返回FALSE。
#run first command
if($? = "true")
{
#run second command
}
else
{
Write-Host "first command has failed"
}