在 Azure DevOps YAML 管道中进行身份验证以访问我的 Azure DevOps 包源(由 Paket



通过命令行步骤调用 Paket install 时,脚本在尝试访问我的 Azure DevOps 包源(使用上游源(时发出未经授权的异常 (401(。

在本地系统上运行生成步骤的工作原理是使用 Git 凭据管理器登录并进行身份验证,以便通过我的 Azure DevOps 包源解析和发布包。

我的目标是一个解决方案,在该解决方案中,我不必在Azure DevOps Yaml脚本文件中指定纯用户名和密码。 到目前为止,我已经尝试使用"az devops login"命令通过专用访问令牌进行身份验证,但直到现在我都未能让它运行。

我还阅读了有关Azure DevOps"服务连接"的信息,但这似乎对我的问题有些矫枉过正。

没有身份验证逻辑的 Yaml 脚本:

trigger:
- develop
pool:
vmImage: 'windows-latest'
variables:
solution: './*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: CmdLine@2
inputs:
script: 'InstallPackages.cmd'
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
Paket version 5.215.0
Resolving packages for group Main:
Performance:
- Resolver: 544 milliseconds (1 runs)
- Runtime: 111 milliseconds
- Blocked (retrieving package versions): 433 milliseconds (1 times)
- Average Request Time: 57 milliseconds
- Number of Requests: 4
- Runtime: 1 second
Paket failed with
-> Unable to retrieve package versions for 'Microsoft.VisualStudio.Threading.Analyzers'
...
-> Could not load resources from 'https://worues.pkgs.visualstudio.com/_packaging/Fact4CoreFeed/nuget/v3/index.json': Unauthorized (401)
在 Azure DevOps

YAML 管道中进行身份验证以访问我的 Azure DevOps 包源(由 Paket 命令使用(

的最佳方式

如果不想在 Azure DevOps Yaml 脚本文件中指定纯用户名和密码,可以通过nuget.config文件中的专用访问令牌进行身份验证。

示例nuget.config现在如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="VSTSFeed" value="https://dev.azure.com/_packaging/FeedName/nuget/v3/index.json " />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSourceCredentials>
<VSTSFeed>
<add key="Username" value="%USER_VARIABLE%" />      
<add key="ClearTextPassword" value="%PAT%" />
</VSTSFeed>
</packageSourceCredentials>
</configuration>

注意:由于密码密钥是"ClearTextPassword",如果您使用清晰的 PAT 保存nuget.config,这是一个糟糕的主意和安全问题,因此最好创建变量以在变量选项卡中存储 PAT 并将变量类型更改为 secret。

希望这有帮助。

我通常一直在这样做,它允许您使用本机身份验证,因此您不必在 nuget.config 中配置身份验证:

- task: DotNetCoreCLI@2
displayName: Dotnet restore
inputs:
command: restore
projects: '$(Parameters.RestoreBuildProjects)'
feedsToUse: select
vstsFeed: feed_name_goes_here

唯一有效的方法是通过Paket.dependencies文件传递令牌,例如

框架: NetStandard2.0, NetcoreApp2.2 策略:最大 存储:无 来源 https://worues.pkgs.visualstudio.com/_packaging/Fact4CoreFeed/nuget/v3/index.json 用户名:"匿名"密码:" ...

当将包馈送的令牌访问权限从完全权限切换回读/写权限时,它仍然有效。不知道为什么一开始就没有。

感谢您的帮助

相关内容

  • 没有找到相关文章

最新更新