使用Ansible,Jenkins和docker工具来构build快速的testing环境
我正在计划用可靠的,jenkins和docker工人一起build造testing环境。计划是这样的。
为你在环境中使用的每一个工具创build一个可靠的剧本,并将它们存储在git上。 使用jenkins创build工作在dev服务器上创builddocker容器,并使用合适的剧本来configurationdocker容器。 Jenkins作业将被创build,以便用户可以select他们想要与docker容器一起使用的剧本,并相应地构build容器。
整个概念可以概括为如下图所示。
我看到的好处是
自动复制精确的生产环境。
根据需要缩放您的testing环境。
为单个服务器上的应用程序testing提供不同的平台。
更快的集成testing。
推广敏捷方法。
自由开发和定制testing环境。
开发人员和testing人员可以自行创build环境,即使他们对操作系统,configuration没有任何了解。
在干净的环境中testing应用程序的部署。
有没有人实施过这样的环境架构,我想讨论一下这个可行性的实际好处。
我正在使用类似但不同的方法:
-
定义Dockerfiles或厨师/木偶/ ansible /食盐供应。 就像你的方法一样。
-
把这些描述放在版本控制之下。 就像你的方法一样。
-
使用Jenkins A来CI-和每晚构build图像并将其上传到registry中。 为了pipe理不同的版本和保留旧的图像。 这将在您的图表中引入一个图像registry。
-
用Jenkins-Swarm从属程序扩展这些图像。 这可以在您的Jenkins环境中进行临时部署。
在这里,我将软件的构build与构build奴隶本身的构build分开。
-
我部署一个Jenkins B,以便在环境中构build软件。
-
现在我select要永久部署的容器,并构build要按需部署的容器。
- 在build筑工作中大量使用的永久性容器,起始于群居奴隶,每天晚上进行交换。
- Ad-hoc容器由Jenkins-Docker-Pluginpipe理。
- 对于更复杂的环境configuration,我使用docker-compose来pipe理ad-hoc可用性。
- 对于ad-hoc环境,即运行这些configuration的虚拟机,我使用docker-swarm。
图:
如果你想用一个给定的操作系统上给定包的最新可用版本的docker镜像进行testing,那么你需要设置每晚的docker镜像重build。 我有一个非常小的,简单的项目,可以让你启动和夜间docker图像重build在https://github.com/zbeekman/nightly-docker-rebuild 。 我使用这个来从源代码重buildGCC中继,但是您可以轻松地使用它来从软件包pipe理器安装/升级软件包,或者处理任何其他可能在上游更新并对您的项目有潜在影响的构build/运行时依赖。 这样,您可以在客户/用户遇到问题之前及早发现问题。