在Azure Devops中,当您的Maven生成任务失败时,它将在生成摘要中显示如下错误:
现在,如果您单击并向上滚动,您将能够在反应堆摘要旁边找到错误。这很容易在家里用鼠标和大屏幕完成,但是对于我们一些在火车上或咖啡馆里的开发人员来说,发现错误可能是相当大的努力。我希望能够使错误更容易找到。下面是我考虑过但不确定如何实现的一些建议。您还有其他好主意吗?
答案 0 :(得分:1)
因此,我可以帮助您解决如何从构建日志中捕获错误并将其发送到Slack。
假设在构建错误之后,我们将把该任务作为下一个任务运行。
system_access token
so you can auth。[[error]]
行- pwsh: |
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $env:System_AccessToken)))
$uriLogs = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds/$env:BUILD_BUILDID/logs?api-version=5.1"
$response = Invoke-RestMethod -Uri $uriLogs -Method 'GET' -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)}
$logUrl =$response.value[-1].url
$webContent = Invoke-WebRequest -Uri $logUrl -Method 'GET' -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)}
$ErrorMessage = $webContent.Content.tostring() -split "[`r`n]" | select-string "[[Error]]"
Write-Output "Error lines found " $ErrorMessage
$postSlackMessage = @{token=$env:SLACK_TOKEN;channel="@user,#channel-name";text=$ErrorMessage}
Invoke-RestMethod -Uri https://slack.com/api/chat.postMessage -Body $postSlackMessage
env:
system_accesstoken: $(System.AccessToken)
condition: failed()
其他替代方法:
startLine
和endLine
parameters here。答案 1 :(得分:0)
我在powershell脚本顶部添加了一行以解决该错误
Invoke-RestMethod:基础连接已关闭:接收时发生意外错误。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
如果您对tls没有任何问题,则无需添加此行。
Powershell:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$uriLogs = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds/$env:BUILD_BUILDID/logs?api-version=5.0"
$response = Invoke-RestMethod -Uri $uriLogs -Method Get -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
$logUrl = $response.value[-1].url
$webContent = Invoke-WebRequest -Uri $logUrl -Method GET -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
$ErrorMessage = $webContent.Content.tostring() -split "[`r`n]" | select-string "[[error]]"
Write-Output "Error lines found " $ErrorMessage