Search code examples
jenkinsgithubcontinuous-integrationgithub-webhook

GitHub webhook can't connect to Jenkins inside VPN?


I am setting up continuous integration using Jenkins and GitHub Enterprise.

So far I have been able to easily create Jenkins projects and run jobs regularly.

  • Jenkins is using SSH public/private keys to authenticate and clone GitHub repos.
  • Jenkins runs on a Linux server that is inside my company's VPN network.

My next step is to configure Jenkins/GitHub so that each git push to GitHub would trigger a Jenkins build job. I have set up the post-commit webhook on GitHub, and enabled the GitHub hook trigger for GITScm polling checkbox in my Jenkins projects.

However, GitHub fails to connect to Jenkins.

Here is the log:

We couldn’t deliver this payload: failed to connect

{
  "zen": "Design for failure.",
  "hook_id": 287451636,
  "hook": {
    "type": "Repository",
    "id": 287451636,
    "name": "web",
    "active": true,
    "events": [
      "push"
    ],
    "config": {
      "content_type": "json",
      "insecure_ssl": "0",
      "url": "http://1.2.3.4/jenkins/github-webhook/"
    },
    "updated_at": "2021-03-19T07:45:12Z",
    "created_at": "2021-03-19T07:45:12Z",
    "url": "https://api.github.com/repos/mycompany/my_repo/hooks/287451636",
    "test_url": "https://api.github.com/repos/mycompany/my_repo/hooks/287451636/test",
    "ping_url": "https://api.github.com/repos/mycompany/my_repo/hooks/287451636/pings",
    "last_response": {
      "code": null,
      "status": "unused",
      "message": null
    }
  },
  "repository": {
    "id": 347030450,
    "node_id": "MDEwOlJlcG9zaXRvcnkzNDcwMzA0NTA=",
    "name": "my_repo",
    "full_name": "mycompany/my_repo",
    "private": true,
    "owner": {
      "login": "mycompany",
      "id": 11980925,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjExOTgwOTI1",
      "avatar_url": "https://avatars.githubusercontent.com/u/11980925?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/mycompany",
      "html_url": "https://github.com/mycompany",
      "followers_url": "https://api.github.com/users/mycompany/followers",
      "following_url": "https://api.github.com/users/mycompany/following{/other_user}",
      "gists_url": "https://api.github.com/users/mycompany/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/mycompany/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/mycompany/subscriptions",
      "organizations_url": "https://api.github.com/users/mycompany/orgs",
      "repos_url": "https://api.github.com/users/mycompany/repos",
      "events_url": "https://api.github.com/users/mycompany/events{/privacy}",
      "received_events_url": "https://api.github.com/users/mycompany/received_events",
      "type": "Organization",
      "site_admin": false
    },
    "html_url": "https://github.com/mycompany/my_repo",
    "description": "My test repo.",
    "fork": false,
    "url": "https://api.github.com/repos/mycompany/my_repo",
    "forks_url": "https://api.github.com/repos/mycompany/my_repo/forks",
    "keys_url": "https://api.github.com/repos/mycompany/my_repo/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/mycompany/my_repo/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/mycompany/my_repo/teams",
    "hooks_url": "https://api.github.com/repos/mycompany/my_repo/hooks",
    "issue_events_url": "https://api.github.com/repos/mycompany/my_repo/issues/events{/number}",
    "events_url": "https://api.github.com/repos/mycompany/my_repo/events",
    "assignees_url": "https://api.github.com/repos/mycompany/my_repo/assignees{/user}",
    "branches_url": "https://api.github.com/repos/mycompany/my_repo/branches{/branch}",
    "tags_url": "https://api.github.com/repos/mycompany/my_repo/tags",
    "blobs_url": "https://api.github.com/repos/mycompany/my_repo/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/mycompany/my_repo/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/mycompany/my_repo/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/mycompany/my_repo/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/mycompany/my_repo/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/mycompany/my_repo/languages",
    "stargazers_url": "https://api.github.com/repos/mycompany/my_repo/stargazers",
    "contributors_url": "https://api.github.com/repos/mycompany/my_repo/contributors",
    "subscribers_url": "https://api.github.com/repos/mycompany/my_repo/subscribers",
    "subscription_url": "https://api.github.com/repos/mycompany/my_repo/subscription",
    "commits_url": "https://api.github.com/repos/mycompany/my_repo/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/mycompany/my_repo/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/mycompany/my_repo/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/mycompany/my_repo/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/mycompany/my_repo/contents/{+path}",
    "compare_url": "https://api.github.com/repos/mycompany/my_repo/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/mycompany/my_repo/merges",
    "archive_url": "https://api.github.com/repos/mycompany/my_repo/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/mycompany/my_repo/downloads",
    "issues_url": "https://api.github.com/repos/mycompany/my_repo/issues{/number}",
    "pulls_url": "https://api.github.com/repos/mycompany/my_repo/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/mycompany/my_repo/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/mycompany/my_repo/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/mycompany/my_repo/labels{/name}",
    "releases_url": "https://api.github.com/repos/mycompany/my_repo/releases{/id}",
    "deployments_url": "https://api.github.com/repos/mycompany/my_repo/deployments",
    "created_at": "2021-03-12T10:40:44Z",
    "updated_at": "2021-03-18T13:59:52Z",
    "pushed_at": "2021-03-18T13:59:49Z",
    "git_url": "git://github.com/mycompany/my_repo.git",
    "ssh_url": "[email protected]:mycompany/my_repo.git",
    "clone_url": "https://github.com/mycompany/my_repo.git",
    "svn_url": "https://github.com/mycompany/my_repo",
    "homepage": null,
    "size": 3,
    "stargazers_count": 0,
    "watchers_count": 0,
    "language": "Makefile",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "forks_count": 0,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 0,
    "license": null,
    "forks": 0,
    "open_issues": 0,
    "watchers": 0,
    "default_branch": "main"
  },
  "sender": {
    "login": "MyLogin",
    "id": 63738097,
    "node_id": "MDQ6VXNlcjYzNzM4MDk3",
    "avatar_url": "https://avatars.githubusercontent.com/u/13818097?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/MyLogin",
    "html_url": "https://github.com/MyLogin",
    "followers_url": "https://api.github.com/users/MyLogin/followers",
    "following_url": "https://api.github.com/users/MyLogin/following{/other_user}",
    "gists_url": "https://api.github.com/users/MyLogin/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/MyLogin/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/MyLogin/subscriptions",
    "organizations_url": "https://api.github.com/users/MyLogin/orgs",
    "repos_url": "https://api.github.com/users/MyLogin/repos",
    "events_url": "https://api.github.com/users/MyLogin/events{/privacy}",
    "received_events_url": "https://api.github.com/users/MyLogin/received_events",
    "type": "User",
    "site_admin": false
  }
}

What could be the problem?


Solution

  • Well the problem is exactly because github cannot access your internal network.

    There's an article in Jenkins Community Blog where author suggests using smee (released under ISC License) for webhooks forwarding.