多组件项目的持续交付

时间:2014-07-02 04:45:13

标签: continuous-deployment continuous-delivery

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

当我们想要将所有组件部署为系统时,就会出现问题。

由于所有这些组件都部署到单独的服务器,然后相互交互以便运行..由于某个较新版本的组件部署到其中一个服务器,因此会出现大量时间不一致。

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

我希望我能描述一下我的问题。解决这种情况的建议真的很有帮助。

谢谢,

1 个答案:

答案 0 :(得分:2)

我们使用这种模式:

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

在CI期间,我们这样做:

  1. 安装项目P和所有固定的依赖项
  2. 然后将所有依赖项更新为最新版本。
  3. 运行所有测试
  4. 如果所有测试都成功,请更新依赖项的版本并增加项目的版本。
  5. 现在该项目有一个新的稳定版本。
  6. 部署新版本(目前我们不会自动执行此操作,但在不久的将来)。
  7. 使用此模式(“project”是应用程序的容器),您可以处理版本问题。如果您有多台服务器,则更新过程应该很快,以避免同时出现不同的版本。

    <强>更新

    CI维护固定版本。我们使用python和pip,文件requirements.txt由脚本更新。我们使用版本架构YYYY.N.如果所有测试都没问题,N会增加。

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