如何通过Web hook从Docker Hub与Jenkins进行通信?

Car*_*ter 7 webhooks jenkins docker dockerhub

似乎有很多例子可以轮询GitHub,但我如何轮询Docker Hub并根据它来触发构建呢?

我在Docker Hub中为我的自动构建设置了一个webhook,但是我无法看到如何在Jenkins中进行轮询.

似乎有这个Jenkins插件:https://wiki.jenkins-ci.org/display/JENKINS/DockerHub+Plugin

但是,据我所知,自从Docker Hub上的API更改以来,该插件已被破坏.

更新:

似乎答案是使用Build Triggers下的Trigger Builds Remotely选项,但由于匿名没有构建权限,它失败了.然后我切换到使用这个插件:https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

所以URL变成这样:https://jenkinsserver.com/buildByToken/build?job = test&token = test

如果我通过浏览器(甚至是隐姓埋名)发布到该URL,但是没有使用cURL,则该方法有效.我明白了:

$ curl -X POST https://jenkinsserver.com/buildByToken/build?job=test&token=test

<html><head><meta http-equiv='refresh' content='1;url=/securityRealm/commenceLogin?from=%2FbuildByToken%2Fbuild%3Fjob%3Dtest'/><script>window.location.replace('/securityRealm/commenceLogin?from=%2FbuildByToken%2Fbuild%3Fjob%3Dtest');</script></head><body style='background-color:white; color:white;'>

Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:

Permission you need to have (but didn't): hudson.model.Hudson.Read
 ... which is implied by: hudson.security.Permission.GenericRead
 ... which is implied by: hudson.model.Hudson.Administer
-->

</body></html>   
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我可以通过cURL让它工作:

curl -X POST https://user:token@jenkinsserver.com/buildByToken/build?job=test&token=test
Run Code Online (Sandbox Code Playgroud)

但是,Docker Hub不喜欢那个URL ...... 在此输入图像描述

我在这里错过了什么?我是否走在正确的轨道上?如果你是某个触发器和来自Docker Hub webhook的Jenkins任务的人,你是如何做到的?

Gor*_*Sun 0

作者的话:这个插件的开发确实处于休眠状态,但可以随时复活,尤其是在有具体用例的情况下。当 DockerHub hook 发布时,我创建了这个插件作为 PoC,但没有具体用法来进一步实验。请随意贡献,以便该插件可以支持您自己的使用。