Jenkins Invalid Git Revisions
问题描述:
在Jenkins中我使用XML API来获取提交的SHA,Jenkins Invalid Git Revisions
http://jenkins/view/job/test/470/api/xml?xpath=//lastBuiltRevision/SHA1&wrapper=SHAS
我把它放在一个包装,因为它们可能包含不止一个SHA,我要进一步处理这些。
然而SHA值始终是无效的一个...
<SHAS>
<SHA1>cbf26ebac6b4b3860a794c0b1ad86758e7757a3a</SHA1>
<SHA1>7e861132ce428911585a818107ba35c44cf12bbf</SHA1>
</SHAS>
第二SHA是好的,但是当我在这里检查的第一个SHA我们GIT回购承诺它会导致一个错误页面:
提交'cbf26ebac6b4b3860a794c0b1ad86758e7757a3a'在 存储库'test'中不存在。
有谁知道我们为什么会在Jenkins上获得无效的SHA以及如何解决这个问题?
UPDATE:
完整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>
答
我的猜测是,SCM插件解析生成日志生成运行后提取的修订数据。如果你使用Multiple SCM plugin,一个Jenkins管道有多个git
或checkout
命令或一个Jenkins Shared Library,很可能最终得到来自多个存储库的多个scm修订版(我们目前在我们的作业中有6个...)。
我不知道是否有可能忽略SCM版本解析的部分日志,否则您必须在请求的一侧进行一些筛选。如果日志中的顺序不同,则可以选择始终放弃第一个或第二个。
答
一种可能的情况是:
- 詹金斯记录了SHA1在其
lastBuiltRevision
- 有人力推(
git push --force
)产地/主,并用新的历史改写SHA1
莫非你添加完成该作业的完整'lastBuiltRevision' XML元素?测试回购包含什么?您使用回购执行了哪些确切的步骤?你使用什么版本?也许这个修订不是从远程回购中获取的? –
@StefanHanke我用lastBuiltRevision更新了这个问题。 – BadmintonCat
为什么有两个'lastBuiltRevision'元素?那你的git SCM配置是什么?我没有设法重现这一点。此外,它似乎有关于该元素的[没有特定问题](https://issues.jenkins-ci.org/browse/JENKINS-22156?jql=text%20~%20%22lastBuiltRevision%22)... –