如何通过Azure DevOps CI/CD管道在Azure Cosmos DB(MongoDB版)执行.sh文件?
在Azure DevOps CI/CD管道中执行代码仓库内的.sh文件(针对Azure Cosmos DB MongoDB版)
核心思路
Azure DevOps没有专门适配Cosmos DB MongoDB版的.sh执行任务,但可以通过通用Bash脚本任务结合MongoDB Shell(mongosh)实现需求——利用Cosmos DB MongoDB版对MongoDB协议的兼容性,完成数据库操作。
具体实现步骤
步骤1:添加Bash脚本任务到管道
在CI/CD管道的YAML或经典编辑器中添加Bash任务,配置如下:- 脚本类型选「文件路径」,指向代码仓库内的.sh文件路径(例如
./scripts/cosmos-mongo-ops.sh) - YAML示例:
- task: Bash@3 inputs: filePath: './scripts/cosmos-mongo-ops.sh' workingDirectory: '$(System.DefaultWorkingDirectory)' env: COSMOS_DB_CONN: $(CosmosDBMongoConnectionString)
通过
env字段将管道变量注入脚本环境,避免硬编码敏感信息。- 脚本类型选「文件路径」,指向代码仓库内的.sh文件路径(例如
步骤2:配置管道敏感变量
在Azure DevOps管道的「变量」设置中,添加CosmosDBMongoConnectionString变量,值为你的Cosmos DB MongoDB版连接字符串,勾选「保密」选项防止明文泄露。步骤3:编写.sh文件内容
在.sh文件中用mongosh连接Cosmos DB并执行操作,示例如下:#!/bin/bash # 检查并安装mongosh(针对Ubuntu托管代理) if ! command -v mongosh &> /dev/null then echo "Installing mongosh..." wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list sudo apt-get update && sudo apt-get install -y mongodb-org-shell fi # 连接数据库并执行操作(示例:查询数据) mongosh "$COSMOS_DB_CONN" --eval ' const docs = db.getCollection("demo-collection").find({status: "active"}).toArray(); print(`Found ${docs.length} active documents`); '若使用Windows托管代理,需调整mongosh的安装命令,或使用预安装了mongosh的自定义代理。
步骤4:验证网络与权限
确保Azure DevOps代理的IP已加入Cosmos DB防火墙允许列表;若使用微软托管代理,测试环境可临时开启「允许所有网络访问」,生产环境建议配置服务端点。
内容的提问来源于stack exchange,提问作者ichigogodlike
相关产品推荐
相关产品推荐

