【发布时间】:2019-10-31 11:51:21
【问题描述】:
我们有一个在 Jenkins 中运行的 CI 构建。我们在 Azure DevOps 中有一个 NuGet 包源,在构建期间恢复 NuGet 包时出现401 Unauthorized 错误:
https://pkgs.dev.azure.com/X/_packaging/FeedName@Release/nuget/v3/index.json:无法加载源https://pkgs.dev.azure.com/X/_packaging/FeedName@Release/nuget/v3/index.json 的服务索引。 响应状态码不表示成功:401(未授权)。
Jenkins 设置:
- Windows 10
- 詹金斯 2.199
- NuGet 5.3.1.6268
- Java 1.8.0_191
- Jenkins 作为登录到“本地系统”的 Windows 服务运行。
我在 Jenkins 机器上安装了 NuGet Credential Provider,但我在以我自己的身份登录时安装了它。我复制了我在笔记本电脑上采取的步骤来解决同样的问题。我的笔记本电脑正在工作。 Jenkins 服务器不是,我认为这与 NuGet Credential Provider 不适用于“本地系统”帐户有关,但不知道如何解决这个问题。
构建由 PowerShell 脚本控制,NuGet 恢复命令如下所示:
& "$solutionPath"\.nuget\NuGet.exe restore "$solutionFile"
-
$solutionPath是 Visual Studio 的 .sln 文件所在的文件夹 -
$solutionFile是 .sln 文件的确切文件名
在阅读How to specify credentials for external nuget feeds in VSTS nuget restore 之后,我还通过以下方式向本地 NuGet 安装添加了一个新的“源”:
.\.nuget\NuGet.exe sources add -name "FeedName" -source "https://pkgs.dev.azure.com/X/_packaging/FeedName@Release/nuget/v3/index.json" -username <my username> -password <my personal access token> -configfile .\.nuget\NuGet.config
我尝试过的用户名:
- 我的实际用户名
- 我的电子邮件
- 还有
.,就像 Jenkins 配置在通过 TFVC 获取我们的最新版本代码时需要通过 Azure DevOps 进行身份验证
-password 参数是对 Azure DevOps 工件源具有读/写权限的个人访问令牌的复制和粘贴。
但同样,当我这样做时,我被远程访问了 Jenkins 机器作为我的用户名,我仍然遇到同样的问题。
当包来自 Azure DevOps 工件 NuGet 源时,如何在 Jenkins 构建期间恢复 NuGet 包时修复 401 Unauthorized?
【问题讨论】:
标签: jenkins azure-devops continuous-integration nuget azure-artifacts