Version control 在常春藤推广几个模块(集成->;里程碑)

Version control 在常春藤推广几个模块(集成->;里程碑),version-control,deployment,ant,ivy,Version Control,Deployment,Ant,Ivy,Ivy非常适合管理依赖关系,但它并不意味着要跨多个模块处理整个软件生命周期。这就是说,它确实有几个似乎支持它的特性(例如),并且暗指能够“通过一些工作”促进对里程碑或发行版的集成修订 不幸的是,我还没有找到关于如何管理dev->test->deploy周期的明确指导。以下是我想要实现的一些目标: (假设开发人员通常在本地工作区中跨多个模块工作) 开发人员可以在本地发布对模块的更改,以便工作区中的其他模块可以获得更新的工件 开发人员可以使用一个命令将一个版本指定为“准备部署测试” 测试仪可以通过一

Ivy非常适合管理依赖关系,但它并不意味着要跨多个模块处理整个软件生命周期。这就是说,它确实有几个似乎支持它的特性(例如),并且暗指能够“通过一些工作”促进对里程碑或发行版的集成修订

不幸的是,我还没有找到关于如何管理dev->test->deploy周期的明确指导。以下是我想要实现的一些目标:

(假设开发人员通常在本地工作区中跨多个模块工作)

  • 开发人员可以在本地发布对模块的更改,以便工作区中的其他模块可以获得更新的工件
  • 开发人员可以使用一个命令将一个版本指定为“准备部署测试”
  • 测试仪可以通过一个命令将一个版本指定为“准备生产”
  • 开发人员可以从源代码重新生成任何版本,并正确获取相应的依赖项(也称为可重复构建)
  • 我非常清楚的是:

    • 修订版
      状态
      应用于表示该修订版是否仅用于开发、是否已准备好进行测试或是否已准备好进行生产
    • branch
      属性应足以处理不同的项目分支
    以下是我正在努力解决的问题:

    如何促进集成构建 假设我已在我的工作区中签出这些模块:

    现在我对模块a很满意,并决定在我的工作区中使用签出的版本发布里程碑。回购协议中需要发生的是:

    • e-1.0-RC1
      发布
    • d-1.1-RC2
      发布,作为依赖项引用
      e-1.0-RC1
    • c-2.0-RC1
      发布,作为依赖项引用
      d-1.1-RC2
    • b-3.3-RC1
      发布,作为依赖项引用
      e-1.0-RC1
    • 最后,
      a-7.1-RC2
      被发布,作为依赖项引用
      c-2.0-RC1
      b-3.3-RC1

    如果我试着用我自己的方法来解决这个问题,我可能会做一些工作区管理,ivy.xml查找和替换,等等。在我打开那罐蠕虫之前,我想听听一些意见。解决这个问题的最佳方法是什么?

    您可以使用递归交付以更高的状态发布模块及其依赖项

    以您的例子:

    • e-1.0-RC1
      以集成状态发布
    • d-1.1-RC2
      以集成状态发布,作为依赖项引用
      e-1.0-RC1
    • c-2.0-RC1
      以集成状态发布,作为依赖项引用
      d-1.1-RC2
    • b-3.3-RC1
      以集成状态发布,作为依赖项引用
      e-1.0-RC1
    • a-7.1-RC2
      以集成状态发布,引用
      c-2.0-RC1
      b-3.3-RC1
      作为依赖项
    • 最后,您决定将
      a-7.1-RC2
      提升为
      里程碑
      状态,因此您将执行重复交付()。这将递归调用状态低于
      里程碑
      的每个依赖项的
      交付目标
      ,并以
      里程碑
      状态发布它
    这样做的好处是,您不需要(或希望)在工作区中签出每个项目,只需
    a
    。这也意味着创建部署管道和使用CI服务器更容易:

    • a
      运行单元测试
    • 构建
      a
    • a
      发布为
      integration
    • a
      部署到系统测试环境
    • 运行一些系统测试
    • a
      integration
      提升到
      millestone
      (提升其依赖性)
    • a
      部署到验收测试环境
    • 运行一些验收测试
    • a
      milestone
      升级到
      release
      (这将提升其依赖性)
    • a
      部署到生产(或上传到下载站点)
    管道在任何时候都不需要访问依赖项目,而且,由于递归交付是通用的,当您添加或删除依赖项(通过ivy.xml文件)时,您不需要更改管道中的任何内容


    我已将此答案标记为社区wiki。还有谁愿意进一步阐述或纠正我的错误吗?

    你是怎么做的

    • 将里程碑升级到发行版(这将提升其依赖性)
    我正计划进行检索和发布。有更好的办法吗