visual-studio - 将 nuget 包从 Visual Studio 推送到 devops 工件
问题描述
在构建解决方案时,我正在尝试自动将 nuget 包从 Visual Studio 推送到 Azure Devops Artifact。我可以在我的本地 nuget 存储库上自动执行此操作,但我无法在我的 Azure 存储库中执行此操作。它因 401(未经授权)而失败,因为我无法在命令上放置凭据并且未使用 VS 凭据。为了自动化发布,我在项目文件上设置了这个命令:
<Target Name="NugetAdd" AfterTargets="Pack">
<exec command="nuget add $(OutputPath)$(PackageId).$(PackageVersion).nupkg -source d:\NuGetLocal" />
<exec command="nuget push -source MyAzureRepo -ApiKey VSTS $(OutputPath)$(PackageId).$(PackageVersion).nupkg" />
</Target>
第一个命令执行成功,第二个命令失败,因为请求凭据。如果我在 powershell 中运行命令,它会毫无问题地运行,要求提供凭据。有办法让它工作吗?
解决方案
您可以尝试将您的天蓝色工件提要的凭据放在您的 nuget.config 文件中。
首先,您需要使用Read&Write Packaging范围从 Azure devops生成个人访问令牌。
然后,您可以为您的 nuget 源提供 Azure 提要的凭据。请参见下面的示例:
<configuration>
<packageSources>
<add key="AzureArtifactFeedName" value="https://pkgs.dev.azure.com/org/_packaging/AzureArtifactFeedName/nuget/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<AzureArtifactFeedName>
<add key="Username" value="any" />
<add key="ClearTextPassword" value="{Personal Access Token}" />
</AzureArtifactFeedName>
</packageSourceCredentials>
</configuration>
您还可以运行以下命令来添加提要凭据:
sources Add -Name "AzureArtifactFeedName" -Source "https://my.pkgs.visualstudio.com/_packaging/AzureArtifactFeedName/nuget/v3/index.json" -username any -password PersonalAccessToken -ConfigFile path/to/Nuget.config -StorePasswordInClearText
然后可以自动推送包。
上述解决方案可能会引起安全问题,因为它在 nuget.config 文件中显式写入 PAT。
使用 Azure 管道自动打包和推送包(使用NuGet 任务运行pack
和push
命令)可能是更好的解决方法。
有关更多信息,请参阅此处的文档。
推荐阅读
- c# - C# 防止已启动的应用程序在控制台中写入
- vue.js - 事件有效负载中的 Vue.js ReferenceError
- angular - 我如何在 mat-select 中迭代 ng-repeat
- c++ - 为什么返回类型上的 'const' 限定符对标有 __forceinline/inline 的函数没有影响?
- jenkins - 使用 OWASP dependencyCheck 为 java 模块生成单独的报告,而不是一份大报告
- c# - ASP.NET Core 3.0 未正确路由
- python - pandas大数据框的最佳实践(效率)数据操作
- ubuntu - 如何正确安装和运行 gdb?
- amazon-cloudformation - 在 CloudFormation 中为自定义资源引入条件
- vba - 将文件复制到另一个创建的文件夹