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

在Azure DevOps使用cypress/included运行Cypress测试时遇错误码137

问题描述
  • 已搭建Cypress测试套件,计划接入Azure DevOps CI/CD流水线,使用cypress/included:12.13.0 Docker镜像编写了.yml配置文件
  • 流水线执行时,容器初始化、代码检出均正常,但测试执行(包括npx cypress verify命令)立即失败,返回错误码137
  • 容器可用内存约7GB,测试实际仅需1GB左右;已尝试添加--ipc=host、--shm-size=1024M、--memory=4g等容器启动参数,问题依旧
  • 本地用podman运行相同容器配置,测试可正常执行

当前使用的.yml配置:

name: 'cypress-e2e-run-$(Date:yyyyMMdd)'
appendCommitMessageToRunName: false

trigger:
  none
  # branches:
  #   include:
  #     - main

parameters:
  - name: 'RunEnvironment'
    displayName: 'Test environment:'
    type: 'string'
    default: 'dev'
    values:
      - 'dev'
      - 'qa'

jobs:
- job: DockerInfo
  pool:
    vmImage: ubuntu-latest

  steps:
  - script: docker info

- job: CypressRun
  pool:
    vmImage: ubuntu-latest
  
  container:
    image: cypress/included:12.13.0
    options: --ipc=host --shm-size=1024M --memory=4g

  steps:
  - script: npx cypress verify
  - script: TZ=Etc/UTC cypress run -e CYPRESS_VIDEO=false -e DISABLE_GPU=true -e environment=dev -s cypress/e2e/mySpec.cy.js
    displayName: 'Run Cypress tests'
解决方案尝试

1. 升级代理VM规格

ubuntu-latest默认使用的Standard DS2 v2 VM虽有7GB内存,但Azure DevOps代理本身会占用部分资源,实际留给Cypress容器的内存可能不足。可切换到更高规格的VM:

pool:
  vmImage: ubuntu-22.04
  vmSize: Standard_DS3_v2 # 14GB内存规格

2. 增大容器共享内存

Cypress运行浏览器对共享内存需求较高,尝试将--shm-size调整到2GB及以上:

container:
  image: cypress/included:12.13.0
  options: --ipc=host --shm-size=2g --memory=6g

3. 直接使用镜像内置的Cypress

cypress/included镜像已预安装Cypress,无需用npx调用,减少资源消耗:

steps:
  - script: cypress verify
  - script: TZ=Etc/UTC cypress run -e CYPRESS_VIDEO=false -e DISABLE_GPU=true -e environment=${{ parameters.RunEnvironment }} -s cypress/e2e/mySpec.cy.js
    displayName: 'Run Cypress tests'

4. 禁用浏览器沙箱

Azure DevOps容器环境中,浏览器沙箱可能引发内存异常,添加对应环境变量:

steps:
  - script: cypress verify
  - script: |
      TZ=Etc/UTC
      CYPRESS_CHROME_SWITCHES=--no-sandbox
      cypress run -e CYPRESS_VIDEO=false -e DISABLE_GPU=true -e environment=${{ parameters.RunEnvironment }} -s cypress/e2e/mySpec.cy.js
    displayName: 'Run Cypress tests'

5. 检查代理池全局资源限制

确认Azure DevOps代理池是否存在全局内存/CPU配额限制,必要时联系管理员调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:07:40