我们有带有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文件中的环境变量的正确语法或方法是什么?
答案 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