在新构建可用后触发厨师持续部署

时间:2014-10-05 22:15:08

标签: continuous-integration teamcity chef continuous-deployment

我是厨师的新手,我在Google上尝试了所有可能的搜索词,但我找不到关于如何使用厨师触发持续部署的单一文档/博客。 厨师服务器和厨师客户都设置好;但我无法弄清楚如何触发部署。如果新的构建可用,如何让chef-client运行特定的步骤/烹饪书。

用例非常简单: 我将teamcity作为我的持续集成工具,只要合并发生在分支上,teamcity就会创建存档并将其上传到构建的中央存储库。 现在我想使用chef从中央仓库下载这些构建,停止以前运行的构建并部署新构建。但是如何触发厨师客户下载新版本以及如何触发特定食谱以进行此用例处理。 (我不想在每次触发部署时运行系统配置烹饪书)

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

我会使用deploy artifact cookbook。您只需要编写一个包装器来处理应用程序的任何特殊情况(这种自定义非常灵活),并更新指定应用程序版本的属性。您可以使用几个选项来更新属性。

环境属性

如果您运行定期运行厨师的厨师 - 客户服务,您可以让您的CI使用刀编辑厨师环境。 CI的每个新版本都会调用chef-server来更新环境以使用新版本的应用程序。下一个厨师 - 客户端运行将获取该版本更改,并更新您的应用程序。

传递JSON

您可以直接在所需节点上运行CI运行chef-client,并使用-j标志传入节点json文件。在这种情况下,您的CI将直接传递新版本。

其他属性位置

遵循与Environment属性相同的模式,您也可以使用knife来更新节点或角色属性。当chef-client运行时,这些都被合并在一起,因此它们中的任何一个都可以工作。