异步回调在 VSTS 门中不起作用调用 REST API 任务

Asynchronous callback not working in VSTS gates Invoke REST API task

我在我的环境中使用调用 REST API 任务作为预部署门。该任务已配置为等待来自我的服务(VSTS 外部)的回调。

问题是,当我尝试调入 VSTS 以将任务标记为已完成时,我总是收到一条错误消息 orchestration session xxxxxx_xxxxxx_xxxxxx not found for hub Gates。与发布或构建定义一起使用时相同的代码工作正常,但与 gates 一起使用时失败并出现此错误。

这是我的代码片段,它进行了 API 调用

var taskCompletedEvent = new TaskCompletedEvent(jobId, taskInstanceGuid, TaskResult.Succeeded);
taskClient.RaisePlanEventAsync(projectGuid, HUBNAME, planGuid, taskCompletedEvent).SyncResult();

出现此问题是因为与构建或发布相比,门的执行方式略有偏差。通常,使用回调模式更新此类服务器端任务的最安全方法是使用 VSTS 团队本身维护的 TaskClient,它负责处理所有此类怪癖。

可以对原始代码进行细微更改以使其正常工作 -

var taskCompletedEvent = new TaskCompletedEvent(taskInstanceId, Guid.Empty, TaskResult.Succeeded);
taskClient.RaisePlanEventAsync(projectGuid, HUBNAME, planGuid, taskCompletedEvent).SyncResult();

区别在于事件的初始化方式。未定义 TaskId 参数,并且未在任何地方使用 JobId。建议仍然在 GitHub 上使用 TaskClient,以确保即使 VSTS 发布管理团队决定解决这个相当烦人的差异,一切都继续正常工作。