如何从Azure DevOps Pipeline传变量到Databricks Asset Bundle的databricks.yml
解决Azure DevOps Pipeline变量传递到Databricks Asset Bundle的问题
你的问题核心在于databricks.yml的变量引用语法不符合DAB规则,同时环境变量的传递细节存在偏差,以下是具体修正方案:
1. 修正databricks.yml的变量引用格式
Databricks Asset Bundle使用Jinja2风格的模板语法引用外部变量,而非直接的Shell变量格式${xxx}。需将${DATABRICKS_HOST}替换为{{ bundle.vars.DATABRICKS_HOST }},修改后的配置如下:
bundle: name: test include: - resources/*.yml targets: dev: mode: development default: true workspace: host: {{ bundle.vars.DATABRICKS_HOST }}
2. 调整Azure DevOps Pipeline配置
方案一:通过env块注入环境变量
利用ADO Pipeline的env块直接传递带BUNDLE_VAR_前缀的变量,该前缀是DAB识别外部变量的标识。修正后的Pipeline配置:
- bash: | databricks bundle validate databricks bundle deploy displayName: 'DAB' env: DATABRICKS_TOKEN: $(DATABRICKS_TOKEN) BUNDLE_VAR_DATABRICKS_HOST: $(DATABRICKS_HOST) workingDirectory: $(ArtifactRoot)
注意:需确保env中的变量名前缀为BUNDLE_VAR_,且后缀与databricks.yml中bundle.vars.后的名称完全一致。
方案二:在bash命令中临时设置变量
如果需要在命令行临时覆盖变量,需保证变量与DAB命令在同一个Shell进程中生效,正确写法如下:
export BUNDLE_VAR_DATABRICKS_HOST="${DATABRICKS_HOST}" databricks bundle validate databricks bundle deploy
或者合并为一行:
BUNDLE_VAR_DATABRICKS_HOST="${DATABRICKS_HOST}" databricks bundle validate && databricks bundle deploy
3. 手动执行命令的修正
手动验证时,需严格遵循BUNDLE_VAR_前缀规则,示例命令:
BUNDLE_VAR_DATABRICKS_HOST="https://your-databricks-instance.cloud.databricks.com" databricks bundle validate
内容的提问来源于stack exchange,提问作者killumi_91
相关产品推荐
相关产品推荐

