Jenkins无效的Git版本号

3
在Jenkins中,我正在使用XML API获取提交的SHA(s),例如:

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

我将其放入包装器中,因为通常它包含多个SHA,我将进一步处理这些SHA。
但是其中一个SHA始终无效...
<SHAS>
<SHA1>cbf26ebac6b4b3860a794c0b1ad86758e7757a3a</SHA1>
<SHA1>7e861132ce428911585a818107ba35c44cf12bbf</SHA1>
</SHAS>

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

提交 'cbf26ebac6b4b3860a794c0b1ad86758e7757a3a' 在存储库 'test' 中不存在。

有人知道为什么我们在Jenkins上得到无效的SHAs以及如何解决这个问题吗?
更新:
完整的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元素?测试存储库包含什么?您使用存储库执行了哪些确切步骤?您使用的是哪些版本?也许该修订版未从远程存储库中获取? - Stefan Hanke
@StefanHanke 我已经更新了问题,加入了lastBuiltRevision。 - BadmintonCat
为什么会有两个 lastBuiltRevision 元素?你的 git SCM 配置是怎样的?我没能复现那个问题。同时看起来这个元素没有 具体的问题 - Stefan Hanke
2个回答

0

我猜测 scm 插件会在构建完成后解析构建日志来提取版本数据。如果你使用 Multiple SCM plugin、具有多个 gitcheckout 命令的 Jenkins Pipeline 或者 Jenkins Shared Library,很有可能会从多个仓库获得多个 scm 版本(我们目前的工作中有 6 个...)。

我不知道是否有可能忽略 SCM 版本解析过程中的部分日志,否则你可能需要在请求的一侧进行一些过滤。如果不同的版本在日志中按顺序出现,那么你可以选择始终丢弃第一个或第二个版本。


0

可能的一种情况是:

  • Jenkins在其lastBuiltRevision中记录了origin/master的SHA1
  • 有人使用git push --force强制推送并覆盖了SHA1,导致历史记录被更新

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接