Chef infra 如何让测试厨房多次运行同一厨师食谱?

Chef infra 如何让测试厨房多次运行同一厨师食谱?,chef-infra,test-kitchen,Chef Infra,Test Kitchen,我有一个用于部署应用程序的厨师食谱。每次配方运行时,它都会创建一个新的“release”(带有当前时间戳)目录,并删除旧的“release”目录,只留下5个最新的“release”目录。(类似于Capistrano的keep_版本的工作原理) 为了测试该功能,我需要运行我的“部署”配方6次,并验证只有5个“发布”目录。似乎我不能在run_列表中多次使用相同的配方 有什么想法吗 谢谢 2019年更新:按照 旧的解决方案: 可以使用重复的套件名称两次(或多次)聚合节点 e、 g.在.kitchen.

我有一个用于部署应用程序的厨师食谱。每次配方运行时,它都会创建一个新的“release”(带有当前时间戳)目录,并删除旧的“release”目录,只留下5个最新的“release”目录。(类似于Capistrano的keep_版本的工作原理)

为了测试该功能,我需要运行我的“部署”配方6次,并验证只有5个“发布”目录。似乎我不能在run_列表中多次使用相同的配方

有什么想法吗


谢谢

2019年更新:按照

旧的解决方案:

可以使用重复的套件名称两次(或多次)聚合节点

e、 g.在.kitchen.yml中运行“默认”套件两次:

suites:
  - name: default
    run_list:
      - recipe[your-cookbook::recipe]
    attributes:
  - name: default
    run_list:
      - recipe[your-cookbook::recipe]
    attributes:
但是,您可能希望使用来测试它,而不必每次都聚合一个节点


如果您使用kitchen dokken来测试您的烹饪书,您只需在节点聚合后再次执行“kitchen converge”。这类似于在聚合节点上再次运行chef客户端。

现在测试厨房中的provisioner中有一个选项,允许您运行多个聚合

下面的provisioner配置将告诉Chef收敛3次:

provisioner:
  name: chef_zero
  product_name: chef
  deprecations_as_errors: true
  multiple_converge: 3

你知道怎么做了吗?我试过下面的答案(没有),我试过两次包含默认值的特殊配方(没有)。在这两种情况下,run_list是merge或resources是merge。我为我的案例找到了解决方法。我使用的是“特殊脚本”,在这里我按顺序运行特定的厨房作业。所以在我的例子中,脚本将:
销毁
创建
收敛
收敛
验证
销毁
-destroy@Lukino我能够得到建议的解决方案。不幸的是,我没有(见下面的评论)。也许这是一个奇怪的设置(太多的宝石围绕着这个),无论如何,应该有这个默认没有任何肮脏的黑客你的投诉既没有提供测试厨房的版本号,也没有你正在使用的驱动程序。嗯,你刚才添加了版本。我不是在抱怨,只是想弄明白为什么它没有像我记得的那样起作用。我明天将更新版本。您声称我的解决方案无效。轮到你提供信息/证据了……我有TK 1.3.1版和KV 0.16.0版。更新到13小时前编辑的版本后,以下
-name:SSHAccess-2x-run data\u bags\u路径:“测试/集成/SSHAccess/data\u bags”运行列表:-配方[ssh\u访问::默认]属性:{}-名称:SSHAccess-2x-run data\u bags\u路径:“测试/集成/SSHAccess/data\u bags”运行列表:-配方[ssh_access::default]属性:{}
在运行
厨房测试SSHAccess-2x-run
时,不会运行两次收敛。Driver=Vagrant,Provider=libvirt。我现在无法更彻底地检查原因。我稍后将返回此问题