如何在YAML Bash步骤中存储Databricks CLI生成的token供后续任务使用
解决方案
你可以通过jq工具解析JSON响应,再结合CI/CD系统的输出变量能力存储token_value,供后续任务调用。以下是基于你现有Azure DevOps YAML流水线的修改方案:
修改后的完整YAML配置
- bash: | echo {} > ~/.databricks-connect source py37-venv/bin/activate pip3 install wheel pip3 install databricks-cli displayName: Install Databricks CLI # 给创建token的步骤添加name标识,用于后续引用输出变量 - bash: | source py37-venv/bin/activate databricks configure --token <<EOF ${DATABRICKS_HOST} ${DATABRICKS_AAD_TOKEN} EOF # 保存接口返回的JSON结果并提取token_value TOKEN_RESPONSE=$(databricks tokens create --lifetime-seconds 129600 --comment "My comment.") TOKEN_VALUE=$(echo $TOKEN_RESPONSE | jq -r '.token_value') # 将token设置为流水线输出变量,isOutput=true支持跨任务调用 echo "##vso[task.setvariable variable=databricksToken;isOutput=true]$TOKEN_VALUE" displayName: Create Databricks Token name: CreateDatabricksToken
变量调用方式
- 同一Job内的后续任务直接引用:
$(CreateDatabricksToken.databricksToken) - 跨Job调用时需要在目标Job中添加依赖声明,示例如下:
jobs: - job: CreateTokenJob steps: # 上述安装CLI、创建Token的步骤放在这个Job里 - job: UseTokenJob dependsOn: CreateTokenJob variables: # 从上游Job拉取输出变量 DB_TOKEN: $[ dependencies.CreateTokenJob.outputs['CreateDatabricksToken.databricksToken'] ] steps: - bash: echo "Token is $(DB_TOKEN)" displayName: Use Databricks Token
补充说明
如果你的CI/CD环境没有预装jq,可以在安装Databricks CLI的步骤中新增安装命令:sudo apt install -y jq(Debian/Ubuntu环境)。
内容的提问来源于stack exchange,提问作者ibexy
相关产品推荐
相关产品推荐

