我将Invoke 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();
答案 0 :(得分:1)
之所以发生此问题,是因为与构建或发布相比,门的执行方式略有偏差。通常,使用回调模式更新此类服务器端任务的最安全方法是使用VSTS团队本身维护的TaskClient,它会处理所有此类怪癖。
可以在原始代码中进行细微更改以使其起作用-
var taskCompletedEvent = new TaskCompletedEvent(taskInstanceId, Guid.Empty, TaskResult.Succeeded);
taskClient.RaisePlanEventAsync(projectGuid, HUBNAME, planGuid, taskCompletedEvent).SyncResult();
区别在于事件的初始化方式。未定义TaskId参数,并且任何地方都未使用JobId。建议仍然使用GitHub上的TaskClient来确保即使VSTS Release Management团队决定解决此烦人的差异,一切仍能正常工作。