【发布时间】:2021-12-04 10:03:03
【问题描述】:
我正在用 Python 开发一个服务,它有一个包作为依赖项。我自己开发了这种依赖关系。
我有一个私有 PyPI 服务器,其中包含主分支中每个提交的工件(轮文件)(对于两个包)。
我想创建一个 CI,它将使用 pip 从私有 PyPI 服务器安装依赖项(因为它比每次都从源代码本身安装更快更容易)。
项目依赖示例:
包 A 需要包 B
(它们都在私有存储库中,而不是公共包中)。
我的问题是,如果我试图在 B 存储库合并到 master 之后立即在 A 存储库上执行 CI,
私有 PyPI 服务器还没有最新版本的 B(今天有一个 Jenkins 作业,每次合并到 master 后都会激活并将 B 轮上传到私有 PyPI 服务器,
但是构建包需要几分钟)。结果是包 A 可能包含旧版本的 B,而不是使用最新版本的 B。
对如何改进这个过程有什么建议吗?
与直接从 Gitlab 安装相比,从私有 PyPI 安装显着缩短了安装时间。
顺便说一句,今天我使用的是 Gitlab 的企业版和 Jenkins。
谢谢
【问题讨论】:
-
我们通过 Reliza Hub 支持这种行为(我正在开发该工具)——基本上,这个想法是在 CI 阶段——工件创建——你将依赖元数据提交给 Reliza Hub。然后 Reliza Hub 将为您创建捆绑包 - 然后您在 CD 阶段解析这些捆绑包。您可以在 DevOps Discord 上找到我 - discord.gg/UTxjBf9juQ - 将帮助您进行设置。
标签: python build continuous-integration multiple-repositories