Azure DevOps:保留流水线时其发布的工件是否同步保留?
构建保留策略与工件保留疑问
背景
- 默认保留策略(截图展示默认规则)
- 为长期保留指定构建,添加了以下PowerShell任务:
- task: PowerShell@2 condition: and(succeeded(), not(canceled(), <another condition..>)) name: RetainOnSuccess displayName: Retain on Success inputs: failOnStderr: true targetType: 'inline' script: | $contentType = "application/json"; $headers = @{ Authorization = 'Bearer $(System.AccessToken)' }; $rawRequest = @{ daysValid = 365 * 2; definitionId = $(System.DefinitionId); ownerId = 'User:$(Build.RequestedForId)'; protectPipeline = $false; runId = $(Build.BuildId) }; $request = ConvertTo-Json @($rawRequest); $uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases?api-version=6.0-preview.1"; Invoke-RestMethod -uri $uri -method POST -Headers $headers -ContentType $contentType -Body $request;
- 目前流水线已显示提示:"此运行已被保留超过1年12个月...",代码已生效。
疑问
若该流水线发布了工件,该工件是会随流水线的2年保留时长同步可用,还是会按照保留策略中“保留工件和附件天数”的30天规则到期消失?
回答
当你通过构建保留租赁API设置构建保留时长时,关联的工件会和构建运行的保留时长保持一致,不会触发默认的30天工件清理规则。
Azure DevOps的构建保留租赁机制会把构建运行及其产出的工件、日志等关联资源绑定保护:只要构建运行被租赁保留,它生成的所有工件都会同步保留,直到租赁到期。默认的“保留工件和附件天数”规则仅对没有被主动保留(包括租赁保留、手动保留等)的构建产出生效。
你可以查看工件详情页,确认它的保留到期时间会和构建运行的保留到期时间匹配。
内容的提问来源于stack exchange,提问作者Linux Dev
相关产品推荐
相关产品推荐

