2008-10-10 11 views
5

팀 빌드에서 추가 팀 빌드를 수동으로 트리거하는 방법은 무엇입니까? 예를 들어, 우리가 CC.Net에있을 때 특정 빌드가 성공하면 다른 빌드가 트리거됩니다. 두 번째 빌드는이 구성 요소를 사용하는 프로젝트이거나 동일한 구성 요소에 대해 추가로 오래 실행되는 테스트 라이브러리 일 수 있습니다.수동으로 TFS 팀 빌드 트리거

답변

4

당신이 할 수있는 한 가지 방법은 TFSBuild.proj 파일에 AfterEndToEndIteration 대상을 지정하여 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:&quot;Your Build Definition To Run&quot;" /> 

    </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