我调查过:Travis CI,Circle CI,Drone.io但他们似乎都想从github拉出来。但是,我有来自github的dockerhub pull并且已经正确构建了docker镜像。
我也看过Jenkins,它似乎有一个插件可以从dockerhub拉出来,但我还没弄明白如何使用它。我会继续这样做,但詹金斯的问题是我必须自己主持。
我正在寻找CI服务,它可以从docker hub获取,在映像上运行测试,在Web UI中显示测试结果,还可以回调docker hub以让它知道发生了什么,所以如果测试失败,dockerhub将不会发出webhook推动生产。
任何人都知道我所描述的内容吗?非常感谢你!
==更新== 我一直在研究所有CI选项。我注意到2个趋势:
2恕我直言,对我来说比1好。如果1& 2可以组合,那将很酷。但是,这两个解决方案都从源代码开始,并希望进行“构建”。他们无法从DockerHub中提取。而且我不确定在docker容器内进行测试的支持有多好。我还在尝试。
答案 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在“公共”测试版中有此功能(如果您想尝试一下,可以要求他们将您纳入测试版),他们表示该功能将在夏季结束时提供。