对于 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 身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章
从 Windows 上的 C# Service Fabric 应用程序连接到 docker_engine(命名管道)
dotnet restore 在配置有代理的 bitbucket 管道上失败
dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库