Jenkins notification-poll-build fail with “No git consumers for URI ssh://path”

gitJenkinsssh

Whenever my Jenkins gets notified about a new git commit to my repository foo, I get the following log/error response on the triggering client:

Scheduled polling of foo
No git consumers for URI ssh://git@localhost:9777/path/to/foo.git

This failed notification does not commence building. Using the manual "Build Now" commences building successfully.

Setup

  • I have the Jenkins instance listening on localhost:8666.
  • I have the SSH daemon listening on localhost:9777.
  • Within Jenkins, I have a git-based Maven project:
    • "Maven project name" is foo.
    • "Git Repository URL" is ssh://git@localhost:9777/path/to/foo.git.
  • In that bare repository, I have a hook file hooks/post-receive with content:

.

# this is file post-receive
curl http://localhost:8666/git/notifyCommit?url=ssh://git@localhost:9777/path/to/foo.git

This building-on-commit-notification used to work well. I have the feeling that it stopped working well once I moved from standard SSH port 22 to non-standard 9777.

What do I have to do to have a commit notification result in a successful build trigger?


Possibly relevant source code files:

Best Answer

Things to remember when connecting an hook to Jenkins:

  1. Thick the Poll SCM option in the Build Triggers leaving the "schedule" textarea empty

  2. the url=xxx parameter must match the "Repository URL" specified in the job configuration. If it is prefixed by ssh:// you should keep it in the notification call

  3. Don't forget to push a change to the repo you configured! To verify you have changes: http://jenkins-url:jenkins-port/job/JOB-NAME/scmPollLog/ should contain "Changes found" in the last line.

Source: Git plugin docs