如何在Azure DevOps工件源中将工件标记为‘Release’
解决工件标记为'Local'而非'Release'的问题
要让工件从'Local'转为'Release'获得防误删保护,核心是让发布流水线完成有效的工件消费+部署动作,并配置对应的保留策略,具体步骤如下:
补全发布流水线的核心任务
空作业无法触发工件状态变更,你需要在发布流水线中添加能关联上游工件的任务:- 添加
Download Pipeline Artifacts任务,指定生成流水线的工件源,确保发布流水线能拉取到目标二进制文件; - 添加部署相关任务(比如文件复制、服务重启等),完成实际的部署动作,让流水线的执行逻辑形成完整闭环。
- 添加
在生成流水线中配置Release级保留策略
不管是发布Pipeline Artifacts还是NuGet包,都需要在发布步骤中显式设置保留策略:- 若用
Publish Pipeline Artifacts任务:找到「Retention policy」选项,选择Release,并设置保留时长(可勾选无限期保留); - 若用NuGet发布任务:勾选「Set retention policy」,将策略级别设为
Release,开启防误删保护。
- 若用
标记部署完成状态
在发布流水线的部署任务完成后,添加状态标记动作:- 如果是Azure DevOps环境,可直接使用
Mark Deployment任务,选择对应的生成流水线构建,标记部署状态为成功; - 也可以通过REST API手动更新工件状态,示例PowerShell脚本:
$token = "你的PAT令牌" $orgUrl = "https://dev.azure.com/你的组织名" $project = "你的项目名" $buildId = "目标生成构建ID" $headers = @{ Authorization = "Bearer $token" Content-Type = "application/json" } $body = @{ retentionPolicy = @{ isEnabled = $true releaseRetention = @{ isEnabled = $true retainIndefinitely = $true } } } | ConvertTo-Json Invoke-RestMethod -Uri "$orgUrl/$project/_apis/build/builds/$buildId?api-version=7.1-preview.7" ` -Method Patch ` -Headers $headers ` -Body $body
- 如果是Azure DevOps环境,可直接使用
验证触发逻辑
确保发布流水线是由生成流水线的工件完成事件触发(而非手动执行空作业),只有当发布流水线成功完成完整的部署流程,系统才会自动将工件状态更新为'Release'。
内容的提问来源于stack exchange,提问作者CBFT
相关产品推荐
相关产品推荐

