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

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

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Component/s: github-plugin
    • Labels:
      None
    • Environment:
      Ubuntu 12.10
    • Similar Issues:

      Description

      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.

        Attachments

          Issue Links

            Activity

            Hide
            kstevens Keith Stevens added a comment -

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

            Show
            kstevens Keith Stevens added a comment - Just got bitten by this, as well. Any workaround or proposed fix?
            Hide
            aehlke 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.

            Show
            aehlke 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.
            Show
            aehlke Alex Ehlke added a comment - My fork is here: https://github.com/tophatmonocle/github-plugin/tree/github-1.10-SNAPSHOT-NOHOSTS
            Hide
            fnaum 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 Alex Ehlke 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.([^/]+)/([^/]+)/([^/]+)/?")
            
            Show
            fnaum 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 Alex Ehlke 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.([^/]+)/([^/]+)/([^/]+)/?" )
            Hide
            lps 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.

            Show
            lps 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.

              People

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

                Dates

                Created:
                Updated: