使用 Berkshelf 解决递归 git Cookbook 依赖关系

2023-11-29

TL;博士版本:Berkshelf 是否能够解决基于 Git 的说明书中的递归依赖关系?如果可以,如何解决?

我尝试使用 Berkshelf 管理我的 Chef 食谱依赖项。这些食谱都存储在内部 Git 存储库中。依赖关系如下:

env_dockerhub_dev 
  >>depends on>> app_dockerhub 
    >>depends on>> app_docker

我的项目中的主要 Berksfile 如下所示:

source "https://supermarket.chef.io"

cookbook "env_dockerhub_dev", git: "git@URL_TO_GIT_SERVER/chef_env_dockerhub_dev.git"

The env_dockerhub_dev食谱有一个metadata.rb像这样:

name             'env_dockerhub_dev'
...
depends          'app_dockerhub'
depends          'base_ubuntu'

and a Berksfile像这样:

source "https://supermarket.chef.io"

cookbook "app_dockerhub", git: "git@URL_TO_GIT_SERVER/chef_app_dockerhub.git"
cookbook "base_ubuntu", git: "git@URL_TO_GIT_SERVER/chef_base_ubuntu.git"

当我现在跑步时berks install我收到以下错误消息:

Resolving cookbook dependencies...

Fetching 'env_dockerhub_dev' from git@URL_TO_GIT_SERVER/chef_env_dockerhub_dev.git (at master)
Fetching cookbook index from https://supermarket.chef.io...
Unable to satisfy constraints on package app_dockerhub, which does not exist, due to solution constraint (env_dockerhub_dev = 0.1.0). Solution constraints that may result in a constraint on app_dockerhub:     [(env_dockerhub_dev = 0.1.0) -> (app_dockerhub >= 0.0.0)]
Missing artifacts: app_dockerhub,base_ubuntu
Demand that cannot be met: (env_dockerhub_dev = 0.1.0)
Unable to find a solution for demands: env_dockerhub_dev (0.1.0)

当我将所有内部说明书的所有 Git URL 添加到“主”Berksfile(项目根目录中的 Berksfile)中时,我可以解决这个问题,如下所示:

source "https://supermarket.chef.io"

# the main cookbook
cookbook "env_dockerhub_dev", git: "git@URL_TO_GIT_SERVER/chef_env_dockerhub_dev.git"

# the cookbooks that are "recursively" 
cookbook "app_dockerhub", git: "git@gURL_TO_GIT_SERVER/chef_app_dockerhub.git"
cookbook "app_docker", git: "git@URL_TO_GIT_SERVER/chef_app_docker.git"

无论如何 - 我认为这不应该是这个问题的解决方案。

非常感谢您的帮助!


好的 - 读这个https://github.com/berkshelf/berkshelf/pull/304我想我发现这确实是不可能的。仍然不明白为什么 - 但这是另一个问题:-)

正如我的问题中提到的,解决方案是在顶级 Berksfile 中添加所有说明书依赖项及其 git URL:

source "https://supermarket.chef.io"

# the main cookbook
cookbook "env_dockerhub_dev", git: "git@URL_TO_GIT_SERVER/chef_env_dockerhub_dev.git"

# other cookbook dependencies (resolved recursively)
cookbook "app_dockerhub", git: "git@gURL_TO_GIT_SERVER/chef_app_dockerhub.git"
cookbook "app_docker", git: "git@URL_TO_GIT_SERVER/chef_app_docker.git"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Berkshelf 解决递归 git Cookbook 依赖关系 的相关文章

