演练:定义自定义的工作流以从 Team Foundation Build 部署数据库
更新:2010 年 7 月
您必须先定义一个为部署数据库进行配置的自定义工作流,然后才能使用 Team Foundation Build 部署数据库项目。 您必须先定义一个自定义工作流,然后才能在生成定义中使用该工作流定义。 可使用 Windows Workflow 4.0 定义工作流。 您不必是专家也可遵循此简单过程进行操作。
若要完成本演练,您必须完成以下任务:
所需权限
若要执行下列过程,必须将**“编辑生成定义”权限设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限。
创建生成过程模板
创建生成过程模板的最简单方法是复制默认模板。 您可以在创建生成定义时执行此操作。 通常,您会完成生成定义。 因为本演练重点介绍自定义生成过程模板,所以本演练将不涉及定义新生成的其他详细信息。 有关如何为数据库项目定义生成的更多信息,请参见如何:使用 Team Foundation Build 部署更改。
创建自定义模板
在**“团队资源管理器”**中,单击要在其中创建自定义工作流的团队项目。
在**“生成”菜单上,单击“新建生成定义”**。
单击**“进程”**选项卡查看下图。
单击**“显示详细信息”,然后单击“新建”**。
随即出现**“新的生成过程模板”**对话框。
单击**“复制现有 XAML 文件”**。
在**“新文件名”中,指定自定义工作流的名称,然后单击“确定”**。
提示
如果要重复使用现有 XAML 文件,可单击“选择现有 XAML 文件”,然后在您的版本控制服务器上指定该文件的路径。
在生成定义窗口中的**“生成过程文件”**菜单下,单击包含您的模板的名称的超链接。
源代码管理资源管理器中随即出现包含新模板的文件夹。
在**“文件夹”窗格中右击包含新模板的文件夹,然后单击“获取最新版本”**。
右击新模板,然后单击**“签出以进行编辑”**。
将出现**“签出”**对话框。
单击**“签出”**。
右击新模板,然后单击**“视图”**。
随即显示**“Visual Studio Windows 工作流设计器”**。
有关更多信息,请参见下列主题之一:
自定义新模板
您必须将一个序列添加到默认模板,才能将部署步骤添加到生成过程的结尾。 可以使用**“Windows 工作流设计器”**来自定义 XAML 文件。 即使您以前未使用过此设计器,下面过程中的步骤也不算特别复杂。 简言之,如果您的生成成功且测试未失败,则可以将一个序列添加到工作流中,然后在工作流中使用 VSDBCMD.EXE 部署数据库。
此序列包含单个 If 活动,如果您的生成成功且测试通过,或者无任何测试,则该活动将部署您的数据库。 为了使此定义更易于遵循,此节划分成了以下四个过程:
将数据库部署序列添加到工作流
在**“Windows 工作流设计器”中单击“全部折叠”**。
将显示下图。
打开**“工具箱”,展开“控制流”部分,然后将“序列”活动拖动到设计器上“为 CheckInShelveset 生成任务签入封闭更改”**下的箭头上方。 当您将鼠标悬停在该箭头上方时,将出现第二个箭头。
在这两个箭头之间放置此活动,如下图所示。
右击所添加的序列,然后单击**“属性”**。
将出现**“属性”**窗口。
设置**“DisplayName”**属性以部署数据库。
在**“部署数据库”序列中,双击“双击以查看”**。
设计器将放大**“部署数据库”**序列,如下图所示。
在设计器顶部有一个导航通道,如下图所示。
接下来,将**“If”**活动添加到部署序列中。
添加 If 活动
打开**“工具箱”,展开“控制流”部分,并将“If”活动拖动到“在此处放置活动”**上。
一个警告图标将显示在**“部署数据库”序列和“If”活动上,因为您还未配置“If”**活动,如下图所示。
右击所添加的活动,然后单击**“属性”**。
将出现**“属性”**窗口。
将**“If”活动的“DisplayName”**属性设置为“如果生成和测试成功”。
双击**“If”活动中的“双击以查看”**。
在**“条件”**中,键入以下条件。
BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded And (BuildDetail.TestStatus = BuildPhaseStatus.Succeeded Or BuildDetail.TestStatus = BuildPhaseStatus.Unknown)
此条件测试生成是否成功,以及测试是否成功或者无任何测试运行。
**“如果生成和测试成功”**活动类似于下图。
接下来,将**“InvokeProcess”活动添加到“If”活动的“Then”**部分。
定义 Then Deploy 块
打开**“工具箱”,在“Team Foundation Build 活动”部分中找到“InvokeProcess”活动,并将其拖动到“Then”子句中的“在此处放置活动”**上。
一个警告图标将显示在**“如果生成和测试成功”活动和“InvokeProcess”活动上,因为您还未配置“InvokeProcess”**活动。
双击**“调用 VSDBCMD”活动中的“双击以查看”**。
该活动如下所示。
通过执行以下子任务来设置**“InvokeProcess”**活动的属性:
右击所添加的活动,然后单击**“属性”**。
将出现**“属性”**窗口。
将**“InvokeProcess”活动的“DisplayName”**属性设置为“调用 VSDBCMD”。
将**“Arguments”**属性设置为 "/a:Deploy /dd+ /dsp:Sql /manifest:DatabaseProjectName.deploymanifest"。 必须将 DatabaseProjectName 替换为要部署的数据库项目的名称。
将**“FileName”**属性设置为 VSDBCMD.EXE 在您的生成服务器上的路径。 例如,如果在您的生成计算机上安装了 Visual Studio,则可以指定 C:\Program Files\Microsoft Visual Studio 10.0\VSTSDB\Deploy\VSDBCMD.EXE;如果只是将 Deploy 文件夹复制到您的生成计算机,则可以指定 C:\Deploy\VSDBCMD.EXE。
重要事项 若要使用 VSDBCMD.EXE 部署数据库,Deploy 文件夹的内容必须位于您的生成计算机上。 有关更多信息,请参见如何:准备数据库以使用 VSDBCMD.EXE 从命令提示符处进行部署。
将**“WorkingDirectory”**属性设置为“BuildDetail.DropLocation”。
打开**“工具箱”,在“Team Foundation Build 活动”部分中找到“WriteBuildMessage”活动,并将其拖动到“处理标准输出”部分的“在此处放置活动”**上。
一个警告图标将显示在**“调用 VSDBCMD”活动和“WriteBuildMessage”活动上,因为您还未配置“WriteBuildMessage”**活动。
通过执行以下子任务来设置**“WriteBuildMessage”**活动的属性:
右击所添加的活动,然后单击**“属性”**。
将出现**“属性”**窗口。
将**“WriteBuildMessage”活动的“DisplayName”**属性设置为“VSDBCMD 输出”。
将**“Importance”**属性设置为 Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High。
将**“Message”**属性设置为“stdOutput”。
打开**“工具箱”,在“Team Foundation Build 活动”部分中找到“WriteBuildError”活动,并将其拖动到“处理错误输出”部分的“在此处放置活动”**上。
一个警告图标将显示在**“调用 VSDBCMD”活动和“WriteBuildError”活动上,因为您还未配置“WriteBuildError”**活动。
通过执行以下子任务来设置**“WriteBuildError”**活动的属性:
右击所添加的活动,然后单击**“属性”**。
将出现**“属性”**窗口。
将**“WriteBuildError”活动的“DisplayName”**属性设置为“VSDBCMD 错误”。
将**“Message”**属性设置为“errOutput”。
在设计器顶部的通道中,单击**“如果生成和测试成功”**。
执行此操作后,工作流将缩小一个级别。
此时,工作流如下图所示。
接下来,定义**“Else”**活动的详细信息。
定义 Else Skip Deployment 块
打开**“工具箱”,在“Team Foundation Build 活动”部分中找到“WriteBuildWarning”活动,并将其拖动到“Else”子句中的“在此处放置活动”**上。
一个警告图标将显示在**“如果生成和测试成功”活动和“WriteBuildWarning”活动上,因为您还未配置“WriteBuildWarning”**活动。
将**“WriteBuildWarning”活动的“DisplayName”**属性设置为“已跳过部署”。
将**“Message”**属性设置为“已跳过数据库部署”。
警告图标将不再显示,因为您已配置了所添加的工作流活动。
现在**“If”**活动应如下图所示。
您已更新生成工作流,可以部署指定的数据库项目了。 现在,您必须将模板签入到版本控制,这样才能在生成过程中使用该模板。
将模板签入到版本控制
您必须先将工作流签入到版本控制中,然后才能在生成定义中使用它。 您还可以利用版本控制的功能,如分支。 可以在分支项目的同时分支工作流。
保存您的工作流并关闭设计器。
在**“源代码管理资源管理器”中,右击您的新模板,然后单击“签入挂起的更改”**。
此时将出现**“签入”**对话框。
(可选)您可以指定关于更改的签入注释或其他信息。 有关更多信息,请参见下列主题:
单击**“签入”**。
现在,可以定义一个使用您在本演练中生成的自定义工作流的生成。 有关更多信息,请参见如何:使用 Team Foundation Build 部署更改。
后续步骤
现在应测试您自定义的模板。 有关更多信息,请参见如何:使用 Team Foundation Build 部署更改。
请参见
任务
如何:准备数据库以使用 VSDBCMD.EXE 从命令提示符处进行部署
概念
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2010 年 7 月 |
添加了此主题,演示如何使用 Team Foundation Build 创建自定义工作流来部署数据库。 |
信息补充。 |