【问题标题】:Commit hash of artefacts on Nexus when deployment is failed部署失败时在 Nexus 上提交人工制品哈希
【发布时间】:2020-07-30 10:23:51
【问题描述】:

假设我们有一个具有以下结构的 maven 项目:

projectAlfa (e.g. Snapshot)
 - componentA
 - componentB
 - componentC

在人工制品部署到 Nexus 的中期(例如上传 ComponentC 时),Jenkins 作业由于网络问题而失败。

问题:

  • 前两个组件(A 和 B)是否会上传到 nexus?
  • 如果我请求 projectAlfa 的提交哈希,我会得到什么? projectAlfa 的组件是否会具有不同的状态/提交哈希(例如,组件 A 和 B 的工件具有不同的状态/提交哈希然后 C)?
    我们的目标是获取快照工件的 git commit 哈希。我需要这些信息,因为它可以帮助我定义,基于哪个 git commit-hash 是在 nexus 上构建的上传快照工件。

【问题讨论】:

  • 我猜你说的是 git commit 哈希?它们与 Maven 有什么关系?
  • 目标是获取快照工件的 git 提交哈希。我需要这些信息,因为它可以帮助我定义,基于哪个 git commit-hash 是在 nexus 上构建的上传快照工件。我更新了问题
  • 构建是否会以任何方式影响此哈希?我的意思是,我不明白失败的构建如何影响 git commit 哈希。
  • 假设 master 分支中有两个提交:例如xxxxx1,xxxxx2。在提交 xxxxx1 之后,项目(以及所有组件)将成功构建并部署到 nexus 但是在提交 xxxxx2 之后,如果可能的话,会进行部分部署(参见问题 1)。因此,如果我得到部署在 nexus 上的所有人工制品的哈希提交,它们是否相同,这是问题 2?
  • 部分部署是可能的。但是工件的哈希提交是什么?我只知道 git 存储库的哈希提交。我的意思是,如果您尝试从 git 提交构建三个工件,两个通过,一个不通过,这不好。但是您如何“看到”已部署工件中的哈希提交?

标签: maven jenkins commit nexus


【解决方案1】:

好的,我开始明白了。

如果您构建项目,并且 A 和 B 被部署,但 C 没有,那么 A 和 B 的最新 SNAPSHOT 将属于与 C 不同的提交哈希。

maven 部署插件有一个实验性的“deployAtEnd”参数来避免这种情况。

【讨论】:

  • 感谢建议以避免这种情况。作为实验参数,有没有其他选择可以避免这种情况?
  • 改善您的网络?您描述的案例似乎真的很少见(至少,关于网络故障),在这种情况下,我会重新构建。
猜你喜欢
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2013-01-12
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多