2013-12-18 152 views
0

我们有一个像这样的设置: 在Linux和Windows 2k8服务器代理木偶大师。 构建系统编译代码(visual studio),并创建一个nuget包并将其上传到由版本号标识的nuget存储库。为了实现Continuos Delivery,我们使用puppet,并希望有一种机制可以使创建的新包自动部署到目标服务器。因此,无论何时客户端发生与主服务器的同步,它都会检查puppet主服务器上可用的新版本,以及是否有新版本将其部署到客户端。部署脚本是存在的,但我面临的问题是如何在每次构建发生后将版本号发送给puppet master,以及如何将其与客户端上部署的版本进行比较。使用木偶实现连续交付

回答

0

不知道你用于版本控制,但我们正在使用github。我们有存储木偶清单的木偶回购,然后我们有我们的软件回购,编码器开发该产品。我们使用此工具从github使用木偶回收来填充/ etc/puppet /环境:https://github.com/adrienthebo/r10k

在傀儡的体现正在下降,他们被分解成项目,例如/ etc/puppet/$ proj_qa/etc/puppet/$ proj_dev等。我们在puppet中设置了自定义模块,该代码将代码从我们的软件github中提取到每个服务器上。编码时的开发人员更新puppet repo中的提交代码。然后R10k根据更新的puppet git repo更新puppet服务器。我目前在我们的puppet服务器的crontab中每5分钟运行r10k。

每个puppet repo都有单独的分支,所以$ proj将会有dev,qa,prod等等,然后r10k可以设置它们,以便它们显示为独立的puppet环境。/etc/environment/goodproject_dev,/ etc/environment/goodproject_qa,/ etc/environment/goodproject_prod基于分支机构。

所以你有dev - >合并到Qa。 Qa测试一切,然后它可以合并到阶段产品等

花了几个月来设置我们的木偶环境和连续集成,所以不是真的可以在一个stackoverflow帖子中完全回答,但我希望你觉得这有帮助。

0

如果我理解你的问题,你正尝试将一个包部署到应用服务器。我假设你已经在包中部署了元数据文件中的版本号。创建两个木偶自定义fact,它引用客户端和主服务器上的版本号。将这些事实包含在你的模块中。让您的部署在运行时比较它们,并在安装的模块版本事实低于服务器事实时部署您的软件包。