在Azure DevOps使用cypress/included运行Cypress测试时遇错误码137
问题描述
- 已搭建Cypress测试套件,计划接入Azure DevOps CI/CD流水线,使用
cypress/included:12.13.0Docker镜像编写了.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
相关产品推荐
相关产品推荐

