如何从CICD流水线上传数据至存储账户并创建Blob
CICD流水线上传制品到Azure Blob存储操作方案
前置准备
- 提前为CICD服务配置存储账户访问权限,推荐使用服务主体或者有容器上传权限的共享访问签名(SAS),所有敏感凭据存入对应CICD平台的加密凭据管理模块,禁止硬编码到流水线配置中。
- 确保流水线运行节点可以连通存储账户的访问端点,公有云存储需要节点具备公网访问权限,私有存储需要打通对应内网链路。
通用实现方案(适配所有CICD平台)
最通用的方式是通过Azure CLI完成上传,绝大多数CICD平台的默认运行环境都预装了Azure CLI,无需额外安装依赖。
操作步骤
- 流水线执行时先通过存储凭据完成Azure账户认证
- 直接将待上传的JSON内容写入临时文件,或者通过标准输入管道直接上传
代码示例
无需生成临时文件的上传命令:
echo '{"mydata":"some stuff"}' | az storage blob upload \ --account-name mystorageaccount \ --container-name mystoragecontainer \ --name fea8e047-0dc4-4f96-8499-aee5c3929be3.json \ --file @-
如果需要先生成临时文件再上传,命令如下:
# 写入内容到本地临时文件 echo '{"mydata":"some stuff"}' > artifact_output.json # 上传到指定Blob路径 az storage blob upload \ --account-name mystorageaccount \ --container-name mystoragecontainer \ --name fea8e047-0dc4-4f96-8499-aee5c3929be3.json \ --file artifact_output.json
认证方式可以根据配置选择,已经用服务主体登录Azure的场景添加
--auth-mode login参数即可,使用存储账户密钥的场景将密钥存入环境变量AZURE_STORAGE_KEY即可自动读取。
主流CICD平台配置示例
GitHub Actions配置示例
- uses: azure/CLI@v1 env: AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }} with: inlineScript: | echo '{"mydata":"some stuff"}' | az storage blob upload \ --account-name mystorageaccount \ --container-name mystoragecontainer \ --name fea8e047-0dc4-4f96-8499-aee5c3929be3.json \ --file @-
Azure DevOps Pipelines配置示例
- task: AzureCLI@2 inputs: azureSubscription: '预先配置的Azure服务连接名称' scriptType: 'bash' inlineScript: | echo '{"mydata":"some stuff"}' | az storage blob upload \ --account-name mystorageaccount \ --container-name mystoragecontainer \ --name fea8e047-0dc4-4f96-8499-aee5c3929be3.json \ --file @- \ --auth-mode login
内容的提问来源于stack exchange,提问作者Alex Gordon
相关产品推荐
相关产品推荐

