CreateNewWorkItem 任务
更新:2007 年 11 月
默认情况下,如果 Team Foundation Build 检测到编译错误或静态分析失败,则会创建新工作项。CreateNewWorkItem 任务以指定的类型、指定的标题和说明创建新工作项。Microsoft.VSTS.Build.FoundIn 字段设置为 BuildId 属性的值,WorkItemFieldValues 属性中指定的所有自定义字段值都根据指定值进行设置。
参数
属性 |
说明 |
---|---|
TeamFoundationServerUrl |
指定 Team Foundation Server URL。例如,http://MyServer:8080。 |
BuildNumber |
指定 Team Foundation Build 内部版本号。 |
BuildURI |
指定生成 URI。 |
Description |
指定工作项说明。此属性的默认值在生成定义的 TFSBuild.proj 文件中指定,如下所示:
|
TeamProject |
指定团队项目名称。 |
Title |
指定工作项标题。 |
WorkItemFieldValues |
为创建的工作项指定字段名和值的列表。 将这些值指定为以分号分隔的名称/值对列表。例如,如果要设置 priority=1、severity=2 和 rank=0,请在此处所示的 XML 中定义 MSBuild 的属性,如下所示:
|
WorkItemType |
指定工作项类型。例如“bug”。 必须是有效的工作项类型。如果未定义此属性,则默认工作项类型为 bug。 |
备注
CreateNewWorkItem 任务在 Microsoft.TeamFoundation.Build.Tasks.VersionControl.dll 中定义。Microsoft.TeamFoundation.Build.targets 文件包含 CreateNewWorkItem 任务的一个实例,Team Foundation Build 使用该实例作为 CreateWorkItem 目标的默认实现。您也可以自定义生成过程,方法是在 TfsBuild.proj 文件中为生成定义定义一个不同的 CreateNewWorkItem 任务实例。
Team Foundation Build 计算机上的 <根>:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\TeamBuild 文件夹包含 Microsoft.TeamFoundation.Build.targets 文件。
有效工作项类型
每个团队项目都由特定方法创建。在 Team Foundation 中,MSF for Agile Software Development 方法定义 Bug、服务质量、风险、方案和任务工作项类型。CMMI for Process Improvement 方法定义 Bug、更改请求、问题、要求、审阅、风险、方案和任务工作项类型。通过自定义现有工作项类型定义,也可以定义您自己的工作项类型。有关更多信息,请参见自定义工作项类型。
为 CreateNewWorkItem 任务定义的工作项类型必须对生成集成有效,并且必须定义 FoundIn 字段。有关更多信息,请参见在工作项类型中添加集成字段。
默认行为
如果不定义 WorkItemType 属性,CreateNewWorkItem 任务则使用 Bug 工作项类型。
WorkItemFieldValues 属性的相关说明
WorkItemFieldValues 用于将工作项的字段值指定为以分号分隔的名称/值对列表。如果指定的字段名不存在,则忽略相应的“<名称, 值>”对。例如,如果要将“severity”(严重级别)字段设置为 1,但工作项类型中未定义严重级别,则忽略输入内容。
如果定义的工作项的必选字段没有默认值,则必须在 WorkItemFieldValues 属性中提供值。例如,“Defect”(缺陷)工作项类型有一个名为“Priority”(优先级)的必选字段。“Priority”(优先级)的值为 0、1、2 或 3,未指定默认设置。如果为必需的字段指定的值无效,则任务将失败。例如,如果您将“Priority”(优先级)设置 5,则 CreateNewWorkItem 任务失败。
您不能指定工作项的“CreatedBy”(创建者)和“State”(状态)字段。“CreatedBy”(创建者)字段是只读的。它通过工作项跟踪对象模型 (OM) 进行设置。不能指定“State”字段,原因是工组项跟踪 OM 不可能具有多个启动状态。
示例
下面的示例在 TfsBuild.proj 文件中为生成失败时所创建的工作项设置 WorkItemFieldValues。
<WorkItemFieldValues>Area Path=$(AreaPath);Iteration Path=$(IterationPath);Severity=1;Priority=0;Symptom=build break;Steps To Reproduce=Start the build using Team Build;Source=Development;How Found=Build Break;Assigned To=Jim Wilson</WorkItemFieldValues>
下面的示例在 TfsBuild.proj 文件中使用 CreateNewWorkItem 任务在生成失败时创建自定义工作项。
<!-- Add the UsingTask to the top of the TFsBuild.proj file after the schema definition-->
<UsingTask TaskName="Microsoft.TeamFounadtion.Build.Tasks.CreateNewWorkItem" AssemblyFile="$(TeamBuildRefPath)\Microsoft.TeamFoundation.Build.Tasks.VersionControl.dll" />
<!-- Add the following XML after the closing </ItemGroup>-->
<!-- and before the closing </Project>-->
</ItemGroup>
<PropertyGroup> <BuildNumber>BuildType_Date.1</BuildNumber> <WorkItemFieldValues>Priority=1:Severity=2</WorkItemFieldValues> <WorkItemType>Bug</WorkItemType> </PropertyGroup> <TargetName="CreateWorkItem"> <CreateNewWorkItem BuildNumber="$(BuildNumber)" BuildURi="$(BuildURI)" Description="The CreateNewWorkItem task created this bug." TeamProject"MyTeamProject" TeamFoundationServerUrl="http://MyTFServer.8080" Title="Bug in $(BuildNumber)" WorkItemFieldValues="$(WorkItemFieldValues)" WorkItemType="$(WorkItemType)" /> </Target>
</Project>
下面的示例演示 Microsoft.TeamFoundation.Build.targets 文件中定义的 CreateNewWorkItem 任务的默认实例。
<CreateNewWorkItem
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildURI)"
BuildNumber="$(BuildNumber)"
Description="$(WorkItemDescription)"
TeamProject="$(TeamProject)"
Title="$(WorkItemTitle)"
WorkItemFieldValues="$(WorkItemFieldValues)"
WorkItemType="$(WorkItemType)"
ContinueOnError="true" />