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

时间:2015-03-02 11:07:54

标签: jenkins continuous-integration docker travis-ci dockerhub

我调查过:Travis CI,Circle CI,Drone.io但他们似乎都想从github拉出来。但是,我有来自github的dockerhub pull并且已经正确构建了docker镜像。

我也看过Jenkins,它似乎有一个插件可以从dockerhub拉出来,但我还没弄明白如何使用它。我会继续这样做,但詹金斯的问题是我必须自己主持。

我正在寻找CI服务,它可以从docker hub获取,在映像上运行测试,在Web UI中显示测试结果,还可以回调docker hub以让它知道发生了什么,所以如果测试失败,dockerhub将不会发出webhook推动生产。

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

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

  1. 用Docker替换旧的虚拟化解决方案。例如Travis CI here。例如,drone.io使用Docker作为容器从开头运行测试here。但是,我不认为他们可以再在其中运行另一层容器,只需运行测试即可。而且我也不认为你可以建立码头图像。
  2. 让他们的旧虚拟化解决方案支持Docker CLI,然后您可以构建docker镜像,将映像部署到注册表,甚至在docker容器内运行测试,例如CircleCI
  3. 2恕我直言,对我来说比1好。如果1& 2可以组合,那将很酷。但是,这两个解决方案都从源代码开始,并希望进行“构建”。他们无法从DockerHub中提取。而且我不确定在docker容器内进行测试的支持有多好。我还在尝试。

4 个答案:

答案 0 :(得分:3)

鉴于Nathaniel Waisbrot的回答,Jenkins似乎是一个有效的选择,可以获得你想要的东西,基本上,访问docker hub并在构建和测试过程中调出一个容器。

为了使其正常工作,您需要为Jenkins实例进行高级别的自定义(在机器级别进行配置)。我认为ClinkerHQ可以满足您的需求,因为它提供了一个可以高度自定义的专用托管环境(甚至可以安装其他工具以在Jenkins Shell Script步骤中使用)。你应该看一下Jenkins Docker plugin,如果你想用Docker配置Jenkins奴隶。

DISCALIMER:我深深卷入了ClinkerHQ。

答案 1 :(得分:1)

我使用Jenkins执行此操作,使用“execute shell”命令运行docker pull。它很容易设置:只需将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

因为Fig需要运行TTY。

您可以设置一个Web钩子来触发Docker Hub中的Jenkins,但我可能只是采用延迟路径并定期构建或触发与Hub相同的Git更改,但延迟时间为30分钟。 / p>


编辑:我曾经找过一个托管解决方案(比如Travis),而不是运行我自己的Jenkins,但没有找到任何东西。我认为主要的问题是CI提供商通过在一台机器上托管许多客户来获利。但允许某人运行任意Docker容器是一个主要的安全问题。

答案 2 :(得分:1)

您可以使用Shippable执行此操作 - www.shippable.com

支持从Docker中心拉取,Dockerbuild也是如此。您还可以启用以下工作流程: - 从docker hub拉取图像 - >从github中拉取代码 - >在容器内部测试代码 - >如果CI通过,则将容器推送到Docker Hub。 http://blog.shippable.com/making-deployments-even-easier-with-docker-build

答案 3 :(得分:0)

Codeship在“公共”测试版中有此功能(如果您想尝试一下,可以要求他们将您纳入测试版)​​,他们表示该功能将在夏季结束时提供。