我正在寻找有关在多存储库环境中管理库的一些建议。在我工作的公司,我们有两个定制的“构建系统”,老实说,两者都非常糟糕。我接到了改进此设置的艰巨任务。
我们在多存储库环境中运行,其中一些存储库包含库,其他存储库是依赖于这些库的微服务。我们的大部分代码都是用 Python 编写的。以下是我们当前本地环境结构的概述:
├── python_applications
│ ├── APP1
│ │ ├── requirements.txt
│ │ ├── src
│ │ └── test
│ └── APP2
│ ├── requirements.txt
│ ├── src
│ └── test
└── python_libraries
├── A
│ ├── requirements.txt
│ ├── src
│ └── test
└── B
├── requirements.txt
├── src
└── test
注:
A, B, APP1, and APP2 are in separate Git repositories.
B depends on A (along with other pip dependencies)
APP1 requires A.
APP2 requires A.
在研究更标准化的解决方案时,我遇到了 Bazel,它看起来很有前途。但是,我可以在以下几点上使用一些指导:
APP1和APP2应该有自己的MODULE并且只将BUILD放在A或B中,还是应该有不同的结构?注意:每个“模块”都有一个 requiremets.txt 文件。
如果APP2使用Python 3.11,APP1使用Python 3.8,但两者都依赖于A,我应该如何使用Bazel处理这种情况?
我应该如何在本地开发环境中使用 Bazel,特别是当我需要使用我正在积极修改的库的本地版本时(参考 git_repository(...))?
在 CI/CD 管道中利用 Bazel 生成用于测试、登台和生产的 Docker 映像的最佳方法是什么?
任何学习技巧、见解或资源将不胜感激!