You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI/CD执行MATLAB任务无限挂起,请求技术支持

GitLab CI/CD 运行MATLAB脚本挂起问题解决思路

问题场景

  • 环境:MATLAB 2023b + Windows 11,GitLab部署在私有云,GitLab Runner标签为matlab-win
  • 配置的.gitlab-ci.yml:
stages:
  - Test

Testing:
  tags:
    - matlab-win
  stage: Test
  script:
    - matlab -batch "runner"
  • runner.m内容:
a = 10; b = 12; disp(a+b)
  • 问题现象:任务无限期挂起,超时前弹出警告:
WARNING: Failed to terminate process: failed to attach to the console of the process being terminated: Access is denied.
WARNING: Failed to force-kill: exit status 128
  • 已尝试操作:管理员权限执行无效;任务管理器可见MATLAB后台进程,CPU/内存占用极低。

解决思路

1. 优化MATLAB启动参数

Windows环境下GitLab Runner默认以服务模式运行,MATLAB的-batch模式可能受会话隔离影响无法正常初始化,可添加无图形相关参数强制非交互启动:

matlab -batch "runner" -noFigureWindows -nosplash -nodesktop

同时确保脚本在仓库目录执行,避免路径问题:

cd %CI_PROJECT_DIR% && matlab -batch "runner" -noFigureWindows -nosplash -nodesktop

2. 切换GitLab Runner运行模式

服务模式的Runner存在会话隔离限制,改为交互式模式运行:

  • 停止并卸载现有Runner服务:
    gitlab-runner stop
    gitlab-runner uninstall
    
  • 以交互式启动Runner:
    gitlab-runner run
    

交互式模式下Runner运行在当前用户会话,可避免服务会话的权限/隔离问题。

3. 排查MATLAB初始化卡点

添加日志输出定位MATLAB启动时的卡点:

matlab -batch "disp('Start'); runner; disp('End')" -logfile matlab_ci.log -noFigureWindows -nosplash -nodesktop

任务结束后查看matlab_ci.log,确认是否卡在许可证验证、配置加载等步骤。同时验证许可证有效性:

matlab -batch "license('test','MATLAB')"

4. 调整Runner权限与进程隔离

  • 检查GitLab Runner服务的运行账户:打开服务管理器,找到GitLab Runner服务,在“登录”选项卡切换为本地系统账户并勾选“允许服务与桌面交互”(注意安全风险),或使用拥有MATLAB完整权限的本地用户账户。
  • 临时禁用Windows Defender或第三方安全软件的实时保护,测试是否是安全软件拦截了MATLAB进程操作。

5. 验证版本兼容性

  • 升级MATLAB 2023b至最新补丁版本,部分旧补丁在Windows 11服务会话中存在兼容性问题。
  • 更新GitLab Runner到最新版本,旧版本Windows Runner可能存在进程管理bug。

内容的提问来源于stack exchange,提问作者manasvb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:19:54