如何使用Drone.io上传文件至Azure Blob Storage(含.deb产物)
我平时做CI/CD的时候经常用Drone.io对接Azure Blob Storage,给你整理下通用流程和针对你的.deb产物文件的具体操作步骤:
通用方法核心要点
首先得准备好基础依赖:
- 一个Azure存储账户,以及对应的存储容器(提前在Azure门户创建好,确保容器有写入权限)
- 在Drone项目的Secrets中配置Azure存储的认证信息:通常是
AZURE_STORAGE_ACCOUNT(存储账户名)和AZURE_STORAGE_KEY(账户访问密钥);如果用服务主体认证的话,需要配置AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET
Drone上传到Azure Blob的核心逻辑就是:在pipeline中完成Azure认证,然后执行上传命令/调用插件完成文件上传。
针对.deb文件的具体实现
下面给你两种常用的实现方式,按需选择:
方式一:使用Azure CLI(灵活可控,适合复杂场景)
如果你的Drone基础镜像没有预装Azure CLI,需要先安装,然后登录存储账户再上传:
kind: pipeline type: docker name: upload-deb-to-azure steps: # 第一步:安装Azure CLI(如果基础镜像已有可跳过) - name: setup-azure-cli image: ubuntu:latest commands: - apt-get update && apt-get install -y azure-cli # 第二步:上传.deb文件到Blob Storage - name: upload-deb-package image: ubuntu:latest environment: # 从Drone Secrets中读取凭证 AZURE_STORAGE_ACCOUNT: from_secret: azure_storage_account AZURE_STORAGE_KEY: from_secret: azure_storage_key commands: # 登录Azure存储账户并上传文件 - az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY --container-name your-container-name # 替换成你的容器名 --file ./dist/your-package.deb # 替换成.deb文件在工作目录的路径 --name your-package-$(git rev-parse --short HEAD).deb # 用Git短哈希命名,避免冲突
方式二:使用Drone官方Azure Blob插件(简洁高效)
Drone有官方的Azure Blob存储插件,不用手动安装CLI,配置更简洁:
kind: pipeline type: docker name: upload-deb-to-azure steps: - name: upload-deb-to-blob image: plugins/azure-blob settings: # 从Drone Secrets读取存储账户信息 account: from_secret: azure_storage_account key: from_secret: azure_storage_key container: your-container-name # 替换成你的容器名 source: ./dist/your-package.deb # 本地.deb文件路径 target: your-package-$(date +%Y%m%d-%H%M).deb # 上传后的Blob名称,用时间戳避免冲突 overwrite: true # 如果需要覆盖同名文件,设置为true,默认false
注意事项
- 确保.deb文件的路径正确:Drone运行时的工作目录是你的代码仓库根目录,所以要根据构建阶段的产物输出路径填写
source或--file参数 - 命名策略:建议给上传的.deb文件加上版本号、Git哈希或时间戳,避免不同构建的产物互相覆盖
- 权限验证:提前确认Azure存储账户的访问密钥有Blob写入权限,或者服务主体有对应的存储容器权限
内容的提问来源于stack exchange,提问作者Leandro Nunes
相关产品推荐
相关产品推荐

