Nuget.config 中的环境变量替换

Kir*_*ran 5 azure nuget docker azure-devops

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

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

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

配置文件

<?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>
Run Code Online (Sandbox Code Playgroud)

我们已经尝试使用以下文档的语法,它们都不起作用:$USERNAME, $(USERNAME), %USERNAME%, $USERNAME$

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

Mun*_*Mun 2

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

但是,您可能需要考虑使用 Nuget 服务连接,因为这样可以避免将 Nuget 凭据保存为管道变量,并且还可以使它们更安全,因为它们在配置文件中替换时将以纯文本形式公开。

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