DBT 1.7中`dbt deps`命令`--upgrade`选项与package-lock.yml用法疑问
关于dbt 1.7中
dbt deps --upgrade选项的澄清 核心行为差异(你测试场景未覆盖的关键逻辑)
你目前的测试只覆盖了packages.yml无变更、packages.yml版本约束变更这两种情况,但--upgrade的核心作用体现在**packages.yml约束未变,但有新的兼容版本发布**的场景:
- 不加
--upgrade:dbt会严格遵循package-lock.yml里已锁定的版本,哪怕有新的版本满足packages.yml的约束,也不会更新lock文件 - 加
--upgrade:dbt会忽略现有lock文件的锁定,重新根据packages.yml的约束拉取最新的兼容版本,并同步更新package-lock.yml
文档描述的澄清
v1.7之前,dbt deps的默认行为是:每次执行都会拉取满足packages.yml约束的最新版本,然后生成/覆盖package-lock.yml。而v1.7之后,默认行为改为优先锁定现有版本,只有当packages.yml里的依赖约束(比如版本范围调整、新增/删除依赖)发生变化时,才会更新lock文件。
所以文档里说“改用dbt deps --upgrade保留v1.7之前的行为”,意思是:
- 如果你希望每次执行
dbt deps时,都像v1.7之前那样自动拉取满足约束的最新版本(而不是停留在lock文件里的旧版本),就需要把所有原dbt deps命令替换成dbt deps --upgrade
补充测试场景验证差异
可以用这个场景验证两个命令的不同:
- 假设你的
packages.yml里依赖dbt-utils的版本约束是">=1.0.0,<2.0.0",当前package-lock.yml锁定的版本是1.1.0 - 此时
dbt-utils发布了新的兼容版本1.2.0,但你没有修改packages.yml - 执行
dbt deps:package-lock.yml仍然保持1.1.0 - 执行
dbt deps --upgrade:package-lock.yml会更新为1.2.0
内容的提问来源于stack exchange,提问作者New Contributer
相关产品推荐
相关产品推荐

