【问题标题】:Maven/Jenkins - Automatic releases of project and dependenciesMaven/Jenkins - 项目和依赖项的自动发布
【发布时间】:2015-02-04 16:41:42
【问题描述】:

我在 Maven 项目中工作,在多个级别上具有多个依赖项,每次执行主要项目的发布时,我们都必须手动创建很多次要版本。我将尝试解释情况。 我的情况如下:

项目A

  1. 依赖 B
    • 依赖关系E
    • 依赖 F
      • 依赖G
  2. 依赖 C
    • 依赖 G
      • 依赖H
  3. 依赖D

每个依赖都是一个独立的maven项目,项目内部存在很多依赖级别。如果您修改依赖项 G 的某些代码并且您的意图是生成项目 A 版本,您必须:

  1. 生成项目 G 的发布
  2. 更新项目 F 的依赖 G 版本
  3. 生成项目 F 的发布
  4. 更新项目 B 上的依赖 F 版本
  5. 生成项目 B 的发布
  6. 更新项目 A 的依赖 B 版本
  7. 生成项目 A 的发布

我的目的是自动化这个过程。 google了几天也没找到类似的问题。

您能想出一些解决方案来自动生成级联版本的任务吗? 我正在考虑基于 maven 和 Jenkins 任务的解决方案,但它看起来非常复杂。

【问题讨论】:

  • 我能问一下 A、B、F 和 G 之间的关系吗?有一些图书馆和一些服务吗? A、B、F 和 G 可以独立发布吗?是否有任何项目具有编译时依赖项?是否有任何项目只有运行时依赖项?
  • 另外,“发布”是什么意思,您是否也“部署”,有什么不同吗?例如,这些“版本”是否只是制作了一个像 nexus 这样的工件,还是这些版本实际上部署到服务器?
  • 也总是必须以这种方式发布这些内容吗?或者有时它们是独立发布的(作为微服务和库),但有时它们必须作为任意集合发布。例如,更新交叉安全性或记录许多通常独立部署但今天必须一起发布的东西?
  • 请注意,现在有一个 devops.stackexchange.com 网站处于测试阶段,如果这个问题可能会吸引有此特定场景经验的人的更多关注。

标签: maven jenkins


【解决方案1】:

也许您可以结合使用Build Flow pluginMaven Release plugin 来发布您的Maven 项目。

Build Flow 插件将帮助您设计构建顺序(并尊重您的项目依赖项)。

这只是一个想法,我没有测试这个解决方案。

【讨论】:

    【解决方案2】:

    在 Jenkins 中,您可以使用不同的存储库来下载并进行构建,在这种情况下,您将执行发布。希望您使用的是 ma​​ven-release-plugin。因此,您可以使用这个 jenkins 的功能来下载您提到的所有项目,并从包含每个项目作为模块的 repo 创建或下载 pom.xml 文件(只是为了实现您的目标)。

    jenkins 工作区的结构应该是这样的:

    • pom.xml
    • 模块A pom.xml
    • 模块B pom.xml
    • 模块C pom.xml

    如果需要,我的建议是将它们分组到存储库中。

    【讨论】:

      猜你喜欢
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2018-10-20
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多