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
相关产品推荐
相关产品推荐

