我试图找出在TFS工作项状态发生变化时是否可以配置CI构建和发布。
举个例子 - 当工作项从开发状态移动到看板中的QA(使用TFS在线)时,将启动CI构建/发布,并将更改部署到QA实例。
答案 0 :(得分:1)
不,我会说尝试跟踪当前通过看板列部署用户故事的环境是一种不好的方法。
用户故事不是可以从一个环境单独移动到下一个环境的离散项目。用户素材是构成该用户素材实施的一组变更。构建不是一个用户故事的构建,它是在某个时间点的整个代码库的构建。
您不会触发CI构建作为工作管理的一部分,您将触发CI以响应代码的更改,因为这就是CI:一种与您的开发分支之间的小型,频繁提交和集成相结合的实践自动构建和测试。
相反,将您的提交与用户故事/任务联系起来,并使用Release中心定义部署管道。随着您的用户故事在环境之间得到提升,您将能够在用户故事中看到当前部署到的环境。
答案 1 :(得分:1)
首先,请参阅丹尼尔的答案。
其次,根据您的要求,您可以创建一个Web挂钩来跟踪工作项状态并向您的Web应用程序发送请求(例如,Web API,需要可以从Internet访问),然后通过调用TFS / VSTS来构建队列{ {3}}
用于队列构建的简单C#代码。 (安装Build REST API包)
var u = new Uri("https://[accout].visualstudio.com");
//VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("[alternative username]", "[password]")));
VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.VssBasicCredential(string.Empty, "[personal access token]"));
var connection = new VssConnection(u, c);
var buildServer = connection.GetClient<BuildHttpClient>();
var build= buildServer.QueueBuildAsync(new Build() { Definition =new DefinitionReference() { Id=[definition id]}, Project= "[team project]" }).Result;