完全覆盖工件 PyPI 包

Posted

技术标签:

【中文标题】完全覆盖工件 PyPI 包【英文标题】:Full overriding artifactory PyPI package 【发布时间】:2017-12-22 09:19:51 【问题描述】:

我希望能够为我们的用户透明地覆盖上游 PyPI 中的一些包。

我设置了以下 Artifactory:

本地存储库 X-local 远程存储库 X-remote(指向 PyPI) 虚拟存储库 X-virtual

对于我的环境的一些特殊性,我想确保用户只从 X-local 下载包“mypackage”。

目前我已经包含了一条规则来禁止 X-remote 中的表达式“**/mypackage-*”,并且我将“mypackage”的内部版本发布到 X-local。在“mypackage”有***或发布新版本之前,这一切都很好。

似乎当 pip 在“X-virtual”中列出“mypackage”的所有工件时,它不仅找到了 X-local 中的那些,而且还找到了 X-Remote 中的那些。有没有办法阻止它?简而言之,防止列出来自远程的所有包。

【问题讨论】:

如果您希望为您的用户阻止“列出来自远程的所有包”,为什么不直接删除他们对该“X-Remote”存储库的权限?通过这样做,他们将无法缓存任何内容,甚至无法搜索本地存储库中没有的任何内容。 我想阻止单个包的所有版本和平台。不是所有的包 【参考方案1】:

"**/*mypackage*" 添加到黑名单解决了这个问题。如果你有像“mypackage2”这样的包,这可能会导致问题,但它适用于我的用例。

根据 JFrog 支持的建议

【讨论】:

以上是关于完全覆盖工件 PyPI 包的主要内容,如果未能解决你的问题,请参考以下文章

发布工件覆盖 Gradle 中的其他工件

将所有运行时工件从 TravisCI 部署到 PyPi

在 Artifactory 中阻止覆盖 NuGet 工件

覆盖Artifactory工件(和历史)?

使用 maven 程序集插件覆盖资源文件

Travis pypi 包版本