如何设置持续集成(Ansible)?

我们有一个相当大的代码库,我们使用Ansible来部署我们的服务器。 我现在想要开始持续集成,我也在考虑使用Ansible。

我认为我们可以做到这一点的方式是,当合并开发或掌握一些东西时,在一些外部服务器(自我pipe理的Jenkins服务器或某种商业服务)上使用webhook,然后在DigitalOcean上使用api生成一个服务器,运行可以设置的东西(从多个仓库中提取并创buildtesting数据),然后运行unit testing。

我想使用Ansible的原因是因为它确保我们所拥有的环境与我们的生产服务器完全相同。 但是我不确定Ansible是否是正确的工具,因为我认为Ansible通常是一种编排工具。

我当然也可以设置一些Docker文件,但这意味着我需要保持Dockerfile和Ansible脚本的同步(并且我们将在未来几个月内将LOT更改为我们的设置)。

任何人都可以分享一些build议吗? 我应该使用Ansible,Docker,还是有其他更好的select? 我可以设置一个Jenkins服务器,但我更愿意使用商业服务,因为我想避免需要pipe理Jenkins服务器。 而且我也宁愿避免使用DigitalOcean,只是把持续集成全部放在一个平台上(Jenkins /其他?)。

我环顾了各种商业CI平台,但是我不能真正find使用Ansible进行testing的任何事情。

所有的提示,欢迎!

我是Suntransfers.com的devops工程师,我们有一个类似于你所描述的设置。 首先从Github的webhooks触发jenkins的工作。 jenkins作业在jenkins slave代理上运行,由jenkins使用Amazon EC2 Plugin自动pipe理。 关于这件事的好处是,jenkins服务器上没有任何工作,所有的工作都抛到了奴隶身上。

当工作负载消失时,插件也会杀死从服务器,并在工作负载增加时自动激活从服务器。 为了“生成”这些从属AMI,我们使用Packer , 打包器的输出是一个AMI,jenkins被configuration为根据需要启动并拆除AMI的实例。 我们使用bash脚本在打包器中configurationAMI,但打包器也允许您使用Ansible。

有可能有各种types的奴隶,例如,我们有一个AMI用于运行unit testing,一个用于安装Docker(用于构build和functiontesting泊坞窗图像)。 我们已经configuration了这些工作,以便jenkins将使用任何一个工作所需要的工作。

如果您决定构build类似于此的东西,请查看关于如何部署完全预configuration的jenkins的这篇文章 ,这就是我们所做的,它的工作非常好。

希望有所帮助!