How do I create a TFS Build which automatically runs a Release (deployment) from Microsoft's Release Management for Visual Studio 2013?
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 文件名并将其替换为“\”并将下一个构建排队。有效。回想起来,我认为他们应该取消强制要求输入某些内容来代替输入“\”的需要。它有点隐藏,不直观。