首页 > 解决方案 > 将 Powershell 模块发布到 bintray nuget repo

问题描述

我在 bintray 中创建了一个 nuget 存储库,我想发布一个 Powershell 模块。我在 Bintray 中创建了一个包并添加了一个版本。

首先,我添加了存储库:

Register-PSRepository -Name "Bintray" -SourceLocation "https://api.bintray.com/nuget/{organization}/{repository}" -PublishLocation "https://api.bintray.com/nuget/{organization}/{repository}" -InstallationPolicy Trusted

然后,我尝试发布:

Publish-Module -Path . -Repository "Bintray" -NugetApiKey {MyApiKey}

Publish-PSArtifactUtility:无法发布模块“MyModule”:“响应状态码不表示成功:401(未授权)”

我检查了我的 API 密钥,我的用户是“成员”,并且成员对存储库拥有“发布”权限。对存储库没有限制。Bintray 中包的名称与我要发布的模块的名称相匹配。

我还尝试附加-Credential {UserName}到发布命令,并在出现提示时输入我的密码。结果总是一样的。

我错过了什么?如何将 Powershell 模块发布到 Bintray nuget 存储库?


编辑更新:当我尝试使用 bintry 帐户管理员时,我收到错误 405“不允许”。使用 PowerShellPublish-Module并直接调用 nuget 确实如此。curl给我一个 400 错误:“上传时发生错误”,bintray-cli 也是如此。Web UI 提供一般错误消息。

这篇文章说它适用于 Artifactory;jfrog 将 bintray 称为“成熟的 nuget 存储库”。那么为什么这不起作用呢?

标签: powershellnugetartifactorybintray

解决方案


正确指定身份验证信息和 URL 后,我遇到了问题编辑中详述的 400 / 405 错误(“上传时发生错误”)。

我们确定失败是由<tags>包 .nuspec 文件中的元素超过 1024 个字符引起的。这不是已发布的限制,也不是格式的固有限制(nuget.org 宣传它们最多支持 4000 个字符)。删除或截断标签允许将包上传到 bintray。


推荐阅读