我们有这样的设置: Linux和Windows 2k8服务器代理上的木偶大师。 构建系统编译代码(visual studio),并创建一个nuget包并将其上传到使用版本号标识的nuget存储库。为了实现Continuos Delivery,我们正在使用puppet,并且希望有一种机制,其中创建的新包应该自动部署到目标服务器。因此,无论何时客户端与主服务器同步,它都会检查puppet master上可用的新版本,以及是否有新版本将其部署到客户端。部署脚本存在,但我面临的问题是如何在每次构建发生后将版本号提供给puppet master,以及如何将其与客户端上部署的版本进行比较。
答案 0 :(得分:0)
不确定您使用的版本控制,但我们正在使用github。我们有存储木偶出现的木偶回购,然后我们有我们的软件回购,编码器开发产品。我们使用这个工具用github中的木偶回购填充/ etc / puppet / environment:https://github.com/adrienthebo/r10k
在下来的木偶清单中,它们被分解为例如项目/ etc / puppet / $ proj_qa / etc / puppet / $ proj_dev等我们在puppet中设置了自定义模块,根据提交将代码从我们的软件github中提取到每个服务器上。编码时开发人员更新puppet仓库中的提交代码。然后R10k根据更新的puppet git repo更新puppet服务器。我目前在我们的puppet服务器上的crontab中每隔5分钟运行一次r10k。
每个木偶回购都有分支分支,所以$ proj将有dev,qa,prod等,然后r10k做的是它可以设置它们以便它们将作为单独的木偶环境出现,例如/ etc / environment / goodproject_dev,/ etc / environment / goodproject_qa,/ etc / environment / goodproject_prod基于分支。
所以你有dev - >合并到Qa。 Qa测试一切然后它可以合并到舞台prod等。
设置我们的木偶环境和连续集成花了几个月的时间,所以在stackoverflow帖子中没有真正可以完全回答的东西,但我希望你觉得这很有帮助。
答案 1 :(得分:0)
如果我理解您的问题,那么您正在尝试将程序包部署到应用程序服务器。我假设您在已使用该软件包部署的元数据文件中拥有版本号。创建两个木偶自定义fact,它引用客户端和主服务器上的版本号。在您的模块中包含这些事实。让您的部署在运行时比较它们,如果安装的模块版本事实小于您的服务器事实,则部署您的软件包。