TFS构建(2013) - 构建停止处理
问题描述:
我在TFS构建中定制了代码活动。其中之一是TFS Build不知道的后台线程。TFS构建(2013) - 构建停止处理
我想找出是否有该线程检查是否有“停止建设”已请求的方式。 我目前使用:(即在当前构建状态检查而无需CodeActivityContext)
(因为这仍然让后续任务,我不能使用AsyncCodeActivity(和它的取消机构)NB)心跳系统,并依赖TFS Build流程循环中的热点超时,但这并非万无一失。 IBuildDetail.BuildFinished存在,但是如果构建完成,还有catch 22,你如何获得iBuildDetail?由于代码活动是“无状态的”,因此使用先前的“CodeActivityContext”来获取iBuildDetail不起作用,即上下文不再存在。 我能到_buildServer.GetBuild(_buildUri)的代码路径 ,但无法找到如何建立你的当前builduri
感谢(不要与构建定义,服务器,代理或数字混淆)
答
好消息,我找到了解决办法
我在BuildUri长期追了上来,原来在iBuildDetails的底部,是“开放的”
这原来是BuildUri
像这样的代码工作... static private 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;
...... 在后台的TThread
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();
}