自定义ServerGate任务-“ Agent.JobStatus”无法解析

时间:2019-06-22 01:54:05

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline

我正在创建一个新的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部署门上收到正确的状态解析为“成功”,诸如上述文档中所述。

1 个答案:

答案 0 :(得分:0)

我创建了一个自定义任务来测试此问题。我可以重现该问题,即使我改用了AGENT_JOBSTATUS。该作业在服务器或ServerGate上运行,只能在无代理作业中使用,服务器作业不需要代理或任何目标计算机,因此无法在无代理作业中引用变量Agent.JobStatus。您可以尝试使用Service Endpoint将座席工作状态发布到外部服务。