厨师食谱连续部署

我正尝试将我的厨师工作stream程融入到我通常的持续集成/部署工作stream程中。

我pipe理已经有一个jenkins的任务,检查git回购和运行foodcritic,但我想不出最后一步:推到食谱的厨师服务器。

我想到的一些想法:

  • 使用刀:问题是,在我的jenkins服务器的build筑节点上没有安装刀,而AFAIK刀需要一个食谱目录来推动食谱。 另一方面,我不认为让jenkins用户执行所有刀子命令是一个好习惯
  • 使用ruby刀,写一些ruby脚本供jenkins使用:可能会工作,但我不想尝试,因为我不认为这是最好的select
  • 用cURL或任何类似的库进行一些REST-API调用。 在阅读API文档之后,我认为实现这一点是不值得的。

我的build筑节点将作为OSX和debian可用 – 如果这是我可能select的工具必不可less的。

所以任何经验,将不胜感激!

如果你想把食谱推到一个厨师服务器上,只是为了testing目的,或许你会更乐意与厨师零 ,这是一个“快速启动内存厨师服务器进行testing和独奏的目的”。

或者,如果您只是试图testing食谱,则可以使用test-kitchen + minitest-chef-handler在没有厨师服务器的情况下运行整个testing。 我build议你不要使用“ 蝙蝠 ”,而是遵循最小的主厨处理程序testing案例的例子

Serverfault注:我仍然不能发布更多的2个链接作为一个新的成员,所以请按照下面的方法:

minitest-chef-handler github: calavera/minitest-chef-handler bats github: test-kitchen/test-kitchen/wiki/Getting-Started test cases examples github: calavera/minitest-chef-handler#test-cases 

只是一个评论:Foodcritic是不够的testing转移到生产恕我直言。 就个人而言,我想在自动化生产之前在虚拟机上进行一些forms的stream浪testing。

不过,这不是我的。

最终,你需要做的是在某处运行一个刀子命令。 不pipe是Jenkins还是Jenkins之外的stream程。

如果你不能/不想在Jenkins中运行刀,那么我会build议使用Jenkins在git分支之间移动代码。 (即Jenkins监视testing分支,当代码通过testing时,您使用git访问将其移至生产分支。)

然后,您需要在Jenkins之外build立一个或多或less与Jenkins做的事情(监视一个存储库并在发现变化时采取行动)。 Jenkins很容易设置,所以如果有关于使用主服务器的担心,你可以在一个独立的机器上运行一个“独立的”jenkins,只是刀上传。

在这艘船中,你并不孤单,每个人都在为如何创build一个适合他们组织的厨师工作stream程而苦苦挣扎。