将 Powershell 模块发布到 bintray nuget repo

Publish Powershell module to 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 : Failed to publish module 'MyModule': 'Response status code does not indicate success: 401 (Unauthorized)'

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

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

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


编辑更新:当我尝试使用 bintry 帐户管理员时,我反而收到错误 405“不允许”。使用 PowerShell Publish-Module 并直接调用 nuget 确实如此。 curl 给我一个 400 错误:“上传时出错”,bintray-cli 也是如此。网络 UI 给出了一般性错误消息。

这个 article 说它适用于 Artifactory; jfrog 将 bintray 称为“完整的 nuget 存储库”。那为什么这行不通呢?

澄清一下,JFrog 提供的唯一文档就在这里,帮助不大:

https://jfrog.com/knowledge-base/how-to-work-with-powershell-modules-and-nuget-repository-in-artifactory/

我们能够在 bintray 中创建一个 nuget 存储库,并尝试使用 bintray 中的等效 URL 而不是 artifactory 但没有成功。在这种情况下,我们确实需要适合向外部发布给客户的东西 (bintray),而不是内部工件管理 (artifactory)。

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

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