我有一个 GitHub 组织帐户,其中包含我正在为多分支管道设置的存储库。除了组织帐户,我还有一个属于组织的空 GitHub 帐户。此空帐户用于设置 Jenkins 可能需要的任何访问令牌或 GitHub 凭据。
我在存储库中为推送、拉取请求以及分支或标记创建事件设置了一个 Web 钩子。此 Web 挂钩在 GitHub 中记录的每个"最近交付"都显示拉取请求事件已发送并收到 200 响应。
在BlueOcean中,如果我手动触发扫描,那么所有分支和PR都会被识别和构建。但是如果我创建了一个 PR,这个事件不会自动触发或由 BlueOcean 引入。阅读 Jenkins 中的日志时,我看到以下消息:
Failed to add GitHub webhook for GitHubRepositoryName[host=github.com,username=ORGANIZATION,repository=PRIVATE_PROJECT]
java.lang.NullPointerException: There is no credentials with admin access to manage hooks on GitHubRepositoryName[host=github.com,username=ORGANIZATION,repository=PRIVATE_PROJECT]
奇怪的是,它说没有任何具有管理员访问权限的凭据,因为我的个人访问令牌具有以下权限:
- 回购 -- 全部
- 管理员:repo_hook -- 全部
- 用户 -- 用户:电子邮件
有什么线索吗?
经过一番头痛,问题原来是一个糟糕的网络钩子URL。我们有一个以前为拉取请求生成器 (PRB( 插件设置的 webhook URL,另一个用于其他事件的 webhook URL。
我在 GitHub 中的 PRB 网络钩子上设置了拉取请求触发器。通过在为我们的其他 URL 配置的 webhook 上标记所需的触发器,可以轻松解决此问题。