J'essaie de faire fonctionner Jenkins sur un PC Windows et j'ai trouvé un problème étrange avec les sous-modules. Je possède un repo git avec trois sous-modules. Après un moment, il semble que Git travaille sur Jenkins, donc un clone normal fonctionne. Cependant, le clone ne clone pas les sous-modules à l'intérieur du repo principal, j'ai donc coché la case pour mettre à jour récursivement les sous-modules.Problème avec les sous-modules Jenkins et Git
Cependant, quand je lance mon travail:
Started by user <User>
Building in workspace X:\Jenkins\<JobName>
- C:/Program Files/Git/bin/git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
- C:/Program Files/Git/bin/git.exe config remote.origin.url ssh://[email protected]<server>/<repo>.git # timeout=10
Fetching upstream changes from ssh://[email protected]<server>/<repo>.git
- C:/Program Files/Git/bin/git.exe --version # timeout=10
using GIT_SSH to set credentials
- C:/Program Files/Git/bin/git.exe fetch --tags --progress ssh://[email protected]<server>/<repo>.git +refs/heads/*:refs/remotes/origin/*
- C:/Program Files/Git/bin/git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
- C:/Program Files/Git/bin/git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision b13204ee1c6717a82d1c7a17922f2a477efd119d (refs/remotes/origin/master)
Commit message: "testinggg.."
- C:/Program Files/Git/bin/git.exe config core.sparsecheckout # timeout=10
- C:/Program Files/Git/bin/git.exe checkout -f b13204ee1c6717a82d1c7a17922f2a477efd119d
- C:/Program Files/Git/bin/git.exe rev-list b13204ee1c6717a82d1c7a17922f2a477efd119d # timeout=10
- C:/Program Files/Git/bin/git.exe remote # timeout=10
- C:/Program Files/Git/bin/git.exe submodule init # timeout=10
- C:/Program Files/Git/bin/git.exe submodule synC# timeout=10
- C:/Program Files/Git/bin/git.exe config --get remote.origin.url # timeout=10
- C:/Program Files/Git/bin/git.exe submodule init # timeout=10
- C:/Program Files/Git/bin/git.exe config -f .gitmodules --get-regexp ^submodule\.(.*)\.url # timeout=10
- C:/Program Files/Git/bin/git.exe config --get submodule.top.url # timeout=10
- C:/Program Files/Git/bin/git.exe remote # timeout=10
- C:/Program Files/Git/bin/git.exe config --get remote.origin.url # timeout=10
- C:/Program Files/Git/bin/git.exe config -f .gitmodules --get submodule.top.path # timeout=10
using GIT_SSH to set credentials
- C:/Program Files/Git/bin/git.exe submodule update --init --recursive top
FATAL: Command "C:/Program Files/Git/bin/git.exe submodule update --init --recursive top" returned status code 1:
stdout:
stderr: fatal: Needed a single revision
Unable to find current revision in submodule path 'top'
hudson.plugins.git.GitException: Command "C:/Program Files/Git/bin/git.exe submodule update --init --recursive top" returned status code 1:
stdout:
stderr: fatal: Needed a single revision
Unable to find current revision in submodule path 'top'
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1903)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1622)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$7.execute(CliGitAPIImpl.java:1076)
at hudson.plugins.git.extensions.impl.SubmoduleOption.onCheckoutCompleted(SubmoduleOption.java:102)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1182)
at hudson.scm.SCM.checkout(SCM.java:495)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:560)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485)
at hudson.model.Run.execute(Run.java:1735)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:405)
Finished: FAILURE
Qu'est-Git quand il dit:
avait besoin d'une seule révision Impossible de trouver la révision en cours dans le chemin de sous-module 'top'
J'ai regardé autour et n'a rien trouvé :(
J'ai répliqué cette séquence de commande sur un shell normal et aucune erreur n'est apparue.
Toute aide sera appréciée. Merci!
Je ne sais pas ce que vous entendez par "ID". En effet "top" est le chemin où va l'un de mes sous-modules. Mon fichier gitmodules répertorie uniquement les URL de repo, leur branche et leur chemin, pas d'informations de validation incluses. Est-ce normal? – viterbi
@viterbi Par "ID", j'entends le hash de 20 octets assigné à chaque commit. Oui, [c'est normal] (https://www.git-scm.com/docs/gitmodules) mais je ne parlais pas de ça. Voir [git-submodule] (https://www.git-scm.com/docs/git-submodule): "Les _Submodules sont composés à partir d'une entrée d'arbre gitlink dans le référentiel principal qui fait référence à un objet de commit particulier dans le référentiel interne qui est complètement séparé Un enregistrement dans le fichier .gitmodules (...) à la racine de l'arborescence source attribue un nom logique au sous-module et décrit l'URL par défaut à partir de laquelle le sous-module doit être cloné._ " –
I ne sais vraiment pas ce que je fais mal. Si je clone le repo avec les sous-modules récursivement je n'ai pas de problème, quand jenkins le fait, le message "Needed single revision" apparaît ... Je veux vraiment éviter de le faire manuellement, si jenkins est suposé pour pouvoir gérer beaucoup Je préfère le faire ... – viterbi