You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用API向Azure DevOps构建上传工件

使用Azure DevOps API上传构建工件

核心流程

上传工件分为两步:先创建工件元数据注册到ADO构建,再将文件上传到返回的Blob存储地址。


1. 准备身份验证

使用个人访问令牌(PAT)进行身份验证,需授予Build Artifacts (Read & Write) 或Build (Read & Execute) 权限。请求时在Header中添加:

Authorization: Basic <base64编码的PAT>

编码方式:在终端执行 echo -n ":你的PAT内容" | base64,冒号是必须的前缀。


2. 创建工件元数据

调用Build Artifacts Create API注册工件基本信息,获取文件上传的Blob地址。

  • 请求方式:POST
  • 请求URL:https://dev.azure.com/{组织名}/{项目名}/_apis/build/builds/{构建ID}/artifacts?api-version=7.1-preview.5
  • 请求Header:Content-Type: application/json + 上述Authorization头
  • 请求Body(以容器类型工件为例,适合多文件/文件夹上传):
{
  "name": "自定义工件名称",
  "artifactType": "container",
  "resource": {
    "type": "container",
    "data": "#/Artifacts/自定义工件名称",
    "properties": {}
  }
}
  • 响应中提取resource.url字段,这是用于上传文件的SAS授权Blob地址。

3. 上传文件到Blob存储

使用PUT请求将本地文件上传到上述Blob地址:

  • 单个文件上传示例:

    • 请求方式:PUT
    • 请求URL:{resource.url}/目标文件名(比如{resource.url}/package.zip)
    • 请求Header:Content-Type: application/octet-stream
    • 请求体:文件的二进制内容
  • 多文件/文件夹上传:遍历本地文件,保持相对路径结构,每个文件发起一次PUT请求,比如本地dist/index.html对应URL{resource.url}/dist/index.html。


完整curl脚本示例

# 配置参数
ORG="你的组织名"
PROJECT="你的项目名"
BUILD_ID="目标构建ID"
PAT="你的PAT令牌"
ARTIFACT_NAME="MyCustomArtifact"
LOCAL_FILE="/本地文件路径/package.zip"
TARGET_FILENAME="package.zip"

# 编码PAT
ENCODED_PAT=$(echo -n ":$PAT" | base64)

# 第一步:创建工件元数据
RESPONSE=$(curl -X POST "https://dev.azure.com/$ORG/$PROJECT/_apis/build/builds/$BUILD_ID/artifacts?api-version=7.1-preview.5" \
  -H "Authorization: Basic $ENCODED_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "'"$ARTIFACT_NAME"'",
    "artifactType": "container",
    "resource": {
      "type": "container",
      "data": "#/Artifacts/'"$ARTIFACT_NAME"'",
      "properties": {}
    }
  }')

# 提取Blob上传地址(需安装jq工具解析JSON)
BLOB_URL=$(echo $RESPONSE | jq -r '.resource.url')

# 第二步:上传文件
curl -X PUT "$BLOB_URL/$TARGET_FILENAME" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @"$LOCAL_FILE"

注意事项

  • 确保PAT权限足够,否则会返回403错误。
  • 若上传大文件,需采用分块上传机制。
  • API版本建议使用最新的预览版或正式版,避免兼容性问题。

内容的提问来源于stack exchange,提问作者huntantr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:00:58