CreateNewWorkItem 工作
更新:2007 年 11 月
根據預設,當 Team Foundation Build 偵測到編譯 (Compilation) 錯誤或靜態 (Static) 分析失敗時,會建立新的工作項目。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 |
指定 Team 專案名稱。 |
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 工作的不同執行個體 (Instance),自訂建置處理序。
Team Foundation Build 電腦上的 <root>:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\TeamBuild 資料夾包含 Microsoft.TeamFoundation.Build.targets 檔。
有效的工作項目類型
每一個 Team 專案都是以特定的方法所建立。在 Team Foundation 中,MSF for Agile Software Development 方法會定義 Bug、服務品質、風險、情節和工作項目等類型。CMMI for Process Improvement 方法會定義 Bug、變更要求、問題、需求、檢閱、風險、情節和工作項目等類型。您也可以自訂現有的工作項目類型定義來定義自己的工作項目類型。如需詳細資訊,請參閱自訂工作項目類型。
為 CreateNewWorkItem 工作定義的工作項目類型對於組建整合必須是有效的,而且也必須定義 FoundIn 欄位。如需詳細資訊,請參閱在工作項目類型中加入整合欄位。
預設行為
如果您未定義 WorkItemType 屬性,CreateNewWorkItem 工作會使用 Bug 工作項目類型。
WorkItemFieldValues 屬性的注意事項
WorkItemFieldValues 是用來指定工作項目的欄位值,使用的格式為以分號區隔的名稱/值組清單。如果您指定不存在的欄位名稱,將會忽略對應的 <名稱, 值> 組。例如,如果您想要將嚴重性欄位設定為 1,但是此工作項目類型中未定義嚴重性,則會忽略輸入的值。
如果您定義的工作項目具有不含預設值的必要欄位,您必須提供 WorkItemFieldValues 屬性中的值。例如,「缺失」工作項目類型有一個名為 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" />