git repo 的 CD 最佳实践,其中包含多个包且它们之间存在依赖关系

问题描述 投票:0回答:0

我创建了一个包含 2 个包的 git 存储库:

pkg1
pkg2
.

pkg1
pkg2
的依赖项。

我想把它们分开,因为一个人只能使用

pkg1

在我们的 CI/CD 过程中,创建了一个合并请求。合并后,开发人员为每个部署的包及其版本创建一个 git 标签,这会触发一个管道,该管道使用 git 标签中的版本部署包。

现在假设我正在开发一项功能,该功能会改变

pkg1
中的内容。我想要
pkg2
包含
pkg1
的变化所以我也想更新它的版本。

pkg2
requirements.txt(它是一个python包,但它无关紧要)我想升级
pkg1
的所需版本,但我在管道中找不到正确的方法。我们找到了几个选项,但每个选项都有问题:

  1. 我可以在 ```pkg2`` 要求中更新
    pkg1
    的版本作为合并请求的一部分,但这很糟糕,因为我在创建包之前依赖它。如果另一个开发人员在我之前合并代码并“捕获”那个版本怎么办?
  2. 我可以在
    pkg1
    pkg1
    pkg2`` requirements but this is unsafe because someone can deploy 
    pkg2
    and an application that uses
    pkg1```中删除
    might rebuild itself and use a different version of
    的特定版本,而没有人期望。
  3. pkg1
    需求中为
    pkg2
    的包升级创建一个单独的合并请求。这将使 CI/CD 过程变得更重。并假设我将拥有更多依赖性更高的包。这样,每次更新可能会消耗多个合并请求,与依赖树的深度一样多。

在这种情况下,正确的策略是什么?

git version packaging cicd
© www.soinside.com 2019 - 2024. All rights reserved.