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

TeamCity中Angular测试构建失败但代理终端可运行的原因排查

TeamCity中Angular Karma测试ChromeHeadless启动失败问题排查与解决

问题场景

在TeamCity环境下运行Angular项目的Karma测试时出现异常:

  • 在代理终端直接执行命令 ng test --watch=false --browsers=ChromeHeadless,测试可正常运行
  • 将相同命令放到TeamCity构建步骤中执行,却报错无法启动ChromeHeadless

已尝试的无效方案

  • 使用xvfb-run -a ng test --watch=false --browsers=ChromeHeadless命令包装执行
  • 在Karma配置文件中自定义ChromeHeadless启动器,配置如下:
customLaunchers: {
  ChromeHeadlessNoSandbox: {
    base: 'ChromeHeadless',
    binary: '/usr/bin/google-chrome', // 路径来自调试输出
    flags: [
      '--no-sandbox',
      '--disable-gpu',
      '--disable-dev-shm-usage',
      '--disable-setuid-sandbox'
    ]
  }
},

问题根源

TeamCity构建步骤使用的是buildAgent.properties中配置的自定义临时目录,而终端环境默认使用/tmp目录。ChromeHeadless启动依赖默认的/tmp目录,因此在构建步骤中无法正常初始化。

解决方法

  • 临时方案:在TeamCity构建步骤中添加环境变量配置,设置TMPDIR=/tmp,强制ChromeHeadless使用默认临时目录
  • 永久方案:修改TeamCity代理的buildAgent.properties配置文件,将临时目录设置为/tmp,确保所有构建步骤都使用该目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:03:11