Jenkins 多分支管道 - GitHub 企业问题?

Jenkins Multibranch Pipeline - GitHub Enterprise Issues?

这个问题我已经花了好几天 troubleshooting/researching 了。我似乎无法弄清楚这里发生了什么。我正在尝试设置指向我们内部 GitHub 企业服务器的多分支管道项目。同样的问题也发生在其他项目类型中,例如 "GitHub Organization"。这是某种我无法弄清楚的安全问题。

让我们从我所知道的开始...

我已经(据我所知)使用令牌正确配置了 GitHub 插件配置(也根据文档进行了配置)...我可以成功 "Verify Credentials" 并且返回成功。 http://imgur.com/br13adk

我在 GitHub Enterprise Servers Validation

上不断收到此验证问题

http://imgur.com/GnffTeV

我可以成功连接到我的企业 github 服务器上托管的任何一个存储库。当我尝试从 GitHub 源配置多分支项目时,我总是得到存储库空白.... http://imgur.com/2Q9s1mo

我配置了一个自定义记录器来查看发生了什么,分支源插件似乎总是在 api.github.com...

Jan 25, 2016 11:48:23 AM WARNING org.jenkinsci.plugins.github_branch_source.Endpoint$DesciptorImpl doCheckApiUri Jan 25, 2016 11:48:23 AM WARNING org.jenkinsci.plugins.github_branch_source.Endpoint$DesciptorImpl doCheckApiUri Jan 25, 2016 11:54:58 AM WARNING org.jenkinsci.plugins.github_branch_source.AbstractGitHubSCMSource$AbstractGitHubSCMSourceDescriptor doFillRepositoryItems Server returned HTTP response code: 401 for URL: https://api.github.com/user Jan 25, 2016 11:54:58 AM WARNING org.jenkinsci.plugins.github_branch_source.AbstractGitHubSCMSource$AbstractGitHubSCMSourceDescriptor doFillRepositoryItems Server returned HTTP response code: 401 for URL: https://api.github.com/orgs/nhudacin Jan 25, 2016 11:54:58 AM WARNING org.jenkinsci.plugins.github_branch_source.AbstractGitHubSCMSource$AbstractGitHubSCMSourceDescriptor doFillRepositoryItems Server returned HTTP response code: 401 for URL: https://api.github.com/users/nhudacin

我已经为 GitHub 插件配置了 API 端点(如第一个屏幕截图所示),用于 PR Builder 插件并且凭据有效(或者看起来如此) .我认为这可能与企业 API 端点配置有关。

有帮助吗??我要疯了!

我对这个特定场景了解不多,但在 this commit 中你可以看到,他们从正则表达式验证切换到到端点的匿名连接。如果您的服务器在 private mode,它将失败。

我遇到了与 Nick H.

类似的问题

在我的生产 Jenkins 实例中

  • Jenkins 版本 2.17 最新的每周版本,所有插件都是截至 8 月 10 日的最新版本,即
    • GitHub 分支源插件 1.8.1
    • 管道多分支 2.8

我得到:

WARNING: Server returned HTTP response code: -1, message: 'null' for URL: https://api.github.com/users/ORG

即使我在 GitHub Enterprise Servers 上将 API 端点 配置为 http://github.MYDOMAIN/api/v3/

另一方面,在全新本地安装 Jenkins

使用相同的配置我得到:

Aug 11, 2016 3:19:14 PM org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl doFillRepositoryItems

WARNING: Exception retrieving the repositories of the owner ORG on  with credentials USER/****** ( test credentials)

编辑:我找到了一种让它工作的方法,它不是很直观,我在浏览代码并将字符串与插件匹配后找到了它UI

您需要做的是,在您收到 无效凭据 红色错误后按 Advanced... 按钮

然后会出现一个组合框,其中 API endpoints 定义在 Manage Jenkins-> Configure System -> GitHub Enterprise Servers 中。

Select API 端点为您 GitHub 企业实例,选择 Checkout credentials 有权访问该实例,所有存储库的列表将出现。

保存它,并开始一个分支索引,发现上面有 JenkinsFile 的分支。

注意:为了使每次推送都能正常工作,需要在 github Enterprise 中安装一个网络挂钩,您可以通过

Manage Jenkins-> Configure System -> GitHub 然后按第二个 Advanced... 按钮

现在会出现一个 Re-register hook for all jobs 按钮。只需按下它,它就会添加每次你推入匹配的 repos 时都会触发的挂钩。

希望对您有所帮助