gpt4 book ai didi

windows - Windows 上的 Jenkins - Matlab 不退出

转载 作者:可可西里 更新时间:2023-11-01 09:22:59 27 4
gpt4 key购买 nike

Jenkins freestyle 的以下命令在 Windows 环境中不会退出(永远运行)。但是,当我在 CMD 中运行相同的命令时,它会按预期工作。

matlab -nodesktop -nosplash -minimize -c "path_to_license" -r "run('path_to_run_all_tests_script')" -wait -logfile unittestlog.txt set output=%errorlevel% MORE unittestlog.txt EXIT %output%

我做错了什么?

编辑:

这是命令调用的 Matlab 脚本:

import matlab.unittest.TestSuite;

disp('Hello from TestSuite');
try
suite = TestSuite.fromPackage('test','IncludingSubpackages',true);
results = run(suite);
display(results);
catch e
disp(getReport(e,'extended'));
exit(1);
end
exit(any([results.Failed])+1);

最佳答案

我的猜测是这是一个许可问题 - 您需要 Jenkins 以 MATLAB 许可中指定的相同用户身份运行(当然假设您的 MATLAB 许可是指定用户许可 - 如果它是并发的或命名机器许可证,请忽略我)。

如果是错误的用户,MATLAB 将启动,但会显示一个对话框,告诉您许可问题。但是,由于您已使用 -nodesktop 调用它,因此此对话框将不可见,并且 MATLAB 将永远作为“僵尸”进程徘徊,而不会向 Jenkins 发送返回值。如果您进入任务管理器,您可能会发现其中一个或多个闲置,您可以在那里强制退出它们。

请注意,如果您运行 MATLAB 进行单元测试或通过 Jenkins 自动构建,则应注意许可要求。如果您有指定用户许可证,则只允许该指定用户使用它,包括通过 Jenkins。只要您是唯一可以启动 Jenkins/MATLAB 作业的人,那很好 - 但如果您将 Jenkins 暴露给多个用户,所有人都可以启动 MATLAB 作业,那么您就违反了许可协议(protocol).如果您需要这样做,您真的应该获得 Jenkins 运行的并发许可证。但这是一个灰色地带,您可能需要与您的客户经理谈谈。

希望对您有所帮助!


编辑:我想您可能还想看一下您在测试脚本中使用的退出代码。您希望 MATLAB 在测试通过时以零成功代码退出,在测试失败或在测试期间发生错误时以非零失败代码退出。所以你可能希望你的最后一行是 exit(any([results.Failed]));,而不是 exit(any([results.Failed])+1);.

关于windows - Windows 上的 Jenkins - Matlab 不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com