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

Azure DevOps自托管代理迁移GitHub后管道连接重置故障排查

问题:Azure DevOps自托管代理YAML管道检出GitHub仓库失败

团队原本在Azure DevOps自托管代理上运行TestComplete脚本的YAML管道,把代码库从Azure Repos迁移到GitHub Repos后,管道一直报 Recv failure: Connection was reset 错误。我对YAML不太熟悉,现在卡在这里,目标是成功检出GitHub仓库的master分支。

已尝试的操作

  • 设置 checkout: none 后添加自定义脚本克隆仓库、检出master分支,但提示git命令无法识别(已经确认自托管代理上安装了Git,且手动测试可用)
  • 在checkout段加了 persistCredentials: true 参数,还是出现同样的连接重置错误

补充说明

  • 用Azure Pipelines托管的ubuntu-latest代理跑同类管道完全正常
  • 代码库迁移前,这个自托管代理上的管道没出过问题
  • 错误截图:Recv failure连接重置错误

可行解决方案

1. 排查自托管代理的网络问题

自托管代理大概率是网络访问受限,连不上GitHub:

  • 在代理机器上手动执行 curl https://github.com,测试能不能正常访问GitHub的HTTPS服务(443端口)
  • 如果代理机器需要走企业内网代理,得给Azure DevOps代理配置代理参数:
    • 进入代理安装目录,Windows执行 ./config.cmd configure,Linux执行 ./config.sh configure
    • 按照提示输入企业代理地址(比如 http://proxy.company.com:8080)和认证信息(如果需要)
    • 重启Azure DevOps代理服务生效
  • 临时关闭代理机器上的防火墙、杀毒软件,测试是不是这些工具拦截了GitHub的连接

2. 解决Git命令无法识别的问题

虽然Git装了,但管道执行时可能没加载到Git的环境变量:

  • 在自定义克隆脚本里写Git的完整路径,比如Windows下用 "C:\Program Files\Git\bin\git.exe" clone https://github.com/你的组织/你的仓库.git
  • 把Git的bin目录(比如 C:\Program Files\Git\bin)加到代理机器的系统环境变量PATH里,然后重启Azure DevOps代理服务

3. 调整Checkout步骤的YAML配置

用更明确的配置替代默认设置,试试浅克隆减少数据传输:

steps:
- checkout: git://你的组织/你的仓库@master
  persistCredentials: true
  fetchDepth: 1 # 只克隆最近一次提交,避免大文件传输超时

或者直接用HTTPS地址:

steps:
- checkout: https://github.com/你的组织/你的仓库.git@master
  persistCredentials: true

4. 验证权限配置

确保Azure DevOps能正常访问GitHub仓库:

  • 检查Azure DevOps项目里的GitHub服务连接,重新生成GitHub个人访问令牌(PAT),确保PAT有仓库的读取权限
  • 在代理机器上手动用Git克隆仓库,看是不是需要SSH密钥认证,如果需要,把密钥放到代理机器的用户目录.ssh下

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:24:54