2017-09-05 111 views
3

在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> 
+0

莫非你添加完成该作业的完整'lastBuiltRevision' XML元素?测试回购包含什么?您使用回购执行了哪些确切的步骤?你使用什么版本?也许这个修订不是从远程回购中获取的? –

+0

@StefanHanke我用lastBuiltRevision更新了这个问题。 – BadmintonCat

+0

为什么有两个'lastBuiltRevision'元素?那你的git SCM配置是什么?我没有设法重现这一点。此外,它似乎有关于该元素的[没有特定问题](https://issues.jenkins-ci.org/browse/JENKINS-22156?jql=text%20~%20%22lastBuiltRevision%22)... –

回答

0

我的猜测是,SCM插件解析生成日志生成运行后提取的修订数据。如果你使用Multiple SCM plugin,一个Jenkins管道有多个gitcheckout命令或一个Jenkins Shared Library,很可能最终得到来自多个存储库的多个scm修订版(我们目前在我们的作业中有6个...)。

我不知道是否有可能忽略SCM版本解析的部分日志,否则您必须在请求的一侧进行一些筛选。如果日志中的顺序不同,则可以选择始终放弃第一个或第二个。

0

一种可能的情况是:

  • 詹金斯记录了SHA1在其lastBuiltRevision
  • 有人力推(git push --force)产地/主,并用新的历史改写SHA1