如何查看重新触发Azure DevOps YAML失败定时流水线的用户
Azure DevOps定时流水线重新触发后获取触发者的解决方案
直接获取重新触发者的可能性
目前Azure DevOps的内置变量$(Build.RequestedFor)和$(Build.QueuedBy)会始终保留定时触发的系统账户[Microsoft.VisualStudio.Services.TFS],无论多少次重新触发失败任务,这两个变量都不会更新为实际重新触发的用户。没有直接通过内置变量获取重新触发者用户名的方法。
可行的替代解决办法
1. 通过Azure DevOps REST API获取最后操作人信息
在流水线中添加PowerShell任务,调用Builds API查询当前构建的详细信息,其中lastChangedBy字段会记录最后修改(包括重新触发失败任务)的用户信息。示例脚本如下:
$personalAccessToken = "$(System.AccessToken)" $orgUrl = "$(System.CollectionUri)" $projectName = "$(System.TeamProject)" $buildId = "$(Build.BuildId)" $headers = @{ Authorization = "Bearer $personalAccessToken" } $apiUrl = "$orgUrl/$projectName/_apis/build/builds/$buildId?api-version=7.1-preview.7" $buildDetails = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get # 输出重新触发者信息 Write-Host "重新触发流水线的用户:$($buildDetails.lastChangedBy.displayName) ($($buildDetails.lastChangedBy.uniqueName))"
注意:确保流水线的服务账户拥有读取构建信息的权限。
2. 添加手动审批环节(适用于非紧急场景)
在流水线容易失败的阶段前添加手动审批任务,重新触发失败任务时必须由用户完成审批,Azure DevOps会自动记录审批者信息,后续可通过审批历史或关联的工作项记录获取该用户。
3. 自定义备注记录
要求重新触发任务的用户在触发时填写包含自身用户名的备注信息,然后在流水线中读取$(Build.ReasonComment)变量,提取并记录用户名。这种方式依赖用户主动配合,但实现成本最低。
内容的提问来源于stack exchange,提问作者Dinesh Pathapati
相关产品推荐
相关产品推荐

