代码之家  ›  专栏  ›  技术社区  ›  divyanshm

异步回调在vsts gates调用rest api任务中不起作用

  •  0
  • divyanshm  · 技术社区  · 8 年前

    我将中的Invoke REST API任务用作环境中的预部署入口任务已配置为等待来自我的服务(VSTS外部)的回调。

    enter image description here

    问题是,当我试图调用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();
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   divyanshm    8 年前

    发生此问题的原因是,与生成或发布版本相比,gate的执行方式稍有偏差。通常,使用回调模式更新此类服务器端任务的最安全方法是使用 TaskClient 由vsts团队自己维护,它负责处理所有这些怪癖。

    在原始代码中可以做的微小更改是-

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

    不同之处在于如何初始化事件。taskid参数未定义,jobid未在任何地方使用。建议仍然使用github上的taskclient来确保一切继续正常工作,即使vsts发布管理团队决定修复这个相当烦人的差异。