我正在创建一个新的Azure DevOps自定义任务,它将在“ ServerGate”上运行。我已经为此任务设置了HttpExecution,并打算将其用于PRE和POST部署批准门。当执行后部署批准门时,我想将作业的状态(即成功,失败等)发送到我的API。我以为我可以只使用“ Agent.JobStatus”变量,但这在ServerGate中无法解决。
是否应该使用另一个变量来访问当前阶段的状态(即成功?)?
关于Agent.JobStatus变量的详细信息:https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=classic
我一直在关注有关编写服务器门的详细信息:https://github.com/microsoft/azure-pipelines-tasks/blob/master/docs/authoring/servertaskauthoring.md
我的ServerGate示例:
"execution": {
"HttpRequest": {
"Execute": {
"EndpointId":"",
"EndpointUrl": "https://my-gate.com/ready",
"Method": "POST",
"Body": "{\"status\":\"$(Agent.JobStatus)\", \"name\":\"$(Release.ReleaseName)\"}",
"Headers":"{\n\"Content-Type\":\"application/json\"\n}",
"WaitForCompletion":"false",
"Expression": "eq(root['approved'], 'true')"
}
}
}
当此结果在输出中解析时,状态仅显示为:“ $(Agent.JobStatus)” ....而我能够在执行中将“名称”解析为发布定义的实际名称。 / p>
我希望在POST部署门上收到正确的状态解析为“成功”,诸如上述文档中所述。
答案 0 :(得分:0)
我创建了一个自定义任务来测试此问题。我可以重现该问题,即使我改用了AGENT_JOBSTATUS。该作业在服务器或ServerGate上运行,只能在无代理作业中使用,服务器作业不需要代理或任何目标计算机,因此无法在无代理作业中引用变量Agent.JobStatus。您可以尝试使用Service Endpoint将座席工作状态发布到外部服务。