1

我调查过:Travis CI、Circle CI、Drone.io,但他们似乎都想从 github 中提取数据。但是,我已经从 github 获取了 dockerhub pull 并正确构建了 docker 映像。

我也看了一下Jenkins,好像有个插件可以从dockerhub拉出来,但是还没想好怎么用。我会继续这样做,但 Jenkins 的问题是我必须自己托管它。

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

任何人都知道像我描述的那样吗?非常感谢!

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

  1. 用 Docker 替换他们旧的虚拟化解决方案。例如这里的 Travis CI 。例如,drone.io 使用 Docker 作为容器从头开始运行测试,如此处所述。但是,我认为他们不能再在其中运行另一层容器,您只需运行测试即可。而且我认为您也无法构建 docker 映像。
  2. 让他们的旧虚拟化解决方案支持 Docker CLI,然后您可以构建 docker 映像,将映像部署到注册表,甚至在 docker 容器内运行测试,例如CircleCI

2 恕我直言对我来说比 1 好。如果 1&2 可以结合起来,那就太酷了。但是,这两种解决方案都从源代码开始,并希望进行“构建”。他们没有能力从 DockerHub 中提取数据。而且我不确定对 docker 容器内部测试的支持有多好。我还在试验。

4

4 回答 4

3

鉴于 Nathaniel Waisbrot 的回答,Jenkins 似乎是获得所需内容的有效选择,基本上,访问 docker hub 并在构建和测试过程中启动一个容器。

为了让它工作,您需要为您的 Jenkins 实例进行高级别的自定义(机器级别的配置)。我认为ClinkerHQ可以满足您的需求,因为它提供了一个可以高度定制的专用托管环境(甚至安装其他工具以在 Jenkins Shell 脚本步骤中使用)。如果你想用 docker 动态地配置 Jenkins slave,你应该看看Jenkins Docker 插件。

DISCALIMER:我深入参与 ClinkerHQ。

于 2015-03-03T12:25:31.417 回答
1

我使用 Jenkins 执行此操作,使用“执行 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-hook 来从 Docker Hub 触发 Jenkins,但我可能只是采取惰性路径,要么定期构建,要么在与 Hub 相同的 Git 更改上触发,但延迟 30 分钟。


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

于 2015-03-02T13:32:47.163 回答
1

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

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

于 2015-04-14T05:18:32.537 回答
0

Codeship 在“公开” Beta 测试中具有此功能(如果您想尝试,可以要求他们将您包括在 Beta 中),他们说该功能将在夏末推出。

于 2015-07-21T16:40:23.527 回答