【发布时间】:2017-10-27 10:39:49
【问题描述】:
我正在尝试了解是否可以在 TFS 工作项状态更改时配置 CI 构建和发布。
举个例子—— 当工作项在看板中从 Dev 状态移动到 QA(使用 TFS 在线)时,CI 构建/发布将启动,并将更改部署到 QA 实例。
【问题讨论】:
标签: tfs continuous-integration azure-devops tfsbuild
我正在尝试了解是否可以在 TFS 工作项状态更改时配置 CI 构建和发布。
举个例子—— 当工作项在看板中从 Dev 状态移动到 QA(使用 TFS 在线)时,CI 构建/发布将启动,并将更改部署到 QA 实例。
【问题讨论】:
标签: tfs continuous-integration azure-devops tfsbuild
不,我会说尝试通过看板列跟踪用户故事当前部署到的环境是一种不好的方法。
用户故事不是可以单独从一个环境移动到另一个环境的离散项目。用户故事是构成该用户故事实现的更改的集合。构建不是一个用户故事的构建,它是整个代码库在某个时间点的构建。
您不会触发 CI 构建作为工作管理的一部分,而是触发 CI 以响应对代码的更改,因为这就是 CI:一种将小型、频繁的提交和开发分支之间的集成结合在一起的实践通过自动化构建和测试。
相反,将您的提交与用户故事/任务联系起来,并使用发布中心定义部署管道。当您的用户故事在环境之间进行推广时,您将能够在用户故事中看到它当前部署到哪个环境。
【讨论】:
首先,参考丹尼尔的回答。
其次,根据您的要求,您可以创建一个 Web 挂钩来跟踪工作项状态并向您的 Web 应用程序发送请求(例如 Web API,需要可从 Internet 访问),然后通过调用 TFS/VSTS @ 进行队列构建987654321@.
用于排队构建的简单 C# 代码。 (安装Microsoft Team Foundation Server Extended Client包)
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;
【讨论】: