6

I'm creating an image from the Jenkins Docker image and trying to install the SCM Sync Configuration Plugin. I have a key created that I'm copying to the image that is also copied to the ssh keys for the Github repo. I've tried creating .ssh/ folders in /root as well as /var/jenkins_home. I followed this example and tried adding both of the keys to /etc/ssh/ssh_config. This didn't work. I also tried following another answer (lost the link to it) where you can add a config file to .ssh/ containing something like this:

Host github
    HostName github.com
    User git
    IdentityFile "/var/jenkins_home/.ssh/id_rsa"

This also didn't work. I'm using the credentials plugin + Git plugin and the credentials entry points at the /var/jenkins_home/.ssh/id_rsa file.

Has anyone gotten this plugin or git integration in general working with Jenkins in a Docker image? The errors I get are as follows:

INFO: Creating SCM repository object for url : git@github.com:MY_REPO/scm-sync.git Nov 25, 2014 4:20:30 AM hudson.plugins.scm_sync_configuration.scms.SCM getConfiguredRepository SEVERE: Error creating ScmRepository : No such provider: 'github.com'. Nov 25, 2014 4:20:30 AM jenkins.model.Jenkins WARNING: null java.lang.RuntimeException: Error during ScmSyncConfiguration initialisation ! at hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin.init(ScmSyncConfigurationPlugin.java:154) at hudson.plugins.scm_sync_configuration.extensions.ScmSyncConfigurationItemListener.onLoaded(ScmSyncConfigurationItemListener.java:24) at jenkins.model.Jenkins.(Jenkins.java:864) at hudson.model.Hudson.(Hudson.java:82) at hudson.model.Hudson.(Hudson.java:78) at hudson.WebAppMain$3.run(WebAppMain.java:222) Caused by: java.lang.NullPointerException at org.apache.maven.scm.manager.AbstractScmManager.getProviderByRepository(AbstractScmManager.java:180) at hudson.plugins.scm_sync_configuration.SCMManipulator.scmConfigurationSettledUp(SCMManipulator.java:60) at hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness.initializeRepository(ScmSyncConfigurationBusiness.java:69) at hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness.init(ScmSyncConfigurationBusiness.java:64) at hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin.init(ScmSyncConfigurationPlugin.java:152) ... 5 more

Community
  • 1
  • 1
user2868740
  • 367
  • 3
  • 10

3 Answers3

4

Just want to point out that the accepted answer is not the answer to this problem. The SCM sync plugin does not use the credentials plugin. So to be able to access your SCM sync repo, you need to...

  1. Generate an ssh key using ssh-keygen
  2. Go to your github repo settings and add a deploy key. Copy the public key id_rsa.pub generated in previous step.
  3. If you have already setup your SCM sync settings, you will need to unselect your current git repo and then re-add it.

Credit goes to this blog post: https://cburgmer.wordpress.com/2013/01/02/tracking-configuration-changes-in-jenkins/

Note: Inside a docker container the steps are the same. I just add the id_rsa to the container by mounting my host's system .ssh folder as a volume.

e.g. docker run -v /my-user/.ssh:/root/.ssh my-container

Ryan Walls
  • 6,962
  • 1
  • 39
  • 42
3

We use our docker jenkins container with github extensively. We have not had this issue. We don't need to manually setup the key in the container, just using the credentials plugin. Give this container a shot and let me know what errors you get?

The steps to setup in the UI are:

  1. Install the Credentials Plugin and the Github Plugin
  2. Click Mange credentials in Manage Jenkins page Click Manage Credentials
  3. Add your private key and give it a name Add your private key
  4. Reference the key by name in your job Reference key by username in job
Usman Ismail
  • 17,999
  • 14
  • 83
  • 165
  • Thanks for the answer! I had a feeling that I was probably setting the key up wrong in the credentials plugin, this makes a lot of sense. I won't get to try this until the weekend unfortunately, but I'll let you know how it goes. – user2868740 Nov 26 '14 at 21:22
  • My main problem was that one of my config files had a little garbage in it so nothing was working and silently failing, but accepting this answer because it pointed out something that I was doing wrong anyway. – user2868740 Dec 01 '14 at 20:42
3

Here is my solution and it works for SURE.

Go set up a personal token in github and you will get a token for example 123456abc.

In SCM sync plugin put https://123456abc@github.com/EXAMPLE/EXAMPLE.git

Good Luck!

Erick G. Hagstrom
  • 4,873
  • 1
  • 24
  • 38
user3558541
  • 102
  • 3