6

I have been trying for days to get my gitolite work with jenkins so I can have repos hosted from server and working with Jenkins (they are on the same sever).

I have gitolite working but I guess I have problems with ssh. I got some help on a chat and added private key to jenkins/.ssh.

I have a user "git" that hosts the gitolite, and I got a user "gitolite" and a "jenkins" user. I can clone a repo by using git clone git@e-ject.se:Matrix

But I can't use it in jenkins. I get this when I try to build.

Checkout:workspace / /var/lib/jenkins/jobs/Matrix/workspace -
hudson.remoting.LocalChannel@dbb335
Using strategy: Default
Checkout:workspace / /var/lib/jenkins/jobs/Matrix/workspace -
hudson.remoting.LocalChannel@dbb335

Cloning the remote Git repository
Cloning repository origin
ERROR: Error cloning remote repo 'origin' : Could not clone git@e-ject.se:Matrix
ERROR: Cause: Error performing command: git clone --progress -o origin git@e-ject.se:Matrix /var/lib/jenkins/jobs/Matrix/workspace
Command "git clone --progress -o origin git@e-ject.se:Matrix
/var/lib/jenkins/jobs/Matrix/workspace" returned status code 128: Cloning into        /var/lib/jenkins/jobs/Matrix/workspace...
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: The remote end hung up unexpectedly

Trying next repository
ERROR: Could not clone repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1042)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:968)
at hudson.FilePath.act(FilePath.java:758)
at hudson.FilePath.act(FilePath.java:740)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:968)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1193)
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:566)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:454)
at hudson.model.Run.run(Run.java:1376)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:230)

I login to my server and su - jenkins, then type "ssh -v git@server" I get this.

git@Server:~$ sudo su - jenkins
jenkins@Server:~$ ssh -v git@server
OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to server [127.0.1.1] port 22.
debug1: Connection established.
debug1: identity file /var/lib/jenkins/.ssh/id_rsa type -1
debug1: identity file /var/lib/jenkins/.ssh/id_rsa-cert type -1
debug1: identity file /var/lib/jenkins/.ssh/id_dsa type -1
debug1: identity file /var/lib/jenkins/.ssh/id_dsa-cert type -1
debug1: identity file /var/lib/jenkins/.ssh/id_ecdsa type -1
debug1: identity file /var/lib/jenkins/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA f3:ab:a6:55:83:98:c5:4f:85:c6:70:be:2f:40:1f:65
debug1: Host 'server' is known and matches the ECDSA host key.
debug1: Found key in /var/lib/jenkins/.ssh/known_hosts:3
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /var/lib/jenkins/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /var/lib/jenkins/.ssh/id_dsa
debug1: Trying private key: /var/lib/jenkins/.ssh/id_ecdsa
debug1: Next authentication method: password
git@server's password: 

It still asks for password... Anyone who have done this? Getting gitolite working with jenkins? I'm very grateful for any help and can gladly donate 10 bucks (visa card) for helping me set this up!

Triad sou.
  • 2,969
  • 3
  • 23
  • 27
Jonathan
  • 369
  • 3
  • 9
  • 1
    According to the SSH log, your private key `id_rsa` isn't being accepted by the server. Check that gitolite has the public key that matches the private key, and that gitolite has correctly updated the ~/git/.ssh/authorized_keys file with that key. – Christopher Orr Sep 25 '11 at 22:25
  • Thanks for the answer! Im looking into it right now, but I'm not sure how to tackle this. In jenkins i can't make a build, but I'm not sure how I'm suppose to think. if i got my matchbook pro and try to access my server am i suppose to just write ssh e-ject.se? which auths do i need? My iMac to server, my macbook to server, jenkins to? and gitolite to? i got a git user that is my main user on ubuntu i can use git clone git@e-ject.se:Matrix but what do i need for jenkins to accept and clone this one? very grateful for answers and i keep my promise of donation (visa card req) Joniz – Jonathan Sep 26 '11 at 08:11
  • i will quit this one and try out this guide instead! http://www.nomachetejuggling.com/2011/07/31/ubuntu-tomcat-jenkins-git-ssh-togethe/ lets se how that goes. – Jonathan Sep 26 '11 at 08:30
  • 2
    Currently you are not having a Jenkins problem, but a general SSH problem. As soon as you can do "ssh git@server" with your jenkins user account and it logs in automatically without a password, running the build from Jenkins will work. – Christopher Orr Sep 26 '11 at 08:53
  • Like @Christopher said, you are having an ssh issue. Look at http://oreilly.com/pub/h/66 to see how to set it up – Sagar Sep 27 '11 at 13:25

1 Answers1

16

SSH into the Jenkins box and create an SSH key pair for the Jenkins user (assuming jenkins here):

local$ ssh jenkins-box
you@jenkins-box$ sudo su jenkins
jenkins@jenkins-box$ ssh-keygen
jenkins@jenkins-box$ cat $HOME/.ssh/id_rsa.pub

Copy the SSH public key you see on the screen and paste it into the new file keydir/jenkins.pub inside your local gitolite admin repository.

Add the following lines to conf/gitolite.conf to give Jenkins permissions to clone and pull all repositories:

repo    @all
        R       =   jenkins

Commit and push the gitolite admin repository. Jenkins should now work correctly.

akaihola
  • 26,309
  • 7
  • 59
  • 69
  • 1
    Note that in some installations the `jenkins` user is not a login but a system/daemon user. In these cases running `sudo -u jenkins` before the commands should work well (in my case I had to manually create `/home/jenkins` too). Also be sure to run a test clone as jenkins: `sudo -u jenkins clone git@server:repo ~/testclone` – Adam Rofer Mar 20 '12 at 17:21
  • Correction to my prev comment: `sudo -u jenkins git clone git@server:repo ~/testclone` – Adam Rofer Mar 21 '12 at 20:30