How can I copy a TFS 2010 Build Definition?

前端 未结 7 1866
慢半拍i
慢半拍i 2020-12-31 00:46

Is there any way to copy a build definition? I work in a mainline source control methodology which utilizes many different branches that live for very short periods (ie. a

7条回答
  •  一个人的身影
    2020-12-31 01:01

    Here is the soltion if you want to move the Build definition from one Team Project to other Team project.

        public void MoveBuild(string fromTeamProject, string toTeamProject, string buildName, string newBuildName)
        {
    
            var _server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new
    
            Uri("http://Mytfs:8080/defaultcollection"));
    
            IBuildServer _buildServer = _server.GetService();
    
            var buildDetails = _buildServer.QueryBuildDefinitions(fromTeamProject);
    
            foreach (var fromBuild in buildDetails)
            {
                if (fromBuild.Name != buildName) continue;
                var newBuildDefinition = _buildServer.CreateBuildDefinition(toTeamProject);
                newBuildDefinition.Name = !string.IsNullOrEmpty(newBuildName) ? newBuildName : fromBuild.Name;
    
                newBuildDefinition.BuildController = fromBuild.BuildController;
    
                // This finds the template to use 
                foreach (var mapping in fromBuild.Workspace.Mappings)
                {
                    newBuildDefinition.Workspace.AddMapping(
                        mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
                }
                newBuildDefinition.DefaultDropLocation = fromBuild.DefaultDropLocation;
                newBuildDefinition.Description = fromBuild.Description;
                // buildDefinition.Workspace.AddMapping(build.Workspace.);
                newBuildDefinition.Process = _buildServer.QueryProcessTemplates(fromBuild)[2];
    
                newBuildDefinition.ProcessParameters = fromBuild.ProcessParameters;
                newBuildDefinition.Enabled = false;
                newBuildDefinition.Save();
            }//end of for each loop 
    
        }
    

提交回复
热议问题