我正在尝试在Azure DevOps中创建一个发布管道,该发布管道会将程序包发布到Nuget.org。构建管道可以正常工作,并将包创建为构建工件。我可以发布到Azure Artifacts中托管的供稿,而我不能发布到Nuget.org。我相信问题出在服务连接上。 。
我尝试使用ApiKey,但是会引发错误
DotNet Core不支持加密的API密钥'错误
我还尝试了https://api.nuget.org/v3/index.json作为Feed URL,但这似乎没有什么作用。
日志输出。
2018-10-21T23:27:36.3177322Z ## [section]开始:Nuget Push 2018-10-21T23:27:36.3183449Z ======================================== ===================================== 2018-10-21T23:27:36.3183547Z任务:.NET Core 2018-10-21T23:27:36.3183635Z说明:构建,测试,打包或发布dotnet应用程序,或运行自定义dotnet命令。对于包命令,支持NuGet.org以及经过身份验证的提要,例如“包管理”和“ MyGet”。 2018-10-21T23:27:36.3183729Z版本:2.141.0 2018-10-21T23:27:36.3183791Z作者:Microsoft Corporation 2018-10-21T23:27:36.3183871Z帮助:More Information 2018-10-21T23:27:36.3183936Z ========================================= ===================================== 2018-10-21T23:27:37.1663123Z [command] C:\ Windows \ system32 \ chcp.com 65001 2018-10-21T23:27:37.1762529Z活动代码页:65001 2018-10-21T23:27:37.1808736Z SYSTEMVSSCONNECTION存在true 2018-10-21T23:27:37.3473599Z SYSTEMVSSCONNECTION存在true 2018-10-21T23:27:37.4707171Z SYSTEMVSSCONNECTION存在true 2018-10-21T23:27:37.4739974Z e3e8a3af-5c6c-44e9-820c-c62af0972256存在true 2018-10-21T23:27:37.4807474Z将NuGet.config保存到一个临时配置文件中。 2018-10-21T23:27:37.4833034Z将NuGet.config保存到临时配置文件中。 2018-10-21T23:27:37.4919745Z对以下URI使用身份验证信息:https://www.nuget.org/api/v2/package 2018-10-21T23:27:37.4988034Z [command] C:\ hostedtoolcache \ windows \ dncs \ 2.1.105 \ x64 \ dotnet.exe nuget push“ {package}” --source https://www.nuget.org/api/v2/package --api-密钥RequiredApiKey 2018-10-21T23:27:38.3984300Z信息:将TranslatorConsole.1.0.0.6.nupkg推到'https://www.nuget.org/api/v2/package'... 2018-10-21T23:27:38.4171650Z信息:PUT https://www.nuget.org/api/v2/package/ 2018-10-21T23:27:38.8798808Z信息:禁止https://www.nuget.org/api/v2/package/ 462ms 2018-10-21T23:27:38.9562536Z错误:响应状态代码未指示成功:403(指定的API密钥无效,已过期或没有权限访问指定的软件包。) 2018-10-21T23:27:40.2195255Z ## [错误]错误:C:\ hostedtoolcache \ windows \ dncs \ 2.1.105 \ x64 \ dotnet.exe失败,返回码:1 2018-10-21T23:27:40.2206711Z ## [错误]包无法发布 2018-10-21T23:27:40.2307763Z ## [section]完成:Nuget Push
答案 0 :(得分:2)
Github中跟踪了一个问题:DotNetCore currently does not support using an encrypted Api Key
dotnet当前不支持使用ApiKey,因为 加密密钥所需的库不可用,抱歉 不便。您应该能够使用服务端点 配置了用户名/密码组合。如果只能使用 一个ApiKey,我建议使用nuget 2. *任务来推送。
因此,您可以尝试使用Nuget 2.*
任务来推送软件包。 (添加任务->程序包-> Nuget)
或者,您可以尝试通过调用dotnet nuget push
命令来通过命令行任务将软件包推送到NuGet服务器。引用此线程:error while trying to push nuget package from VSTS
答案 1 :(得分:0)
我遇到了同样的问题-从Azure DevOps向NuGet.org feed中发布一个nuget 。尽管这个answer仍然有效,但是有一种简单的方法可以做到这一点,答案并没有太大帮助。
在NuGet.org administration中生成ApiKey。
将ApiKey作为secret variable添加到管道中。
最终产品应如下所示:
使用PowerShell任务通过以下方式更新管道YAML:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: 'nuget push $(Build.ArtifactStagingDirectory)\*.nupkg -ApiKey $(myNuGetApiKey) -Source https://api.nuget.org/v3/index.json'
您无需在此任务中进行任何更改。它可以与Azure DevOps提供的任何标准NuGet打包方式一起使用。
发布更新的yaml
管道,一切顺利。
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: NuGetToolInstaller@1
inputs:
versionSpec: '5.7.0'
checkLatest: true
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/YourProjectNameOr*ForAll.csproj'
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/YourProjectNameOr*ForAll.csproj'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: 'nuget push $(Build.ArtifactStagingDirectory)\*.nupkg -ApiKey $(myNuGetApiKey) -Source https://api.nuget.org/v3/index.json'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: 'nuget push $(Build.ArtifactStagingDirectory)\*.snupkg -ApiKey $(myNuGetApiKey) -Source https://api.nuget.org/v3/index.json'
注意:第二项任务是发布符号包。如果您的项目不支持源链接,则可以忽略此任务。 NuGet程序管理器Karam Nandwani的This文章指出,*.nupkg
和*.snupkg
botch软件包将通过一个nuget命令自动发布,但这是事实。至少现在。