推送图像时Docker触发jenkins作业

推送图像时Docker触发jenkins作业,docker,jenkins,webhooks,Docker,Jenkins,Webhooks,我正在尝试在docker image build上构建jenkins作业(远程触发构建),构建docker hub上的所有内容如下: HISTORY ID Status Date & Time 7345... ! ERROR 10/12/17 10:03 原因(我假设):Docker没有经过身份验证,无法发布到jenkins url 问题:当图像被推送到docker hub时,如何自动触发作业?您可以尝试以下插件: 它声称可以实现您想要的功能。您

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

HISTORY
ID        Status      Date & Time
7345...   ! ERROR       10/12/17 10:03
原因(我假设):Docker没有经过身份验证,无法发布到jenkins url


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

您可以尝试以下插件:


它声称可以实现您想要的功能。

您可以尝试以下插件:


你可以在Docker Hub wich中配置一个WebHook,它将触发Jenkins构建。

你可以在Docker Hub wich中配置一个WebHook,它将触发Jenkins构建。

Docker Hub WebHook针对你的Jenkins服务器端点,需要定期将映像复制到你需要的另一个repoown[查看Docker Hub->Watchman->Jenkins通过松弛通知集成的其他答案]

更多细节 您需要设置一个cron作业,定期轮询源repo(
docker pull
),以[docker]提取其“最新”标记,如果检测到更改,则将其重新标记为您自己的,并[docker]推送到您自己的repo(例如,源docker Hub repo的“克隆”),其中您已经针对Jenkings构建端点设置了webhook

然后,也只有到那时(在你自己的回购协议中),Jenkins等插件才能为你工作

轮询Dockerfile/release更改 作为对图像更改(由于docker图像的本地缓存,不需要产生太多网络流量)轮询注册表的替代方法,您还可以使用
wget
在Github上轮询源Dockerfile。例如,官方Docker Hub图像的DockerFile是。如果Github repo发布了版本,您可以使用Github Watch>releases Only功能获取它们的推送通知,如果它们有CI docker版本。Docker映像通常在代码发布后延迟可用,即使完全自动化,因此映像轮询更可靠

其他项目
还有一个2019年谷歌代码夏令营项目的提案,该项目试图为Jenkins用户(显然包括谷歌)解决这个问题,但遗憾的是,该提案没有被参与者采纳。

针对Jenkins服务器端点的Docker Hub网络钩子需要定期将图像复制到您拥有的另一个repo[请参阅Docker Hub->Watchman->Jenkins通过松弛通知集成的另一个答案]

更多细节 您需要设置一个cron作业,定期轮询源repo(
docker pull
),以[docker]提取其“最新”标记,如果检测到更改,则将其重新标记为您自己的,并[docker]推送到您自己的repo(例如,源docker Hub repo的“克隆”),其中您已经针对Jenkings构建端点设置了webhook

然后,也只有到那时(在你自己的回购协议中),Jenkins等插件才能为你工作

轮询Dockerfile/release更改 作为对图像更改轮询注册表的替代(由于docker图像的本地缓存,不需要产生太多网络流量)您还可以使用
wget
在Github上轮询源Docker文件。例如,Docker Hub官方映像的Docker文件为。如果Github repo发布,您可以使用Github Watch>releases Only功能获取这些文件的推送通知,如果它们具有CI Docker版本。Docker映像通常可以通过即使完全自动化,代码发布后也会延迟,因此图像轮询更可靠

其他项目 还有一个2019年谷歌代码夏令营项目的提案,名为“试图为詹金斯用户(包括谷歌)解决这个问题”,但遗憾的是,该提案没有被参与者采纳

  • 拉动并运行Watchtower docker image,以轮询docker Hub或码头上您需要的任何第三方公共docker映像(通常作为您自己容器的基本映像)…轮询这里并不意味着每5分钟左右就粗略地提取一次整个图像-我们定期监视图像中的更改,大部分时间只下载校验和(SHA摘要)(当本地缓存的图像中没有更改时)

  • 在Jenkins服务器中安装,并将其设置为接收Slack格式的通知,该通知使用令牌进行保护,以远程或-更安全-本地触发构建(这些触发器将来自Watchtower容器,而不是Slack)

  • 设置Watchtower,以便在图像(标记)中的每次更改时向Jenkins端点发布松弛消息

  • 或者,如果您的规模太大,最终可能导致过载,并导致整个Docker Hub因大量HTTP GET请求而崩溃(如果时间触发器出错并变成一个紧密循环),请确保在了望塔顶部进行一些安全检查,以“监视守望人”

  • 拉动并运行Watchtower docker image,以轮询docker Hub或码头上您需要的任何第三方公共docker映像(通常作为您自己容器的基本映像)…轮询这里并不意味着每5分钟左右就粗略地提取一次整个图像-我们定期监视图像中的更改,大部分时间只下载校验和(SHA摘要)(当本地缓存的图像中没有更改时)

  • 在Jenkins服务器中安装,并将其设置为接收Slack格式的通知,该通知使用令牌进行保护,以远程或-更安全-本地触发构建(这些触发器将来自Watchtower容器,而不是Slack)

  • 设置Watchtower,以便在图像(标记)中的每次更改时向Jenkins端点发布松弛消息

  • 或者,如果您的规模太大,可能会导致过载,并导致整个Docker Hub因大量HTTP GET请求而崩溃(如果时间触发器出错和tur