您將如何手動觸發團隊構建中的其他團隊構建?例如,當我們在CC.Net時,如果某些構建成功,其他構建將觸發。第二個版本可以是使用此組件的項目,也可以是針對同一個組件的額外的,長期運行的測試庫。手動觸發TFS團隊構建
5
A
回答
4
你可以做到這一點的一種方法是你可以將一個AfterEndToEndIteration目標添加到你的TFSBuild.proj文件中,該文件將運行TfsBuild.exe命令行來啓動其他的構建。我想這樣的事情(雖然我沒有測試過)
<Target Name="AfterEndToEndIteration">
<GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Condition=" '$(IsDesktopBuild)' != 'true' ">
<Output TaskParameter="Status" PropertyName="Status" />
</GetBuildProperties>
<Exec Condition=" '$(Status)'=='Succeeded' "
Command="TfsBuild.exe start /server:$(TeamFoundationServerUrl) /buildDefinition:"Your Build Definition To Run"" />
</Target>
3
我已經做了馬丁在多個場合提出同樣的事情(他的博客是超越樂於助人,BTW)。但是,我最終需要觸發像這樣的級聯構建(基於其他複雜的規則),因此我創建了一個自定義任務來完成它。保持你的構建腳本不錯,精益,並給你更多的靈活性和封裝的可能性。
public override bool Execute()
{
IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName);
foreach (IBuildDefinition build in buildDefinitions)
{
if(build.Enabled) //I did a bunch of custom rules here
{
Log.LogMessage(String.Concat("Queuing build: ", build.Name));
BuildServer.QueueBuild(build);
}
}
return true;
}
有亞倫哈爾貝格的博客更多的好東西太多:
http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx