jenkins non riesce a connettersi al repository git


11

Non riesco a configurare l'URL del repository git in un modo, a cui Jenkins possa accedervi.

in "Progetto> Configura> Gestione codice sorgente" Ho impostato l'URL del repository su "git @ store: repository / testproject.git"

Ottengo questo errore:

Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

l'accesso con quell'URL funziona su una shell:

jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password: 
4fd35a4f528e2f2921a52cfd03918b7cbde3d253    refs/heads/master

Mi viene richiesta una password e funziona.

Ho associato la stessa password alle credenziali di Jenkins a "git /" e ho anche provato "git @ store /". Nessuno ha funzionato.

Si noti che non si tratta di github, ma di un repository git locale.

aggiornare:

l'aggiunta della chiave pub dal master jenkins allo slave build, ha contribuito a far funzionare la configurazione:

ssh-copy-id jenkins@dilbert

ora le build stanno fallendo:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@store:repositories/testproject.git # timeout=10
Fetching upstream changes from git@store:repositories/testproject.git
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@store:repositories/testproject.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:735)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:983)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1016)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1751)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

il negozio è il maestro jenkins, dilbert è lo schiavo della build. ssh dalle opere master a slave.

jenkins@store:~$ ssh dilbert uptime
 16:06:21 up 3 days, 18:53, 13 users,  load average: 0,31, 0,38, 0,50

qualche idea su come eseguire il debug di questo?

Risposte:


5

l'autenticazione funziona tramite ssh. hai aggiunto la ssh-key pubblica dell'utente jenkins all'utente git sul tuo server git?

fatemi sapere se avete bisogno di istruzioni su come impostare l'autenticazione ssh e modificherò questo post qui.

/MODIFICARE:

felice che tu l'abbia fatto funzionare. ho cercato sul sito ufficiale di jenkins un manuale dettagliato sulla parte SSH della configurazione, ma non sono riuscito a trovarne.

quindi ecco una breve panoramica - fammi sapere se questo è quello che ti serve.

  1. jenkins slave (la macchina da costruzione) si collega al git-server (jenkins master)
  2. la macchina da costruzione funziona come utente jenkins (ad es. jenkins @ dilbert: ~ $)
  3. git-server funziona come utente git (es. git @ store: ~ $)
  4. La chiave pubblica jenkins @ dilbert deve essere inserita in git @ store authorized_keys
  5. eseguire jenkins@dilbert:~/.ssh$ ssh-copy-id git@storeper copiare jenkins @ dilbert ssh chiave pubblica sul server git

potresti spiegare quali utenti aggiungere ssh-key a dove?
Jörg Beyer,

l'utente jenkins dovrebbe avere la sua chiave pub memorizzata in <home home utente jenkins> /. ssh / id_rsa.pub questo deve essere aggiunto a <git home home utente> /. ssh / authorized_keys
kindaleek

facendo "jenkins @ store: ~ / .ssh $ ssh-copy-id git @ store" fa in modo che jenkins accetti la configurazione (che è un miglioramento), ma un build su uno slave jenkins remoto fallisce. qualche idea?
Jörg Beyer,

buono a leggere. sfortunatamente, la mia esperienza con Git finisce praticamente lì ... ma ricordo un problema simile al lavoro. potrei sbagliarmi ora, ma devi lavorare come utente (ad es. Joerg Beyer) sulla piattaforma git, giusto? verifica l'autorizzazione lì (puoi modificare le autorizzazioni degli utenti nell'interfaccia web per ogni gruppo a cui appartengono). prova a impostarlo come sviluppatore per i test / EDIT: hai scritto jenkins slave remoto - se utilizza una coppia di chiavi diversa, devi aggiungere di nuovo la chiave pubblica ai
di_processi

non sono sicuro. Ho aggiornato la domanda. Quale chiave ssh devo aggiungere dove?
Jörg Beyer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.