如何在代码推送至Bitbucket时构建部署Azure Batch应用包?
实现Bitbucket推送触发Azure Batch应用包自动构建部署
绝对可以实现!虽然Azure Batch不像Azure Functions那样有现成的一键部署触发器,但结合Bitbucket Pipelines和Azure CLI,完全能搭出一套体验类似的自动构建部署流程。我来给你一步步拆解怎么弄:
前置准备
- 你得先有Azure Batch账户和对应的存储账户(Batch应用包必须存在存储账户里)
- Bitbucket仓库里已经存好了你的Batch应用代码(不管是Python脚本、Java程序还是Shell工具都行)
- 准备一个Azure服务主体(Service Principal),得给它分配Batch账户和存储账户的操作权限,这样后续Pipeline才能有权限操作Azure资源
配置Bitbucket仓库变量
打开你的Bitbucket仓库,进入「Settings」→「Repository variables」,添加这些变量(把占位符换成你自己的实际值):
AZURE_CLIENT_ID: 服务主体的客户端IDAZURE_CLIENT_SECRET: 服务主体的客户端密钥AZURE_TENANT_ID: Azure租户IDAZURE_BATCH_ACCOUNT_NAME: 你的Batch账户名称AZURE_BATCH_ACCOUNT_RESOURCE_GROUP: Batch账户所在的资源组名称AZURE_STORAGE_ACCOUNT_NAME: 和Batch关联的存储账户名称BATCH_APP_ID: 你要部署的Batch应用的ID(比如my-data-processing-app)
编写Bitbucket Pipelines配置文件
在仓库根目录新建一个bitbucket-pipelines.yml文件,把下面的代码粘进去,然后根据你的应用类型调整构建步骤:
# 使用Azure CLI官方镜像,自带所有需要的工具 image: mcr.microsoft.com/azure-cli:latest pipelines: default: - step: name: 构建并部署Azure Batch应用包 script: # 第一步:用服务主体登录Azure - az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID # 第二步:构建应用包(这里以Python项目为例,换成你的应用构建逻辑) - mkdir -p ./build - cp -r ./src/* ./build/ # 把源码目录的内容复制到构建目录 - cd ./build && zip -r ../batch-app-package.zip . # 打包成zip包 # 第三步:上传包到存储账户的指定容器 # 注意:确保存储账户里已经创建了名为batch-app-packages的容器,或者修改这里的容器名 - az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT_NAME --container-name batch-app-packages --name $BATCH_APP_ID/$(git rev-parse --short HEAD).zip --file ./batch-app-package.zip --auth-mode login # 第四步:获取刚上传的Blob的URL,用来创建Batch应用版本 - BLOB_URL=$(az storage blob url --account-name $AZURE_STORAGE_ACCOUNT_NAME --container-name batch-app-packages --name $BATCH_APP_ID/$(git rev-parse --short HEAD).zip --auth-mode login -o tsv) # 第五步:在Batch账户里创建新的应用版本 - az batch application package create --application-id $BATCH_APP_ID --version $(git rev-parse --short HEAD) --storage-url $BLOB_URL --account-name $AZURE_BATCH_ACCOUNT_NAME --resource-group $AZURE_BATCH_ACCOUNT_RESOURCE_GROUP # 可选:把新版本设为应用的默认版本,后续任务就能直接用这个版本 - az batch application set --application-id $BATCH_APP_ID --default-version $(git rev-parse --short HEAD) --account-name $AZURE_BATCH_ACCOUNT_NAME --resource-group $AZURE_BATCH_ACCOUNT_RESOURCE_GROUP
几个关键细节要注意
- 构建步骤适配: 上面的例子是打包Python源码,如果你是编译型语言(比如C#、Java),得在脚本里加编译命令,比如
dotnet build --configuration Release或者mvn package,再把编译后的产物打包。 - 版本号策略: 我这里用了Git短提交哈希作为版本号,比时间戳更直观,能直接对应到具体的代码提交;你也可以换成时间戳
$(date +%Y%m%d%H%M%S),看你偏好。 - 权限检查: 服务主体一定要有
Batch Account Contributor和Storage Blob Data Contributor这两个角色,不然会出现权限不足的错误。 - 存储容器: 提前在存储账户里创建好
batch-app-packages容器,或者修改脚本里的容器名称为你已有的容器。
验证流程
- 把代码推送到Bitbucket仓库,然后进入仓库的「Pipelines」页面,就能看到流程正在执行
- 执行完成后,登录Azure Portal,打开你的Batch账户,进入「Applications」,就能看到新的应用版本已经添加进来了;如果设置了默认版本,默认版本也会更新
这样一来,每次你往Bitbucket推送代码,这套流程就会自动完成构建、上传、部署Batch应用包的操作,和Azure Functions的自动部署体验几乎一致。
内容的提问来源于stack exchange,提问作者vasjko
相关产品推荐
相关产品推荐

