下面的Jenkins自由式命令不会在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脚本:
您对CI服务器git支持(Windows)有什么经验?
没有桌面会话,devenv.com将不会启动
持续集成远程cmd命令的解决scheme?
jenkins+ qUnit
持续集成是否消除了对大型Visual Studio解决scheme的需求?
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);
如何设置jenkinsHA?
Jenkins CI在configuration构build时集成了NodeJS和Github问题
Jenkins windows slave没有tty分配失败
让jenkins工作运行一个木偶清单
我的猜测是,这是一个授权问题 – 你需要Jenkins作为在MATLAB许可证中命名的同一个用户来运行(假设你的MATLAB许可证是一个命名用户许可证 – 如果它是一个并发或命名的许可证)机器许可证,请不理我)。
如果是错误的用户,那么MATLAB将启动,但会显示一个对话框,告诉你许可问题。 然而,既然你已经用-nodesktop调用了它,这个对话框将不可见,于是MATLAB就会像“僵尸”程序那样一直-nodesktop ,而不会向Jenkins发送返回值。 如果你进入任务管理器,你可能会发现你有一个或多个挂在身边,你可以在那里强制退出。
请注意,如果您正在通过Jenkins运行MATLAB进行单元测试或自动构建,则应该小心许可要求。 如果您拥有命名用户许可证,则只允许该名称用户使用它,并且包括通过Jenkins。 只要你是唯一能启动Jenkins / MATLAB工作的人,那就没问题 – 但如果你将Jenkins公开给几个用户,他们都可以启动一个MATLAB工作,那么你违反了许可协议。 如果你需要这样做的话,你应该真的获得Jenkins的并发许可证。 但是这有点灰色地带,你可能想和你的客户经理谈一谈。
希望有所帮助!
编辑:我想你可能也想看看你在测试脚本中使用的退出码。 当测试通过时,您希望MATLAB以成功代码0退出,当测试失败时或测试期间发生错误时,将返回非零故障代码。 所以你可能希望你的最后一行是exit(any([results.Failed])); ,不exit(any([results.Failed])+1); 。
问题与许可有关。 Jenkins应该由具有Matlab许可证的相同用户来运行。
除了Sam Roberts回答:要更改Jenkins的用户,请转到计算机管理中的服务,找到Jenkins服务并从属性更改用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。