我有一个库(我们称它为my_lib
)和一个应用程序() ,它们my_app
由两个 Python 包构成,我的工具在. 在实践中,我经常开发一个功能,将底层添加的功能添加到然后在其中使用(以在另一个设置中重用库)。my_app
my_lib
requirements.txt
my_app
my_lib
my_app
my_lib
我使用Gitflow开发原理进行开发,并在两个包的分支中为这两个包设置了 CI 阶段feature
(让我们称之为它们feature/my_feature_in_lib
,并feature/my_feature_in_app
在此处为参数起见)。在 CI 中,例如,单元测试和包上传到(私有)PyPI 已经完成。
当然,我不想在未正确测试之前合并feature/my_feature_in_lib
到集成分支中my_lib
,这通常与feature/my_feature_in_app
CI 结合使用。
理想情况下,我想feature/my_feature_in_lib
创建一个工件/包,然后my_app
在它的requirements.txt
. 我目前使用setuptools_scm进行类似 SemVer 的版本号自动递增(例如0.10.1.post1
)。但是,如果并行使用多个功能分支,此方案可能会导致版本重复(这就是我目前仅在集成分支上创建工件的原因)。
C# 世界中的GitVersion等工具允许版本标识符包含功能分支特定标识符,例如1.2.3-alpha.feature-a682956d
. 但是,PEP-440禁止使用此类版本控制方案,并且 twine 甚至拒绝此类上传。
在保持类似于 SemVer 的自动版本增量的同时解决这些包边界上的依赖问题的最佳方法是什么?
提前致谢!