【问题标题】:Berkshelf - community cookbook versioningBerkshelf - 社区食谱版本控制
【发布时间】:2014-03-08 05:51:07
【问题描述】:

现在我正在使用 Berkshelf 从我的本地存储库或我正在使用的社区食谱(例如 java / rvm 等)中提取食谱。

我正在将我的项目从使用分叉的社区食谱转变为直接从 github.com 拉取 berkshelf。问题是社区食谱上没有版本控制。我不能告诉 berkshelf 我正在使用旧版本的社区食谱,因为它根本不存在于 github 上。版本或与之相关的任何内容都没有分支。我可以通过查看提交日志(对于所需版本)来简单地分叉存储库,但这是我试图摆脱的额外开销(维护分叉)。

最佳解决方案是什么? Berkshelf 无法从某个地方为社区食谱获取旧版本,这在我看来是错误的。

【问题讨论】:

    标签: github chef-infra berkshelf


    【解决方案1】:

    社区食谱是版本化的。

    Berkshelf 文件顶部的 site directive 将从 URL“http://cookbooks.opscode.com/api/v1/cookbooks”下载社区食谱:

    site :opscode
    
    cookbook "xxxx", "1.0"
    cookbook "yyyy", "2.0"
    

    正如 Seth 指出的那样,这比从 github 中检索要好,因为它可以确保您获得已发布的版本。另一个好处是传递依赖将被自动检索。

    社区食谱使用标签进行发布管理。如果您真的、真的、真的想继续直接从 github 检索它们,您可以执行以下操作:

    cookbook "artifact", github: "opscode-cookbooks/mysql", tag: "v4.0.14"
    

    如果 github 中的所有食谱都遵循 opscode 的示例,那就太好了。然后,当我们将它们用作依赖项时,我们会知道哪个提交代表元数据文件中所述的实际版本....

    【讨论】:

      【解决方案2】:

      是的,这就是为什么您不应该使用来自 SCM 位置的食谱。相反,请使用 api.berkshelf.com 获取社区食谱。

      【讨论】:

      • 澄清:此答案是否仅适用于 Berkshelf 3.0?
      • 看起来不错,但听起来开销很大。我想我要么分叉 github 食谱并添加我自己的标签(似乎旧版本的食谱没有标签),或者干脆从社区网站拉出来并使用 berkshelf 上的锁文件。这样,我仍然可以通过指向分叉继续我的操作,并且仍然能够在我的分叉将提供的隔离中测试升级的社区食谱。 P.S berkshelf 3.0 可以与 Chef 10.x 一起正常工作吗?升级到 11 在我们的时间表上,但我现在正在做的事情优先。
      猜你喜欢
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多