我已经设置了 github webhook,并在 jenkins 中的 github 插件上设置了日志。Jenkins 似乎在 webhook 上收到了正确的负载。但是日志显示 github webhook 考虑戳我的作业,然后它跳过了,因为它没有找到匹配的存储库
我使用的是 Jenkins 2.1,最近迁移到了 2.5
Received POST for https://github.com/<org_name>/<repo_name>
May 20, 2016 3:17:49 PM FINE org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber$1 run
Considering to poke echo_pipeline
May 20, 2016 3:17:49 PM FINE org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber$1 run
Skipped echo_pipeline because it doesn't have a matching repository.
我已将此存储库添加到管道作业的配置中,并且我也在管道中克隆此存储库。我还需要在何处配置存储库,以便 webhook 考虑到这一点并且不会跳过它
答案1
我知道这是一个老话题,但为了让那些最终到达这里的人受益:
1)你的任务必须至少手动运行一次,钩子才会起作用
2) 推送到 Jenkins 的 repo、项目配置中的 GitHub 项目 url 以及管道作业中的 repo 必须对齐。
3)你需要在 Jenkins 中使用日志记录器来查看 GitHub 发送的内容:https://support.cloudbees.com/hc/en-us/articles/204880580-How-do-I-create-a-logger-in-Jenkins-for-troubleshooting-and-diagnostic-information-
我深入研究了 Jenkins 代码(https://github.com/jenkinsci/github-plugin/blob/master/src/main/java/org/jenkinsci/plugins/github/webhook/subscriber/DefaultPushGHEventSubscriber.java#L88-L107) 来找出不匹配的地方。您可以转到 Jenkins 实例脚本控制台 (/script) 并执行以下命令来查看管道中的预期内容:
import com.cloudbees.jenkins.GitHubRepositoryNameContributor;
for (Item job : Jenkins.getInstance().getAllItems(Item.class)) {
print(GitHubRepositoryNameContributor.parseAssociatedNames(job))
}
它将循环遍历您的所有作业并输出正在检查的存储库的值。