是否有任何CI服务将从dockerhub拉?

我已经调查过:Travis CI,Circle CI,Drone.io,但他们似乎都想从github中拉出来。 不过,我已经从github dockerhub拉,已经正确地build立docker形象。

我也看了Jenkins,它似乎有一个插件,可以从dockerhub拉,但我还没有想出如何使用它呢。 我会继续,但jenkins的问题是,我必须自己主持。

我正在寻找CI服务,可以从docker中心拉,对图像运行testing,在Web UI中显示testing结果,还callbackdocker集线器,让它知道发生了什么,所以如果testing失败,dockerhub不会发出webhook推到生产。

任何人都知道我所描述的东西吗? 非常感谢你!

==更新==我一直在继续研究所有的CI选项。 我注意到2个趋势:

  1. 用Dockerreplace旧的虚拟化解决scheme。 例如Travis CI 在这里 。 例如drone.io,它使用Docker作为容器从头开始运行testing,如此处所述。 但是,我不认为他们可以在其中再运行另一层容器,只需运行testing即可。 我不认为你可以build立docker形象。
  2. 使他们的旧虚拟化解决scheme支持Docker CLI,然后您可以构buildDocker镜像,将镜像部署到registry,甚至在Docker容器中运行testing,例如CircleCI 。

2恕我直言对我来说比1好。 如果1和2可以合并,那就太酷了。 但是,这两个解决scheme都是从源代码开始的,并希望执行“构build”。 他们没有能力从DockerHub拉。 而且我不确定docker容器里的testing支持有多好。 我还在试验。

鉴于Nathaniel Waisbrot的回答,jenkins似乎是一个有效的select,可以获得你正在寻找的东西,这基本上就是访问docker中心,并将容器作为构build和testing过程的一部分。

为了得到这个工作,你将需要Jenkins实例的高级定制(在机器级别configuration)。 我认为ClinkerHQ可以满足您的需求,因为它提供了一个专门的托pipe环境,可以高度自定义(甚至可以在Jenkins Shell脚本步骤中安装额外的工具)。 你应该看看Jenkins Docker插件,如果你想用docker dinamically提供Jenkins的奴隶。

DISCALIMER:我深入参与ClinkerHQ。

我用Jenkins做这个,使用“执行shell”命令来运行docker pull 。 build立起来很简单:把jenkins放在docker组里。

如果你使用Fig(我还没有转换到docker-compose来查看它是否仍然是一个问题),那么你需要运行像

 /usr/local/bin/python3.4 -c 'import pty, sys; sys.exit(pty.spawn(sys.argv[1:]) != 0)' fig run my_container ./bin/test 

因为图需要TTY运行。

你可以设置一个web-hook来从Docker Hub中触发Jenkins,但是我可能只是采用这个懒惰的path,或者周期性地构build或者触发与Hub相同的Git更改,但延迟时间为30分钟。


编辑 :我曾经找过一个托pipe的解决scheme(比如特拉维斯)来做到这一点,而不是运行我自己的jenkins,但没有find任何东西。 我认为主要的问题是CI提供商通过在一台机器上托pipe许多客户来赚取利润。 但是允许别人运行任意的Docker容器是一个主要的安全问题。

您可以使用Shippable来执行此操作 – http://www.shippable.com

Docker集线器的支持与Dockerbuild一样支持。 你也可以启用这个工作stream – 从Docker Hub中拉图片 – >从github->拉代码 – > container->中的testing代码 – >如果CI通过,将容器推送到Docker Hub。 http://blog.shippable.com/making-deployments-even-easier-with-docker-build

Codeship在“公开”betatesting中有这个function(如果你想试用的话,你可以要求他们把beta包括进来),他们说这个function将在夏季末期发布。