2

在我们的项目中,我们有多个组件由具有单独 git 存储库的不同团队开发。所有组件都有提交作业和打包作业,并将工件发布到工件。

当我们想要将所有组件部署为一个系统时,问题就来了。

由于所有这些组件都部署到单独的服务器上,然后彼此交互以发挥作用。由于将某些较新版本的组件部署到其中一台服务器上,因此会出现很多时间不一致。

例如。我有组件 A、B、C 并希望在部署和测试管道中移动以下版本 A1、B1、C1。我如何确保没有更新版本的组件部署到 QA 环境(服务器)。我使用 Jenkins 作为我的 CI/CD 工具。看来我需要一些集成或轻量级配置管理工具来管理我的系统的版本控制作为一个整体,包括我可以在部署管道中推广的所有组件。

我希望我能描述我的问题。解决这种情况的建议将非常有帮助。

谢谢,

4

1 回答 1

3

我们使用这种模式:

  • 每个使用我们产品的客户都有一个“项目”:它几乎不包含代码,只包含配置。我们使用这个命名方案:coreapp_customerslug。
  • 该项目依赖于 N 个应用程序。该项目固定所有确切版本的依赖项。

在 CI 期间,我们这样做:

  1. 安装项目 P 和所有固定的依赖项
  2. 然后将所有依赖项更新到最新版本。
  3. 运行所有测试
  4. 如果所有测试都成功,则更新依赖项的版本并增加项目的版本。
  5. 现在该项目有一个新的稳定版本。
  6. 部署新版本(目前我们不会自动执行此操作,但在不久的将来)。

使用这种模式(“项目”是应用程序的容器),您可以处理版本问题。如果您有多台服务器,更新过程应该很快,以避免同时使用不同的版本。

更新

CI 维护固定版本。我们使用 python 和 pip 并且文件 requirements.txt 由脚本更新。我们使用版本模式 YYYY.N。如果所有测试都正常,N 会增加。

注意:如果 app1 有最新版本 N,这并不意味着它适用于所有项目。如果您有两个项目:P1 和 P2,则可能会发生这种情况:最新版本 N 的 app1 在项目 P1 中运行良好,但在 P2 中失败。这意味着您无法创建项目 P2 的新稳定版本。有时这很烦人,但这可以保持持续更新。我们总是在我们的项目中使用最新版本的应用程序。

于 2014-07-02T05:03:18.357 回答