2017-10-10 5 views
1

Lorsque je tente de marquer une version spécifique par Jenkins, je reçois l'erreur suivante:Jenkins - le marquage d'une génération échoue avec NoHeadException

ERROR: Error tagging repo 'refs/remotes/origin/master' : 
org.eclipse.jgit.api.errors.NoHeadException: Tag on repository without 
HEAD currently not supported hudson.plugins.git.GitException: 
org.eclipse.jgit.api.errors.NoHeadException: Tag on repository without 
HEAD currently not supported at 
org.jenkinsci.plugins.gitclient.JGitAPIImpl.tag(JGitAPIImpl.java:509) 
    at 
hudson.plugins.git.GitTagAction$TagWorkerThread.perform(GitTagAction.java:199) 
    at hudson.model.TaskThread.run(TaskThread.java:129) Caused by: 
org.eclipse.jgit.api.errors.NoHeadException: Tag on repository without 
HEAD currently not supported at 
org.eclipse.jgit.api.TagCommand.call(TagCommand.java:137) at 
org.jenkinsci.plugins.gitclient.JGitAPIImpl.tag(JGitAPIImpl.java:507) 
    ... 2 more Trying next branch Completed 

Lorsque vous essayez de marquer dans l'espace de travail, il fonctionne très bien, HEAD est en fait attaché, git refs regarde bien, cela pourrait-il être un problème que lorsque Jenkins essaie d'étiqueter il regarde dans le mauvais répertoire de travail?

Existe-t-il un moyen de générer des journaux plus détaillés avec la façon dont ils essaient de marquer?

FYI - en utilisant les agents Linux de Jenkins 2.81 et swarm, le dernier plugin Git.

Répondre

0

Tenir compte du actual code throwing the exception:

try (RevWalk revWalk = new RevWalk(repo)) { 
     // if no id is set, we should attempt to use HEAD 
     if (id == null) { 
      ObjectId objectId = repo.resolve(Constants.HEAD + "^{commit}"); //$NON-NLS-1$ 
      if (objectId == null) 
       throw new NoHeadException(
        JGitText.get().tagOnRepoWithoutHEADCurrentlyNotSupported); 

Vérifiez votre configuration: voir "Jenkins Git plugin detached HEAD". Vous devez vous assurer que Jenkins vérifie réellement une branche.
Essayez par exemple d'ajouter une étape de test simple avec un git status, pour le valider.

+0

J'ai vérifié ma configuration, ça a l'air bien, pendant le temps de construction, je peux marquer sans problème, quand je veux marquer une construction spécifique après, c'est quand je rencontre cette erreur. Le problème est que je ne veux pas étiqueter chaque build, je dois marquer certaines builds après le fait. Je balise la fonctionnalité lorsque vous cliquez sur la construction et la section qui indique "pas de balises". Quand je vérifie l'espace de travail, git status/refs a l'air bien, et tagger manuellement fonctionne très bien, c'est par Jenkins qu'il casse sur une construction déjà construite. –