2017-09-05 4 views
3

Dans Jenkins j'utilise l'API XML pour obtenir le SHA (s) d'un commit, par ex.Jenkins Invalid Git Revisions

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

Je l'ai mis dans un emballage parce que souvent il contient plus d'un SHA et je vais traiter ces plus loin.

Cependant l'un des SHAs est toujours invalide ...

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

Le deuxième SHA est bien, mais quand je vérifie le premier SHA ici sur notre git commet conduit à une page d'erreur:

La validation 'cbf26ebac6b4b3860a794c0b1ad86758e7757a3a' n'existe pas dans le référentiel 'test' .

Est-ce que quelqu'un sait pourquoi nous obtenons des SHA invalides sur Jenkins et comment résoudre ce problème?

MISE À JOUR:

Le lastBuiltRevision complet ...

<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

pourrait vous ajoutez l'élément XML 'lastBuiltRevision' complet de ce travail? Que contient le rapport de test? Quelles étapes précises avez-vous effectuées avec le repo? Quelles versions utilisez-vous? Peut-être que cette révision n'a pas été récupérée à partir du repo à distance? –

+0

@StefanHanke J'ai mis à jour la question avec lastBuiltRevision. – BadmintonCat

+0

Pourquoi y a-t-il deux éléments 'lastBuiltRevision'? Quelle est votre config git SCM pour ce travail? Je n'ai pas réussi à le reprocher. En outre, il semble qu'il n'y ait [aucun problème spécifique] (https://issues.jenkins-ci.org/browse/JENKINS-22156?jql=text%20~%20%22lastBuiltRevision%22) à propos de cet élément ... –

Répondre

0

Je pense que le plugin scm le journal parse de construction après la course de construction pour extraire les données de révision. Si vous utilisez le Multiple SCM plugin, un pipeline Jenkins avec plusieurs commandes git ou checkout ou un Jenkins Shared Library, il est très bien possible de se retrouver avec plusieurs révisions scm de plusieurs référentiels (nous en avons actuellement 6 dans notre métier ...).

Je ne sais pas s'il est possible d'ignorer certaines parties du journal pour l'analyse de révision SCM, sinon vous devrez faire un filtrage de votre côté de la demande. Si les différentes révisions arrivent dans l'ordre dans le journal, vous pouvez choisir de toujours rejeter le premier ou le second.

0

Un cas possible est lorsque:

  • Jenkins enregistre un SHA1 pour origine/maître dans son lastBuiltRevision
  • quelqu'un poussée de force (git push --force) et écrasez le SHA1 avec une nouvelle histoire