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

如何删除AzDevops中通过PublishBuildArtifacts@1上传的文件?

删除Azure DevOps中通过PublishBuildArtifacts@1发布的文件/文件夹方法

PublishBuildArtifacts@1上传的文件会存储在Azure DevOps的文件容器中,无法通过代理本地命令直接删除,必须通过Azure DevOps REST API实现。以下是具体实现方案:

核心方案:调用Azure DevOps REST API

1. 准备必要权限

  • 创建个人访问令牌(PAT),需包含**Build Artifacts (Read & Manage)**权限;如果在Pipeline中执行,可直接使用系统自带的System.AccessToken,但需要给流水线服务账号配置对应权限。
  • 从日志中提取目标文件容器ID:比如你提供的日志#/232343434/test,其中232343434就是容器ID,/test是文件存储的路径。

2. PowerShell脚本实现删除

本地执行脚本

# 配置参数
$orgUrl = "https://dev.azure.com/你的组织名"
$projectName = "你的项目名"
$containerId = "232343434" # 替换为你的容器ID
$pathToDelete = "/test" # 要删除的路径,可指定单个文件如/test/testr.json
$pat = "你的PAT令牌"

# 转换认证信息
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))

# 调用API删除
$deleteUrl = "$orgUrl/$projectName/_apis/wit/attachments/delete?containerId=$containerId&path=$pathToDelete&api-version=7.1-preview.1"
Invoke-RestMethod -Uri $deleteUrl -Method Post -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

Pipeline中集成执行

推荐使用AzurePowerShell任务,利用系统令牌认证,无需手动管理PAT:

- task: AzurePowerShell@5
  inputs:
    azureSubscription: '你的服务连接名'
    ScriptType: 'InlineScript'
    Inline: |
      $orgUrl = "https://dev.azure.com/你的组织名"
      $projectName = "$(System.TeamProject)"
      $containerId = "232343434" # 替换为你的容器ID
      $pathToDelete = "/test" # 替换为目标路径

      # 使用系统令牌认证
      $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$env:SYSTEM_ACCESSTOKEN"))
      
      $deleteUrl = "$orgUrl/$projectName/_apis/wit/attachments/delete?containerId=$containerId&path=$pathToDelete&api-version=7.1-preview.1"
      Invoke-RestMethod -Uri $deleteUrl -Method Post -Headers @{Authorization=("Basic {0}" -f $token)}
    azurePowerShellVersion: 'LatestVersion'
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

关键注意事项

  • 如果要删除整个容器下的所有内容,将$pathToDelete设为"/"即可。
  • 确保认证账号(PAT或服务账号)拥有目标项目的Build Artifacts管理权限,否则会返回403错误。
  • 避免在脚本中硬编码PAT,可将其存储在Azure DevOps的变量组中并标记为保密变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:12:32