按下图像时,Docker会触发jenkins作业

时间:2017-10-12 15:23:54

标签: docker jenkins webhooks

我正在尝试在docker image build上构建一个jenkins作业(触发器构建远程),构建我在docker hub上的所有内容:

HISTORY
ID        Status      Date & Time
7345...   ! ERROR       10/12/17 10:03

原因(我假设):Docker未经过身份验证,无法发布到jenkins网址。

问题:当图像被推送到docker hub时,如何自动触发作业?

5 个答案:

答案 0 :(得分:0)

您可以尝试使用以下插件:https://wiki.jenkins.io/display/JENKINS/CloudBees+Docker+Hub+Notification

声称要做你正在寻找的事情。

答案 1 :(得分:0)

您可以在DockerHub中配置WebHook,这将触发Jenkins-Build。

答案 2 :(得分:0)

针对您的Jenkings服务器端点的Docker Hub webhooks要求将映像的定期副本复制到您拥有的另一个存储库中[请参阅我的Docker Hub-> Watchman->通过Slack通知进行Jenkins集成的其他答案]。

更多详细信息

您需要通过对源存储库进行定期轮询(docker pull)来设置cron作业,以使其[docker]标记其“最新”标记,如果检测到更改,则将其重新标记为您自己的标记和[docker]推送到您拥有的存储库(例如,源Docker Hub存储库的“克隆”),在此您已经建立了一个针对Jenkings构建端点的webhook。

然后,只有这样(在您自己的回购协议中),Jenkins插件(例如Docker Hub Notification Trigger)才能为您服务。

对Dockerfile的轮询/版本更改

作为轮询注册表以更改映像的替代方法(由于docker映像的本地缓存而无需生成大量网络流量),您还可以使用wget在Github上轮询源Dockerfile。例如,官方Docker Hub映像的Dockerfile是here。万一Github仓库发布了版本,您可以使用Github Watch>仅发布版本以及具有CI docker构建的方式获得有关它们的推送通知。即使在完全自动化的情况下,代码发布后通常也会延迟提供Docker映像,因此映像轮询更加可靠。

其他项目

还有一个名为Polling Docker Registries for Image Changes的2019年Google Summer of Code项目的提案,该项目试图为Jenkins用户(显然包括Google)解决此问题,但可惜参与者没有参与。

>

答案 3 :(得分:0)

  1. 拉并运行>望塔泊坞窗映像,以轮询您需要的Docker Hub或Quay上的任何第三方公共Docker映像(通常作为您自己容器的基础映像)。 Here's how。这里的“轮询”并不意味着每5分钟左右粗略地拉动整个图像-我们会定期监视图像中的更改,大部分时间(当本地缓存中没有更改时)仅下载校验和(SHA摘要)图片)。

  2. 在您的Jenkins服务器中安装Build Token Root Plugin并将其设置为 receive 带有令牌的Slack格式通知,以远程触发构建-或-在本地安全触发(那些触发将来自Watch望塔容器,而不是Slack)。 Here's how

  3. 设置Watch望塔,以在需要更改图像(标签)时将Slack消息发布到Jenkins端点。 Here's how

  4. (可选),如果规模如此之大,以至于最终可能会导致超载,并通过泛滥的HTTP GET请求关闭整个Docker Hub(如果时间触发器出错并变成一个紧密的循环),请确保在Watch望塔顶部进行一些安全检查,以“看守看守人”。

答案 4 :(得分:0)

  1. 运行带有周期性cron的{​​{1}}作业,以列出感兴趣的docker映像(here's the script)中的所有标签。请注意,此脚本要求将docker search图像替换为现有图像(例如jannis/jq)。

  2. 将结果标签列表保存到文件中,并监视其更改(例如,使用inotifywait)。

  3. 使用Generic Webhook Trigger插件,使用docker run --rm -i imega/jq向您的Jenkins服务器端点发送POST请求。

注意:

  1. 出于效率的考虑,此标签列表脚本应限制在几个首页(例如3个)首页或带有几个标签的简单存储库中,

  2. 图像标签监视依赖于每次图像更改后正确(自动)更新的标签,而不是像Ubuntu标签(例如curl几天前更新-晚十一月,但五月中旬的标签没有变化。