对于 ADO 管道上的 dotnet 发布,使用私有源的 NPM 身份验证失败

Posted

技术标签:

【中文标题】对于 ADO 管道上的 dotnet 发布,使用私有源的 NPM 身份验证失败【英文标题】:NPM authentication with private feeds fails for dotnet publish on ADO pipeline 【发布时间】:2021-02-06 20:38:01 【问题描述】:

设置 我使用dotnet new react 创建了一个新项目。 我的代码在 Azure DevOps GIT 上。 我正在使用在同一个 ADO 组织的私有注册表上发布的 npm 模块。

问题 在我的构建管道中,我的 dotnet publish 任务失败并出现以下错误

npm ERR! code E401
  npm ERR! Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/xxxxxxxxxxxxxxxx, Basic realm="https://xxxxxxxxxxx.pkgs.visualstudio.com/", TFS-Federated
  
  npm ERR! A complete log of this run can be found in:
  npm ERR!     C:\npm\cache\_logs\2020-10-23T16_16_30_880Z-debug.log
D:\a\1\s\Portal.csproj(48,5): error MSB3073: The command "npm install" exited with code 1.

我尝试过的事情

    在 dotnet 发布任务之前添加了 npm authentciate 任务。该任务通过,但我在发布任务中收到 401 错误。

【问题讨论】:

【参考方案1】:

在 ADO 管道上发布 dotnet 时使用私有源的 NPM 身份验证失败

根据npm Authenticate task(针对任务运行者):

使用此任务为您的 .npmrc 文件提供 npm 凭据 构建范围的存储库。 这会启用 npm,以及 npm 任务运行器,如 gulp 和 Grunt,使用私有身份验证 注册表

所以,它不适用于dotnet publish 任务。为了解决这个问题,你可以尝试使用npm task,比如npm install来恢复包,npm build来构建项目,然后使用Azure App Service deploy来发布react项目。

您可以查看this blog 了解更多详情。

【讨论】:

您建议的博客适用于纯 reactjs 网站。但是,我在同一个项目中也有 dotnet 控制器,如果我只是使用 npm 任务,我应该如何部署控制器? @ShaswatRungta,您可以尝试添加一个 dotnet restore 任务来恢复 dotnet controllers 项目的包 不是所有项目,然后使用 dotnet publish --no-restore

以上是关于对于 ADO 管道上的 dotnet 发布,使用私有源的 NPM 身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章

C#一句简单而经典的代码:10 篇热文汇总

从 Windows 上的 C# Service Fabric 应用程序连接到 docker_engine(命名管道)

dotnet restore 在配置有代理的 bitbucket 管道上失败

dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库

ADO .Net - 如何在具有多个 IP 地址的系统上的 SqlConnection 中指定源 IP 地址

如何修复 Azure 管道错误 NETSDK1152?