La mise à jour de Jenkins git submodule échoue
J'ai un repo git qui a un sous-module. Tous deux appartiennent à une équipe sur BitBucket. Mon jenkins machine est une AWS windows serveur avec le plugin git. Je suis à l'aide de clés SSH pour l'authentification.
J'ai trois jenkins emplois. L'un des clones les principaux repo. C'est un succès. L'un des clones de la deuxième repo sur son propre (le repo qui sera utilisé comme un sous-module). C'est également réussie.
Dans la troisième partie de mon travail je dis jenkins récursive de mettre à jour les submodules. Cela échoue et dit à clé publique d'erreur. Comment cela peut-il être le cas si je peux cloner le repo sur son propre?
Sortie de la Console ci-dessous:
Started by user anonymous
Building on master in workspace C:\Program Files (x86)\Jenkins\jobs\MainRepo\workspace
Wiping out workspace first.
Cloning the remote Git repository
Cloning repository [email protected]:team/mainrepo.git
> git.exe init C:\Program Files (x86)\Jenkins\jobs\mainrepo\workspace # timeout=10
Fetching upstream changes from [email protected]:team/mainrepo.git
> git.exe --version # timeout=10
using GIT_SSH to set credentials
> git.exe -c core.askpass=true fetch --tags --progress [email protected]:team/mainrepo.git +refs/heads/*:refs/remotes/origin/*
> git.exe config remote.origin.url [email protected]:team/mainrepo.git # timeout=10
> git.exe config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
> git.exe config remote.origin.url [email protected]:team/mainrepo.git # timeout=10
Fetching upstream changes from [email protected]:team/mainrepo.git
using GIT_SSH to set credentials
> git.exe -c core.askpass=true fetch --tags --progress [email protected]:team/mainrepo.git +refs/heads/*:refs/remotes/origin/*
> git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
> git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 6b3f6535c45e79ee88f4918d464edead48d83369 (refs/remotes/origin/master)
> git.exe config core.sparsecheckout # timeout=10
> git.exe checkout -f 6b3f6535c45e79ee88f4918d464edead48d83369
> git.exe rev-list 6b3f6535c45e79ee88f4918d464edead48d83369 # timeout=10
> git.exe remote # timeout=10
> git.exe submodule init # timeout=10
> git.exe submodule sync # timeout=10
> git.exe config --get remote.origin.url # timeout=10
> git.exe submodule update --init --recursive
FATAL: Command "git.exe submodule update --init --recursive" returned status code 128:
stdout:
stderr: Cloning into 'my-submodule'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of '[email protected]:team/my-submodule.git' into submodule path 'my-submodule' failed
hudson.plugins.git.GitException: Command "git.exe submodule update --init --recursive" returned status code 128:
stdout:
stderr: Cloning into 'my-submodule'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of '[email protected]:team/my-submodule.git' into submodule path 'my-submodule' failed
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1693)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$500(CliGitAPIImpl.java:62)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$7.execute(CliGitAPIImpl.java:953)
at hudson.plugins.git.extensions.impl.SubmoduleOption.onCheckoutCompleted(SubmoduleOption.java:90)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1098)
at hudson.scm.SCM.checkout(SCM.java:485)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:607)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
at hudson.model.Run.execute(Run.java:1738)
at hudson.matrix.MatrixBuild.run(MatrixBuild.java:301)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Finished: FAILURE
source d'informationauteur SlimCheney
Vous devez vous connecter pour publier un commentaire.
Ce
est un bogue connu dans jenkins: https://issues.jenkins-ci.org/browse/JENKINS-20941mais il a maintenant été corrigée, mise à jour de votre plugin Git pour résoudre le problème.Si la mise à jour n'est pas possible, une solution de contournement, vous pouvez mettre la clé sous jenkins-utilisateurs .ssh dossier.
Sur la base des précédentes réponses ici, j'ai modifié les priorités de la mise à niveau de mon client Jenkins. Maintenant qu'ils sont sur Jenkins 2.41 avec Git plugin 3.0.1 et avant de configuration supplémentaires cela ne corrige pas le problème. J'ai trouvé la configuration pour être un peu difficile:
Une fois que j'ai sélectionner les deux options, il utilise les informations d'identification que j'avais configuré pour le haut-niveau référentiel et tout fonctionne pour moi. Voici ce que la boîte de dialogue ressemble à 2.41 avec Git plugin 3.0.1:
* Ici est l'essence de mon erreur "Autorisation refusée":
PS Juste avant de poster, j'ai fait mon habitude double vérification pour s'assurer que je ne suis pas la duplication d'une réponse. Dans ce cas, je vois que @danielfn commentaire de points à quelque chose qui est presque identique à ma réponse, mais 1. cela ne m'aide pas et j'ai fini par essayer de le comprendre par essai et erreur et 2. il est StackOverflow politique de poster ici les réponses plutôt que de référencement de liens externes.
Comme alternative, vous pouvez utiliser le Code Source de Gestion' - 'Plusieurs Mec" pour configurer manuellement tous les sous-modules et ajouter des Supplémentaires de Comportements' - 'découvrez un sous-répertoire' pour chacun.
Il semble qu'ils ont résolu avec les versions git client plugin 1.20.0-beta1 et git plugin 2.5.0-beta1. Toutefois, ils ne peuvent être ajoutés à Jenkins en spécifiant pour extraire les mises à jour de l'expérimental centre de mise à jour.