将 TFS 构建与发布管理集成

Posted

技术标签:

【中文标题】将 TFS 构建与发布管理集成【英文标题】:Integrate a TFS Build with Release Management 【发布时间】:2014-07-04 13:39:21 【问题描述】:

如何从 Microsoft 的 Visual Studio 2013 发布管理中创建自动运行发布(部署)的 TFS 构建?

【问题讨论】:

【参考方案1】:

为了从 TFS 构建开始发布,您需要更改构建定义。幸运的是,当您安装 Release Management 时,它会创建一个构建模板供您与示例一起使用。在某些情况下,这足以让您继续前进。

发布管理构建过程模板

默认情况下,版本管理构建过程模板未安装在 TFS 中,因此在您添加之前它不会显示为可用的构建过程模板。

在您的服务器安装中找到模板:C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReleaseManagement\bin\

TFS 2010 : ReleaseDefaultTemplate.xaml
TFS 2012 : ReleaseDefaultTemplate.11.1.xaml
TFS 2013 : ReleaseTfvcTemplate.12.xaml (or ReleaseGitTemplate.12.xaml if using GIT)

要添加发布管理构建过程模板,您需要将其签入到项目中 BuildProcessTemplate 文件夹中的 TFS 源代码控制中。然后在编辑(或添加)构建定义时添加构建过程文件。将发布管理模板添加到构建模板列表后,您就可以开始使用它了。

请确保您使用来自发布管理服务器的上述模板,而不是像我最初那样使用客户端目录。如果是这样,您将在构建过程中遇到相当奇怪的错误,例如:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets (3883): Web deployment task failed. (Unknown ProviderOption:DefiningProjectFullPath. Known ProviderOptions are:skipInvalid.)

取件\包裹路径。

当您设置组件时,Release Management 需要知道从哪里获取安装文件以对它们进行处理。当您创建发布模板时,它应该通过选择将启动它的构建定义连接到特定构建(也勾选“可以从构建中触发发布?”)。当您添加要安装的组件作为您的发行版的一部分时,您指定它们的源。应选择“使用应用程序构建”。吸引我的一点是 Build Drop 位置旁边的大空框,这是一个必填字段。我最初的反应是用我尝试部署的 msi 文件的名称填充它。这是有道理的吧?错误的。如果我从 Visual Studio 排队构建,我会不断收到以下消息。

Package location '\\blah\blah\Build Name\Build Name_20140707.3\A.Product.To.Install.msi' does not exists or Deployer user does not have access.

该文件确实存在于该位置,并且部署代理使用的用户确实有权访问放置目录。我还确认它可以使用 ProcMon 访问它。睡了之后,我决定将鼠标悬停在输入框上,然后弹出一个漂亮的工具提示:

相对于构建放置位置的包路径是必需的 绑定到发布模板的组件。如果包裹直接在 构建放置位置的根目录,您需要输入'\' 字符。

因此,在我的 eureka 时刻之后,我删除了 msi 文件名并将其替换为“\”并将下一个构建排队。有效。回想起来,我认为他们应该取消强制要求输入某些内容来代替输入“\”的需要。它有点隐蔽,不直观。

See MSDN Article here for more info

For Modified Build Process Templates

【讨论】:

你可能也想包含这个,以防有人看到这个答案但正在使用修改后的构建过程模板:blogs.msdn.com/b/visualstudioalm/archive/2013/12/09/… 服务器的模板与我的客户端模板相同。

以上是关于将 TFS 构建与发布管理集成的主要内容,如果未能解决你的问题,请参考以下文章

匠心·求TFS与Jmeter集成测试实践

TFS2017持续集成构建

TFS 持续集成 clickonce 应用程序

用于 TFS 持续集成的 NuGet 包

如何为 Windows Azure Web 角色上的 PHP 项目配置 TFS 构建定义以实现持续集成?

集成 TFS 版本控制的最佳方法是啥