【问题标题】:azure devops & public nuget upstreams behavior when buildingazure devops & public nuget upstreams 构建时的行为
【发布时间】:2021-01-19 17:30:24
【问题描述】:

我尝试使用single feed from the client 遵循最佳实践。因此,我设置了一个 Nuget.config 文件,其中包含我的提要中的一个条目,并带有 <clear/> 文档中所述的标签。

在 devops 服务器端,我为公共 Nuget Gallery 设置了带有上游源的提要(为了缓存,因为在公共包管理器中断的情况下这听起来不错。

当我在任何机器上直接使用nuget.exe 客户端时,无论如何我都可以安装任何nuget.org 包。但是在构建时,当公共包还没有在我的服务的上游缓存中时,构建代理不会找到它......(在这种情况下,上游似乎没有被用来提供缓存)。

这正常吗?是否仅限于构建时已经缓存的包?

在我们的开发团队中,我们习惯于通过VS UI添加nuget包(右键项目“manage nuget packages”)。在这种模式下,我们看不到那些上游包,所以我们在开发时直接将源切换为 nuget。

我找到的解决方案可能是:

  • Nuget.config 添加第二个条目以声明 nuget.org 进行构建(但我们失去了缓存功能)
  • 在开发时系统地使用命令行nuget.exe安装包?

我错过了什么?您还有其他想法/解决方案吗?

编辑:似乎由于以下错误而失败:

顺便说一句:我对 Azure Devops 很陌生(使用本地版本“Dev18.M170.6”)。

【问题讨论】:

    标签: azure-devops nuget nuget-package-restore


    【解决方案1】:

    这正常吗?是否仅限于构建时已经缓存的包?

    这不正常。它不仅限于构建时缓存的包。

    例如,我创建一个新的测试提要并启用公共 Nuget 库的上游源:

    现在只缓存了我之前测试的几个包,然后我添加另一个测试包log4net并用我的以下nuget.config恢复它:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <clear />
        <add key="NewFeed" value="https://pkgs.dev.azure.com/<MyOrgName>/_packaging/NewFeed/nuget/v3/index.json" />
      </packageSources>
      
      <config>
    
    </config>
    
      <packageSourceCredentials>
        <NewFeed>
          <add key="Username" value="XXX" />
          <add key="ClearTextPassword" value="XXX" />
        </NewFeed>
      </packageSourceCredentials>
    
    </configuration>
    

    nuget 还原结果:

    提要结果:

    因此,它不仅限于构建时缓存的包。这个方法对你无效的原因需要具体分析你的nuget restore任务日志。

    提醒,请检查项目构建服务是否有权访问您的提要:

    Feed settings->Permissions->...->Allow Project-scoped build:

    在我们的开发团队中,我们习惯于通过 VS UI(右键单击项目“管理 nuget 包”)。在这种模式下,我们 看不到这些上游包,所以我们将源切换到 nuget 直接在开发时。

    您可以在 Visual Studio 中将上游源 nuget.org 添加为 nuget scource,您可以通过 VS UI dd nuget 包。在 Azure devops 中构建管道时,nuget 将从自定义提要中恢复包并缓存来自上游源的包:

    【讨论】:

    • 我不明白这个“允许项目范围的构建”做了什么,但它解决了这个问题!!为什么已经在缓存中的包一切正常,这个选项对此有何改变?
    • 关于 VS 配置/UI 的使用,这已经是我们正在做的,谢谢!
    • 我添加了日志(见截图),因为我仍然不明白为什么会发生这种情况......
    • @Christophe,由于 Azure devops 使用 Build 服务帐户来执行管道,我们需要为该帐户提供权限,以便它可以访问此提要和上游源。
    • 日志中显示的内容和你的任务配置有关。如果您担心这个问题,能否请您打开一个包含您的任务配置和相应日志的新案例?只有这样,我们才能得到更多的信息来分析原因。
    猜你喜欢
    • 2019-08-17
    • 2020-04-03
    • 2020-01-14
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多