2011-12-09 4 views
3

나는 찾을 수 없지만 이전에 물어 보았을 것입니다. 작업 공간 매핑 및 분기 위치와 관련된 다른 인수가 다른 다양한 분기에서 빌드를 설정하려고합니다. , 솔루션 파일과 같은, 무슨 일이 일어나는가 우리가 코드를 분기하는 메이저 또는 마이너 번호를 증가시킬 때, 내가 달성하고자하는 것은 코드가 분기 될 때입니다. 올바른 작업 공간, 경로와 같은 분기와 관련된 특정 인수를 사용하여 빌드 정의 파일을 생성 할 수 있습니다. 솔루션 파일 및 버전 파일.tfs 2010 빌드 정의 생성

답변

2

버전 컨트롤에서 분기 작업을 수행하고 일치시킬 빌드 정의를 만드는 데 사용하는 사용자 지정 유틸리티를 만드는 것이 좋습니다. 다음은 TFS API를 사용하여 빌드 정의를 작성하는 몇 가지 코드입니다.

또는 TFS 이벤트 서비스에서 CheckInEvent에 가입하고 세부 사항을 검사하여 분기 작업인지 확인하고 거기에서 프로그래밍 방식으로 빌드 정의를 만들 수 있습니다. 코드 아래

은 뻔뻔이 위대한 블로그 게시물에서 복사 : http://geekswithblogs.net/jakob/archive/2010/04/26/creating-a-build-definition-using-the-tfs-2010-api.aspx

string teamProject = "TeamProjectName"; 
string buildController = "BuildControllerName"; 

TfsTeamProjectCollection server = new TfsTeamProjectCollection(new Uri("http://<tfs>:<port>/tfs")); 
server.EnsureAuthenticated(); 
IBuildServer buildServer = (IBuildServer)server.GetService(typeof(IBuildServer)); 

var buildDefinition = buildServer.CreateBuildDefinition(teamProject); 
buildDefinition.Name = "TestBuild"; 
buildDefinition.Description = "description here..."; 

buildDefinition.ContinuousIntegrationType = ContinuousIntegrationType.Individual; 


buildDefinition.Workspace.AddMapping("$/Path/project.sln", "$(SourceDir)", WorkspaceMappingType.Map); 
buildDefinition.Workspace.AddMapping("$/OtherPath/", "", WorkspaceMappingType.Cloak); 

buildDefinition.BuildController = buildServer.GetBuildController(buildController); 
buildDefinition.DefaultDropLocation = @"\\SERVER\Drop\TestBuild"; 

//Get default template 
var defaultTemplate = buildServer.QueryProcessTemplates(teamProject).Where(p => p.TemplateType == ProcessTemplateType.Default).First(); 
buildDefinition.Process = defaultTemplate; 

//Set process parameters 
var process = WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters); 

//Set BuildSettings properties 
BuildSettings settings = new BuildSettings(); 
settings.ProjectsToBuild = new StringList("$/pathToProject/project.sln"); 
settings.PlatformConfigurations = new PlatformConfigurationList(); 
settings.PlatformConfigurations.Add(new PlatformConfiguration("Any CPU", "Debug")); 
process.Add("BuildSettings", settings); 

buildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process); 

buildDefinition.RetentionPolicyList.Clear(); 
buildDefinition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Succeeded, 10, DeleteOptions.All); 
buildDefinition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Failed, 10, DeleteOptions.All); 
buildDefinition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Stopped, 1, DeleteOptions.All); 
buildDefinition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.PartiallySucceeded, 10, DeleteOptions.All); 

buildDefinition.Save(); 
관련 문제