Nuget.config中的环境变量替换

时间:2019-11-11 13:11:18

标签: azure docker azure-devops nuget

我们有带有Nuget.config文件的dotnet核心应用程序。作为azure devops CI管道的一部分,我们希望读取和替换Nuget.config文件中的环境变量。环境/管道变量(USERNAME和PWD)在CI管道的“构建Docker映像”任务中配置。 Azure devops CI构建服务器运行在Ubuntu计算机上。

按照this文档,应按以下方式替换MAC / Linux中的环境变量。

Nuget.config中的语法“ $ USERNAME”在这里不起作用。当我们替换静态用户名和密码时,它可以正常工作。

Nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="abcFeed" value="https://somedevops.com/xyz/packaging/someApps/nuget/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <abcFeed>
      <add key="Username" value="$USERNAME"/>
      <add key="ClearTextPassword" value="$PWD"/>
    </abcFeed>
  </packageSourceCredentials>
</configuration>

我们使用以下文档尝试了以下语法,但它们均不起作用:$ USERNAME,$(USERNAME),%USERNAME%,$ USERNAME $

用azure devops管道替换Nuget.config文件中的环境变量的正确语法或方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以改为使用Replace Tokens任务,并将其配置为处理nuget.config文件。

但是,您可能要考虑使用Nuget服务连接,因为这样可以避免将Nuget凭据保存为管道变量,也可以使其更加安全,因为当在配置文件中替换时,它们将以纯文本形式显示。 / p>

有关在Azure DevOps中使用服务连接的详细信息,请参阅位于以下位置的Microsoft文档:https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml#sep-nuget

答案 1 :(得分:0)

我认为我们的nuget文档需要更正。无论平台如何,都使用相同的字符替换环境变量:%myPW% 我已在Ubuntu 18上使用dotnet.exe 3.0.100成功测试。*

请就我分配给我的跟踪问题与我互动:https://github.com/NuGet/Home/issues/8662

相关问题