在HTTP代理后面的Azure DevOps服务器上使用上游源

时间:2019-09-06 07:03:05

标签: azure-devops

我们的Azure DevOps服务器基础结构位于HTTP Web代理服务器的所有后台,用于所有出站流量。我们希望在Azure Artifacts中启用“上游源”功能,以便Azure DevOps在需要时从nuget.org等下载程序包。

但是,我们还没有找到任何有关如何建立Azure DevOps Server应用程序层的文档(我们假设这是与上游源建立出站连接)。当我们在其中一个提要上启用上游源功能并将其添加nuget.org时,在尝试下载提要中的任何软件包时,都会出现以下错误:

  

响应状态代码未指示成功:500(内部服务器错误-无法从上游包源'https://api.nuget.org/v3/index.json'检索数据:发送请求时发生错误。(DevOps活动ID:F2C6C7EF-6651 -4FB2-B650-5221ABC80F64)

当我们禁用上游源时,此错误消失,并且程序包从Azure DevOps缓存而不是上游源成功下载。

搜索服务器上的应用程序层目录,我们发现DevOps网站的web.config已经应用了以下代理设置:

<system.net>
  <defaultProxy useDefaultCredentials="true"/>
</system.net>

我们对此进行了进一步修改,以明确提供这样的代理服务器地址:

<system.net>
  <defaultProxy useDefaultCredentials="true">
    <proxy proxyAddress="http://<ourproxyserver>" />
  <defaultProxy/>
</system.net>

然后再次尝试,但是收到相同的Failed to retrieve data from the upstream package source错误。

我们尝试从Azure DevOps服务器中查找更详细的错误日志,但在找到的日志文件中未找到任何错误日志。但是我们不能完全确定Azure DevOps Server也在哪里写入错误日志。

要使上游源在我们的方案中正常工作,我们是否缺少某些东西? Azure DevOps Server是否能够通过HTTP代理发出出站请求?

2 个答案:

答案 0 :(得分:0)

  

在HTTP代理后面的Azure DevOps服务器上使用上游源

目前,恐怕还没有这种现成的方法可以在HTTP代理后面的Azure DevOps服务器上使用上游源。

作为解决方法,我们可以禁用上游源,然后在每个项目的nuget.config中放置以下设置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="http_proxy" value="http://proxy_hostname_or_ip:xxxx" />
        <add key="https_proxy" value="http://proxy_hostname_or_ip:xxx" />
    </config>

  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>

</configuration> 

还原nuget软件包时,请使用此nuget.config文件。 希望这会有所帮助。

答案 1 :(得分:0)

@Leo Liu-MSFT并不十分准确; Azure DevOps Server可以在HTTP代理服务器后面工作。

我们实例中的问题是基础架构团队忘记了在主机上为代理服务器安装CA证书,这是我们看到的HTTP 500错误消息的原因。

正确安装证书后,我们将更新web.config文件以使Azure DevOps站点使用我们的代理服务器详细信息。

<system.net>
  <defaultProxy useDefaultCredentials="true">
    <proxy proxyAddress="http://<ourproxyserver>" />
  <defaultProxy/>
</system.net>

我们还使用以下方法在Windows服务器级别设置了代理服务器设置:

netsh winhttp set proxy proxy-server=http://<ourproxyserver>

完成这些步骤后,上游源就开始在我们的Azure DevOps实例中工作。