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

Jenkins调用BrowserStack API时出现ECONNRESET错误求助

解决Jenkins环境下调用BrowserStack Upload Media API出现ECONNRESET错误的问题

以下是针对该问题的排查和解决方向:

  • 验证Jenkins节点的网络连通性
    先确认Jenkins所在虚拟机能正常访问BrowserStack的API端点,执行以下命令测试:

    curl -v https://api-cloud.browserstack.com/automate/upload-media
    

    检查输出是否能建立TCP连接,若出现超时或拒绝,排查虚拟机的防火墙规则、企业内网代理配置——很多时候本地走了代理但Jenkins节点未配置,会导致连接中断。

  • 修正Authorization头的语法错误
    你代码中的Authorization构造存在明显语法问题:'Basic ' +'username':'access key'不符合JS语法,正确的做法是将用户名和access key拼接后做Base64编码:

    const bsCredentials = Buffer.from(`${process.env.BS_USERNAME}:${process.env.BS_ACCESS_KEY}`).toString('base64');
    let response = await request
        .post('/automate/upload-media')
        .set('Authorization', `Basic ${bsCredentials}`)
        // 其他设置...
    

    建议从Jenkins凭证管理器中读取环境变量,避免硬编码凭证。

  • 确认文件路径与权限
    Jenkins执行时的工作目录和本地环境不同,/path/to/file/可能在虚拟机上不存在,或者Jenkins运行用户(如jenkins用户)没有读取权限。可以在Jenkins构建步骤中添加文件检查:

    ls -l /path/to/target-file
    

    确保文件存在且权限正确,优先使用绝对路径。

  • 延长请求超时时间
    Jenkins环境的网络可能比本地慢,默认超时设置可能导致连接被重置。给SuperTest设置更长的超时:

    let response = await request
        .post('/automate/upload-media')
        // 其他设置...
        .timeout({ response: 60000, deadline: 120000 }) // 响应超时60秒,总请求超时120秒
        .attach('file', '/path/to/valid-file');
    
  • 强制指定TLS版本
    部分旧虚拟机的默认TLS版本过低,可能不被BrowserStack API支持。强制使用TLS 1.2及以上版本:

    const https = require('https');
    const tlsAgent = new https.Agent({ minVersion: 'TLSv1.2' });
    let request = supertest('https://api-cloud.browserstack.com').agent(tlsAgent);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:53:20