如何将构建任务仅限于 VSTS 而不是 TFS
How to limit build task only to VSTS not TFS
我有一个包含两个构建任务的 VSTS 扩展,一个构建任务应该同时适用于 VSTS 和 TFS,另一个仅适用于 TFS。是否可以通过扩展清单为每个构建任务配置它?
使 extension manifest 指示扩展仅适用于 Team Services (targets = Microsoft.Visualstudio.Services.Cloud
)。
无法通过扩展清单文件实现此目的。一个好的解决方法就像jessehouwing提到的那样:将两个构建任务合并为一个,在构建设置中提供一个选项让用户select或者在运行构建任务时检测构建环境。如果 select 编辑或检测到 TFS,运行 两个构建任务中的代码,否则只是 运行 第一个构建任务中的代码。
我已使用以下解决方法来显示消息并停止在 TFS 中构建。
var collectionUrl = process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"];
var regExpression = new RegExp("^((https?)\:\/\/)(([a-z0-9])+\.)*(visualstudio\.com)");
if(regExpression.test(collectionUrl))
{
//VSTS Detected
}
else
{
//Display message task not compatible with TFS
//Fail the build
}
我有一个包含两个构建任务的 VSTS 扩展,一个构建任务应该同时适用于 VSTS 和 TFS,另一个仅适用于 TFS。是否可以通过扩展清单为每个构建任务配置它?
使 extension manifest 指示扩展仅适用于 Team Services (targets = Microsoft.Visualstudio.Services.Cloud
)。
无法通过扩展清单文件实现此目的。一个好的解决方法就像jessehouwing提到的那样:将两个构建任务合并为一个,在构建设置中提供一个选项让用户select或者在运行构建任务时检测构建环境。如果 select 编辑或检测到 TFS,运行 两个构建任务中的代码,否则只是 运行 第一个构建任务中的代码。
我已使用以下解决方法来显示消息并停止在 TFS 中构建。
var collectionUrl = process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"];
var regExpression = new RegExp("^((https?)\:\/\/)(([a-z0-9])+\.)*(visualstudio\.com)");
if(regExpression.test(collectionUrl))
{
//VSTS Detected
}
else
{
//Display message task not compatible with TFS
//Fail the build
}