微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

构建时的 azure devops 和公共 nuget 上游行为

如何解决构建时的 azure devops 和公共 nuget 上游行为

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

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

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

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

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

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

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

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

编辑:由于以下错误,它似乎失败了:

enter image description here

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

解决方法

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

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

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

enter image description here

现在只缓存了我之前测试过的几个包,然后我添加了另一个测试包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 恢复结果:

enter image description here

提要结果:

enter image description here

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

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

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

enter image description here

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

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

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。