Maven多模块项目和Jenkins的Git提交历史问题

Maven多模块项目和Jenkins的Git提交历史问题,git,maven,jenkins,multi-module,Git,Maven,Jenkins,Multi Module,说明: 我们有一个多模块maven项目,我们使用Jenkins作为CI工具。我的主要目标是检测哪些模块受到上次提交的影响,并只构建那些模块(及其依赖项)。我在SO和博客上做了几次搜索,并决定采用这种方式: 将某一分支克隆成詹金斯 git rev list——parents-n1(获取当前提交和上一次提交之前的一次提交的哈希值。它给我两个输出hash1和hash2) git diff——名称状态(获取最后两次提交之间的差异) 此行后的输出为: M moduleA/src/ma

说明:

我们有一个多模块maven项目,我们使用Jenkins作为CI工具。我的主要目标是检测哪些模块受到上次提交的影响,并只构建那些模块(及其依赖项)。我在SO和博客上做了几次搜索,并决定采用这种方式:

  • 将某一分支克隆成詹金斯
  • git rev list——parents-n1
    (获取当前提交和上一次提交之前的一次提交的哈希值。它给我两个输出hash1和hash2)
  • git diff——名称状态
    (获取最后两次提交之间的差异)
此行后的输出为:

   M       moduleA/src/main/java/path/to/changed/files 
   M       moduleB/src/main/java/path/to/changed/files
  • 因此,我们编写了一个bash脚本,只从上面的输出中获取“moduleA,moduleB”字符串,并将其放入:
mvn安装-amd-pl${changed_module_names}

一切正常。但还有另一个问题

问题:

假设我在本地机器中对代码做了一些更改,并且我知道在远程存储库中也有一些更改。因此,我使用以下命令推送到远程:

  • 吉特拉力
  • git添加/提交
  • git推送源
在执行这些命令之后,我可以在远程存储库中看到一个(!)提交历史记录,这样就可以了:

但在第二种情况下,假设我不知道远程存储库中的更改。因此,我使用:

  • git添加/提交
  • git推送源
  • 它给出了错误,我需要拉
  • 吉特拉力
  • git推送源
在这些步骤之后,我在远程存储库中看到两个提交历史:(“test”是我的实际提交)

因此,它与我们的詹金斯剧本产生了冲突:

git版本列表--父项-n1`

因为在本例中,它输出3个散列,而我期望2个输出

我如何处理这种情况?有可能有人会在git-push之前忘记git-pull,这会破坏我们的管道


如果您需要更多说明,请告诉我

您有多少个模块?构建需要多长时间?测试需要多长时间?您是否已经使用了mvn-T4软件包?某种PoC——时间不多,大约5分钟。但是为什么要重建和重新部署未更改的模块呢?好的,5分钟。您已经尝试过使用
mvn-t4..
?我不确定这是否真的值得付出努力…增量模块生成器在我的脑海中。如果我找不到当前情况的解决方案,我会试试。不,我没有试过。我考虑的不是构建时间