Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-18298

Jenkins (Github Plugin) post-commit hook fails to build with ssh config aliases

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • github-plugin
    • None
    • Ubuntu 12.10

      I have several private GitHub repos that I need to build. I'm using deployment keys and a config file for SSH to let the Jenkins user know what key to use for each repo. In order to get Jenkins to work with GitHub in this fashion, I had to change the repository URL to point to the host alias. So, it looks like:

      git@myalias.github.com:myorg/repo.git

      This allows me to initiate a build from Jenkins, which is able to checkout the code from github successfully.

      I need to initiate builds from GitHub when code is committed. I setup everything and tested the webhook. I saw the payload come in successfully in the logs. When I commit code to the repo, I get the following error: "FINE: Skipped <repo> because it doesn't have a matching repository."

      If I change my repository URL back to git@github.com:myorg/repo.git I get a match on the repo after code commit, but then the jenkins user can't checkout the code from GitHub because it doesn't know what SSH key to use.

      Is there a way to get this to work? Thanks.

          [JENKINS-18298] Jenkins (Github Plugin) post-commit hook fails to build with ssh config aliases

          David Campos added a comment -

          I have the exact same problem.
          There is any workaround or solution?

          Cheers,
          David

          David Campos added a comment - I have the exact same problem. There is any workaround or solution? Cheers, David

          Seth Roby added a comment -

          I, too, have this issue. It seems that the plugin should fall back on the Project's top-level GitHub project property and check that as well. Alternatively, the code seems to provide for an override to the hookUrl, but I see no way to configure the override (or even where the method is invoked).

          Seth Roby added a comment - I, too, have this issue. It seems that the plugin should fall back on the Project's top-level GitHub project property and check that as well. Alternatively, the code seems to provide for an override to the hookUrl , but I see no way to configure the override (or even where the method is invoked).

          Same issue on a windows machine. I configured also aliases. They are working when running the job manually. However when pushing code to github it doesn't seem initiate the build.

          Marco Franssen added a comment - Same issue on a windows machine. I configured also aliases. They are working when running the job manually. However when pushing code to github it doesn't seem initiate the build.

          Justin Hammond added a comment - - edited

          Also have this problem. Would like for a fix! I was looking at the code and maybe if we could optionally include the "GitHub project" as a GitHubRepositoryNameContributor we could then ignore aliases and whatnot. If I knew anything about making jenkins plugins I'd test it out for you.

          Justin Hammond added a comment - - edited Also have this problem. Would like for a fix! I was looking at the code and maybe if we could optionally include the "GitHub project" as a GitHubRepositoryNameContributor we could then ignore aliases and whatnot. If I knew anything about making jenkins plugins I'd test it out for you.

          Keith Stevens added a comment -

          Just got bitten by this, as well. Any workaround or proposed fix?

          Keith Stevens added a comment - Just got bitten by this, as well. Any workaround or proposed fix?

          Alex Ehlke added a comment -

          I too ran into this issue. I'm making a temporary fix in my own fork that just ignores hostname when checking whether a repo matches another given repo, since for us this does not matter.

          I think a proper fix has to somehow resolve the hostname to its actual hostname - I looked into this and the only way I can see to do it would be to parse the SSH config file, but that is awful (and there are several files that could set this). There must be a better way, but at this point I'm out of my depth on the solution.

          Alex Ehlke added a comment - I too ran into this issue. I'm making a temporary fix in my own fork that just ignores hostname when checking whether a repo matches another given repo, since for us this does not matter. I think a proper fix has to somehow resolve the hostname to its actual hostname - I looked into this and the only way I can see to do it would be to parse the SSH config file, but that is awful (and there are several files that could set this). There must be a better way, but at this point I'm out of my depth on the solution.

          Alex Ehlke added a comment -

          Alex Ehlke added a comment - My fork is here: https://github.com/tophatmonocle/github-plugin/tree/github-1.10-SNAPSHOT-NOHOSTS

          Federico Naum added a comment - - edited

          One more here with exactly the same problem.
          Has someone come out with a solution?
          I can see that this Jira Ticket has not had any updates in more than a year so I think I'll have to have a look at aehlke fork

          Not ideal, but I was wondering if adding one more Patter compile here taking into account myalias will work.

          something like

          Pattern.compile("ssh://git@myalias.([^/]+)/([^/]+)/([^/]+)/?")
          

          Federico Naum added a comment - - edited One more here with exactly the same problem. Has someone come out with a solution? I can see that this Jira Ticket has not had any updates in more than a year so I think I'll have to have a look at aehlke fork Not ideal, but I was wondering if adding one more Patter compile here taking into account myalias will work. something like Pattern.compile( "ssh: //git@myalias.([^/]+)/([^/]+)/([^/]+)/?" )

          Lon Sun added a comment -

          +1 on this. The github plugin doesn't appear to handle git SSH URLs at all let alone overrides. For example git@github.com:org-name/repo-name is parsed incorrectly as:

          host=github.com
          username=org-name
          repository=repo-name

          This makes it so using the SSH config is required.

          Lon Sun added a comment - +1 on this. The github plugin doesn't appear to handle git SSH URLs at all let alone overrides. For example git@github.com:org-name/repo-name is parsed incorrectly as: host=github.com username=org-name repository=repo-name This makes it so using the SSH config is required.

            Unassigned Unassigned
            itarchmerc IT Archmerc
            Votes:
            9 Vote for this issue
            Watchers:
            14 Start watching this issue

              Created:
              Updated: