Jenkins: SSH-Agent und Git-Plugins gemeinsam verwenden

Jenkins: SSH-Agent und Git-Plugins gemeinsam verwenden

Ich habe also die folgende Situation: einen Server mit dedizierten Benutzern für jedes Projekt (z. B. foo) und einen Jenkins-Server, der als jenkinsBenutzer ausgeführt wird. Ich habe ein SSH-Schlüsselpaar für meinen fooBenutzer generiert und das öffentliche als Bereitstellungsschlüssel zu einem GitHub-Repository hinzugefügt. (Ich habe überprüft, dass ich das Repository mit dem fooBenutzer klonen kann.)

In Jenkins habe ich die Authentifizierung unter „Jenkins verwalten“ > „Anmeldeinformationen verwalten“ als „SSH-Benutzername mit privatem Schlüssel“ mit dem Benutzernamen „foo“ und foodem privaten Schlüssel in einem „globalen“ Bereich eingerichtet.

Also konfigurierte ich meinen Jenkins-Job mit demrichtiger Arbeitsbereich(zB /home/foo/deploymentmit vollem Eigentumsrecht für den Benutzer foooffensichtlich) undmit den Zugangsdaten „foo“Für die "Quellcodeverwaltung" wollte ich die SSH-URL meines Repo verwenden (zB[email geschützt]:foo/foo.git) Allerdings werde ich sofort darüber informiert, dass ein Berechtigungsproblem vorliegt:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:foo/foo.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository.

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

Wenn ich die https-Version der URL verwende (https://github.com/foo/foo.git) verschwindet der Fehler, aber wenn ich den Job ausführe, erhalte ich die folgenden Fehler in der Konsolenausgabe:

Started by user developer
[EnvInject] - Loading node environment variables.
Building in workspace /home/foo/deployment
Cloning the remote Git repository
Cloning repository https://github.com/foo/foo.git
 > git init /home/foo/deployment # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init /home/foo/deployment
    [long stacktrace]
Caused by: hudson.plugins.git.GitException: Command "git init /home/foo/deployment" returned status code 1:
stdout: 
stderr: /home/foo/deployment/.git: Permission denied
    [long stacktrace]
ERROR: null
Finished: FAILURE

Das Schlüsselpaar verwendet keine Passphrase, ich würde aber gerne eine hinzufügen, wenn ich das zuerst zum Laufen bekomme. Jenkins läuft auf einer Ubuntu 14.04.2 LTS-Box (GNU/Linux 3.13.0-65-generic x86_64).

Was übersehe ich hier? Es scheint, dass die von mir angegebenen Anmeldeinformationen nicht verwendet werden, was erklärt, warum die Berechtigungen explodieren. Aber ich verstehe nicht, warum sie nicht verwendet werden? Und warum kann ich die git@URL nicht verwenden?

Da es an einem Berechtigungsproblem mit scheitert, git inithabe ich das manuell in ausgeführt /home/foo/deployment, aber beim erneuten Ausführen des Jenkins-Jobs scheitert es an git fetch, wieder mit Berechtigungsproblemen.

Antwort1

Ach ja, ich bin wirklich dumm. Der SSH-Benutzeragent erlaubt dem jenkinsBenutzer offensichtlich nur, sich als mit dem Remote-Repository zu verbinden foo, erteilt ihm aber keine Berechtigungen zum Schreiben in das lokale Dateisystem ...

verwandte Informationen