【问题标题】:Jenkins Invalid Git RevisionsJenkins 无效的 Git 修订
【发布时间】:2018-02-13 05:01:35
【问题描述】:

在 Jenkins 中,我使用 XML API 来获取提交的 SHA,例如

http://jenkins/view/job/test/470/api/xml?xpath=//lastBuiltRevision/SHA1&wrapper=SHAS

我将它放在一个包装器中,因为它通常包含多个 SHA,我将进一步处理这些。

但是其中一个 SHA 始终无效...

<SHAS>
<SHA1>cbf26ebac6b4b3860a794c0b1ad86758e7757a3a</SHA1>
<SHA1>7e861132ce428911585a818107ba35c44cf12bbf</SHA1>
</SHAS>

第二个 SHA 很好,但是当我在我们的 GIT 存储库提交中检查第一个 SHA 时,它会导致一个错误页面:

提交 'cbf26ebac6b4b3860a794c0b1ad86758e7757a3a' 不存在于 存储库“测试”。

有谁知道为什么我们在 Jenkins 上得到无效的 SHA 以及如何解决这个问题?

更新:

完整的 lastBuiltRevision ...

<wrapped>
    <lastBuiltRevision>
        <SHA1>cbf26ebac6b4b3860a794c0b1ad86758e7757a3a</SHA1>
        <branch>
            <SHA1>cbf26ebac6b4b3860a794c0b1ad86758e7757a3a</SHA1>
            <name>origin/master</name>
        </branch>
    </lastBuiltRevision>
    <lastBuiltRevision>
        <SHA1>7e861132ce428911585a818107ba35c44cf12bbf</SHA1>
        <branch>
            <SHA1>7e861132ce428911585a818107ba35c44cf12bbf</SHA1>
            <name>refs/remotes/origin/develop</name>
        </branch>
    </lastBuiltRevision>
</wrapped>

【问题讨论】:

  • 您能否添加该作业的完整lastBuiltRevision XML 元素?测试回购包含什么?您对 repo 执行了哪些具体步骤?你用什么版本?也许该修订不是从远程仓库中获取的?
  • @StefanHanke 我用 lastBuiltRevision 更新了问题。
  • 为什么有两个lastBuiltRevision 元素?该工作的 git SCM 配置是什么?我没有设法重现这一点。看起来还有关于那个元素的no specific issue...

标签: git jenkins continuous-integration git-commit sha


【解决方案1】:

我的猜测是 scm 插件在构建运行后解析构建日志以提取修订数据。如果您使用Multiple SCM plugin,一个带有多个gitcheckout 命令或Jenkins Shared Library 的Jenkins 流水线,很可能最终会从多个存储库中获得多个scm 修订版(我们目前有6 个在我们的工作中) ...)。

我不知道是否可以忽略部分日志以进行 SCM 修订解析,否则您将不得不对您的请求进行一些过滤。如果不同的修订在日志中按顺序发生,那么您可以选择始终丢弃第一个或第二个。

【讨论】:

    【解决方案2】:

    一种可能的情况是:

    • Jenkins 在其lastBuiltRevision 中记录了原始/主服务器的 SHA1
    • 有人强制推送 (git push --force) 并用新的历史记录覆盖 SHA1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2015-01-29
      • 2013-01-15
      • 1970-01-01
      • 2021-06-06
      • 2010-12-03
      相关资源
      最近更新 更多