我正在 Azure yaml 管道中使用任务 AzureFunction@1。根据 documentation,您可以使用回调来指示任务是否应该通过或失败。这本身就按预期工作了。
我想知道是否有一种方法可以在管道中显示一些自定义消息以及所发生事件的一些摘要?例如,如果任务应该失败,是否还要在管道中显示“由于 X、Y、Z 原因而失败”之类的消息?如果不可能,是否至少可以通过来自另一个监听进程的 C# 代码以某种方式轮询回调 url,并以这种方式获取消息?
AzureFunction@1 任务还可以用作发布管道部署入口中的检查任务:。
因此,我们可以参考文档从检查发送状态更新到Azure DevOps,其中还介绍了有关调用Azure Function任务的更多用法。它提到:
您可以使用 Azure Pipelines REST API 在检查中向 Azure Pipelines 用户提供状态更新。
发送状态更新的步骤是:
根据上述信息,我测试了 Append to the task log API 以向任务添加更多日志。
首先,这是要附加到发送到函数的请求中的 JSON 格式的标头:
我们将在接下来的步骤中使用标题中的值,包括“
HubName
”、“PlanId
”、“ProjectId
”、“TaskInstanceId
”和“AuthToken
”。
这是我的测试 PowerShell 脚本
$AuthToken =""
$organization = ""
$projectId = ""
$hubName = "build"
$planId = ""
$logId = 4
$logURI = "https://dev.azure.com/$organization/$projectId/_apis/distributedtask/hubs/$hubName/plans/$planId/logs/${logId}?api-version=7.1"
$headers = @{
'Authorization' = "bearer " + "$AuthToken"
'Content-Type' = 'application/octet-stream'
}
$logBody = @(
'##[error]==================================='
'##[error]Failed because of reasons X,Y,Z'
'##[error]==================================='
)
foreach ($line in $logBody) {
Invoke-RestMethod -Uri $logURI -Headers $headers -Method POST -Body $line
}
$logId
是根据https://dev.azure.com/$organization/$projectId/_apis/distributedtask/hubs/$hubName/plans/$planId/logs?api-version=7.1"
从API TaskInstanceId
中找到的。
测试结果: