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

升级Cypress 12后CentOS 7 Jenkins环境报Socket错误求助

解决Cypress 12.3.0在CentOS7 Jenkins上的CreatePlatformSocket错误

核心原因

Cypress 9+版本起使用的Electron内核(基于Chrome 100+分支)默认优先尝试IPv6网络套接字,但CentOS 7系统默认可能未启用IPv6,或是Jenkins容器/运行环境的网络配置禁用了IPv6,导致套接字创建失败。而旧版Cypress 8依赖的Electron内核版本较低,没有强制优先IPv6,因此可以正常运行。

具体解决办法

1. 强制Cypress使用IPv4

在执行Cypress测试命令前,添加环境变量强制Electron禁用IPv6:

export ELECTRON_EXTRA_LAUNCH_ARGS="--disable-ipv6"
npx cypress run

也可以直接在Jenkins构建步骤中合并命令:

ELECTRON_EXTRA_LAUNCH_ARGS="--disable-ipv6" npx cypress run

2. 调整Cypress配置文件

在cypress.config.js中配置浏览器启动参数,强制禁用IPv6:

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('before:browser:launch', (browser = {}, launchOptions) => {
        if (browser.family === 'electron') {
          launchOptions.args.push('--disable-ipv6')
          return launchOptions
        }
      })
    },
  },
})

3. 启用系统/容器的IPv6支持

如果允许启用IPv6,可在CentOS7系统中开启支持:

  • 编辑/etc/sysctl.conf,添加或修改配置:
    net.ipv6.conf.all.disable_ipv6 = 0
    net.ipv6.conf.default.disable_ipv6 = 0
    
  • 执行命令使配置生效:
    sysctl -p
    

若使用Docker运行cypress/base:16.13.0镜像,启动容器时添加参数启用IPv6:

docker run --sysctl net.ipv6.conf.all.disable_ipv6=0 cypress/base:16.13.0 ...

4. 补全系统依赖

确保CentOS7系统安装了Cypress 12所需的底层依赖(cypress/base镜像已包含,但Jenkins宿主机可能缺失):

yum install -y libX11 libXcomposite libXcursor libXdamage libXext libXi libXtst cups-libs libXScrnSaver libXrandr alsa-lib pango atk at-spi2-atk gtk3

验证步骤

  1. 在Jenkins构建前执行echo $ELECTRON_EXTRA_LAUNCH_ARGS,确认环境变量已正确设置
  2. 运行Cypress测试,观察错误是否消失
  3. 若问题仍存在,检查Jenkins的网络策略是否限制了套接字创建权限或IPv6访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:50:17