随机推荐

  • 获取文件的绝对路径

    如何在 Unix 上将相对路径转换为 C 中的绝对路径 有没有方便的系统功能 在 Windows 上有一个GetFullPathName函数可以完成这项工作 但我在 Unix 上没有找到类似的东西 Use 真实路径 The realpath
  • “在此上下文中需要子类型标记”到底是什么?

    I get Subtype mark required in this context at 子类型掩码到底是什么 为什么它在这里抱怨 main adb Open Route Route 1 3 others gt new Location
  • buildTypes 无法应用于 groovy.lang.Closure

    我在我的项目 gradle 文件中收到此警告 警告 16 5 buildTypes 无法应用于 groovy lang Closure 我的 buildTypes 部分是 buildTypes debug debuggable true r
  • ffmpeg 在单个命令中剪切视频并刻录字幕

    我想从视频中剪下一段并刻录该段的字幕 我可以分三步完成 剪切视频 ffmpeg ss 25 00 to 26 00 i vid mp4 c copy out mp4 剪掉副标题 ffmpeg i sub srt ss 25 00 to 26
  • 如何隐藏实际的下载文件夹位置

    我心里有一个问题 如何mod rewrite增加安全性 我有一个 php 文件 它在线显示 pdf 文件 例如www exaple com id 234它会查询数据库并获取实际的文件夹位置 实际文件夹位置是uploads 我正在使用类似的东
  • 在新的 Android 模拟器上禁用首次运行的欢迎程序

    我正在编写一个测试 需要直接从启动器启动应用程序 因为我无法通过意图启动来正确模拟它 问题是 当我在新的模拟器上运行测试时 我使用的是 Travis CI 但它可以在我的家用 PC 上轻松重现 模拟器会以 首次运行 问候语覆盖层开始 这会阻
  • Kafka 生产者 - 如何在不停机的情况下更改主题并保留消息顺序?

    这个问题是关于架构和kafka主题迁移的 原来的问题 没有向后兼容性的架构演变 https docs confluence io current schema registry avro html 我请求社区给我建议或分享文章 我可以从中获
  • 如何在 Ivy 中整合版本管理,就像 Maven 中的parent-pom 一样?

    我们有很多项目需要使用通用版本号 使用 Ant Ivy 执行此操作的最佳实践是什么 您是否只是从 Ant 继承了一堆包含版本号的属性 还是有像 Maven 那样更正式的机制 正如你所指出的 我认为这是新的问题extends功能被设计来解决
  • Mongodb 查询特定的月份|年份而不是日期

    如何查询 mongodb 中的特定月份 而不是日期范围 我需要月份来列出当月的客户生日列表 在 SQL 中会是这样的 SELECT FROM customer WHERE MONTH bday 09 现在我需要在 mongodb 中翻译它
  • 从 Play 商店 xamarin 获取最新的应用程序版本

    如何从 Google Play 商店获取最新的 Android 应用程序版本 之前曾使用下面的代码来做到这一点 using var webClient new System Net WebClient var searchString it
  • eclipse插件代码在指定位置创建IProject

    IProgressMonitor progressMonitor new NullProgressMonitor IWorkspaceRoot root ResourcesPlugin getWorkspace getRoot IProje
  • JButton 的不透明度/半透明度?

    我有如下简单的 GUI 代码 我想在其中制作JButton一个是半透明的 这样后面的图像JButton是可见的 package dealORnodeal import java awt BorderLayout import java aw
  • 如何选择并删除每第三列

    我有一组数据 其中每第三列都是相同的 我只想保留第一列 其他相同的列必须删除 起初我尝试了这段代码 但它删除了错误的列 因为在每个循环中其他列的位置都被改变了 Sub DeleteMultipleColumns Dim i As Integ
  • Rails 模型字段未更新到数据库

    使用型号 class Car lt ActiveRecord Base attr accessor model edition attr accessible model edition has many wheels end class
  • Google Actions 返回抱歉,尚不支持电源控制

    我通过扩展助手来实现我的设备 如中所述指示 我可以看到我的设备注册了以下特征 googlesamples assistant devicetool 列表 model Device Model Id assistant 19etc Proje
  • .NET:如何获取空对象的类型?

    我有一个带有 out 参数的方法 尝试进行类型转换 基本上 public void GetParameterValue out object destination object paramVal I want to return this
  • Android 地图、标记和内存泄漏

    我正在阅读 android 文档http developer android com reference com google android gms maps MapFragment html我看到了这句话 从 GoogleMap 获取的
  • R Shiny 中的反应式数据框

    我有一个由多个类别和月份组成的数据框 每行是参与者的 1 次交互 因此我想通过热图按月份和不同类别显示他们全年的交互计数 总共 490 万行 这意味着全年总共有 490 万次交互 我尝试使用输入来指示列名称 并尝试被动地更改 X 轴 但它似
  • 如何组合相等的序列元素(函数式编程)?

    我想编写一个函数 它接受序列 并返回具有相同元素分组的序列 如 gt 我使用的是序列 而不是列表 但有些功能是相似的 我正在考虑使用的一些功能是map reduce tabulate filter append等 Reduce 接受一个关联
  • 使用 Berkshelf 解决递归 git Cookbook 依赖关系

    TL 博士版本 Berkshelf 是否能够解决基于 Git 的说明书中的递归依赖关系 如果可以 如何解决 我尝试使用 Berkshelf 管理我的 Chef 食谱依赖项 这些食谱都存储在内部 Git 存储库中 依赖关系如下 env doc