TFS构建(2013)-构建停止处理



我在TFS Build中有自定义的代码活动。其中之一是TFS Build不知道的后台线程。

我想知道是否有一种方法可以让这个线程检查是否已请求"停止构建"。(即检查当前构建状态而不需要CodeActivityContext)

(注意:我不能使用AsyncCodeActivity(和它的取消机制),因为这仍然阻塞后续任务)我目前正在使用心跳系统,并依赖于TFS构建流循环的心跳超时,但这不是傻瓜证明。IBuildDetail。BuildFinished存在,但有catch 22如果构建完成,你如何获得iBuildDetail?

因为代码活动是"无状态的",那么使用以前的"CodeActivityContext"来获取iBuildDetail不起作用,即上下文不再存在。我可以得到_buildserver。getbuild (_buildUri)的代码路径但是无法找到如何建立您当前的builduri(不要与构建定义,服务器,代理或编号混淆)

谢谢

好消息,我找到解决办法了

我在BuildUri术语中被抓住了,事实证明在iBuildDetails的底部,是"Uri"

结果是BuildUri

这样的代码可以工作…静态私有Uri _buildUri;static private IBuildServer _buildServer;

    protected override void Execute(CodeActivityContext context)
    {
        // Obtain the runtime value of the Text input argument
        string ScriptPath = context.GetValue(this.InScriptPath);
        _thisContext = context;
        IBuildDetail buildDetail = _thisContext.GetExtension<IBuildDetail>();
         _buildUri = buildDetail.Uri;    // This is the complete string
        _buildServer = buildDetail.BuildServer;

……background

            try
            {
                IBuildDetail buildDetail = _buildServer.GetBuild(_buildUri);    // this does not work as it is not the BuildUri
                if (buildDetail != null)
                {
                    if (buildDetail.Status == BuildStatus.Stopped)
                    {
                          TerminateProcess();
                    }
                }
            }
            catch (Exception Ex)
            {
                  TerminateProcess();
            }

最新更新