Azure Pipeline中dbt执行Slim CI时无法找到manifest文件求助
解决Azure Pipelines中dbt Slim CI的"saved manifest not found"报错
以下是针对性的排查和解决方案:
1. 核对--state参数的路径指向
dbt要求--state参数必须指向包含manifest.json的目录,而非文件本身。
- 确认你在命令中使用的
manifest_path变量实际指向的是dbt_project/dbt_manifest_temp_dir目录,而非该目录下的manifest.json文件 - 在Azure Pipelines中优先使用绝对路径,避免相对路径因工作目录变化失效,比如替换为:
--state $(System.DefaultWorkingDirectory)/dbt_project/dbt_manifest_temp_dir - 可在Pipeline中添加命令验证路径:
ls -l $(System.DefaultWorkingDirectory)/dbt_project/dbt_manifest_temp_dir
2. 检查manifest文件的权限
确保运行dbt的Pipeline服务账号拥有该目录及文件的读取权限:
- 添加命令查看权限:
ls -ld $(System.DefaultWorkingDirectory)/dbt_project/dbt_manifest_temp_dir ls -l $(System.DefaultWorkingDirectory)/dbt_project/dbt_manifest_temp_dir/manifest.json - 若权限不足,可添加
chmod命令调整:chmod -R 755 $(System.DefaultWorkingDirectory)/dbt_project/dbt_manifest_temp_dir
3. 验证dbt版本一致性
本地与Azure Pipelines环境的dbt版本必须完全一致,不同版本的manifest格式不兼容会导致识别失败:
- 在本地和Pipeline中分别运行以下命令确认版本:
dbt --version
4. 校验manifest文件完整性
文件传输过程中可能出现损坏,可在Pipeline中添加命令验证:
cat $(System.DefaultWorkingDirectory)/dbt_project/dbt_manifest_temp_dir/manifest.json | jq '.'
若jq报错,说明文件存在格式问题,需重新生成或重新传输manifest文件。
5. 确认Pipeline工作目录
Azure Pipelines的默认工作目录可能与本地不同,可添加命令打印当前目录:
pwd
根据输出调整--state参数的路径,确保指向正确的manifest所在目录。
内容的提问来源于stack exchange,提问作者Mathias Nissen
相关产品推荐
相关产品推荐

