team new create tfs tfs2010 team-build

tfs - new - team foundation server add project



¿Cómo puedo copiar una definición de compilación de TFS 2010? (7)

Aquí está la solución si desea mover la definición de compilación de un proyecto de equipo a otro proyecto de equipo.

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<IBuildServer>(); 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 }

¿Hay alguna forma de copiar una definición de construcción? Trabajo en una metodología de control de fuente principal que utiliza muchas ramas diferentes que viven durante períodos muy cortos (es decir, unos pocos días a una semana). Realmente me gustaría copiar una plantilla de construcción y simplemente cambiar la solución para construir. ¿Hay alguna manera de hacer esto?


De su mensaje no está claro qué plantilla está usando su definición de compilación (por defecto, actualización o administración de laboratorio). Si entiendo correctamente, le gustaría configurar fácilmente una definición de compilación que construya la misma solución pero desde una rama diferente.

Una cosa que podrías intentar en lugar de copiar la definición es editarla. Cuando la ramificación muere, cambie el nombre de la definición de compilación (podría ayudar con la generación de informes), cambie la asignación del área de trabajo de la compilación y debe hacerlo.

Gracias, Ladislau




Puede escribir un complemento para hacerlo. Aquí está el código para copiar una definición de compilación existente:

static IBuildDefinition CloneBuildDefinition(IBuildDefinition buildDefinition) { var buildDefinitionClone = buildDefinition.BuildServer.CreateBuildDefinition( buildDefinition.TeamProject); buildDefinitionClone.BuildController = buildDefinition.BuildController; buildDefinitionClone.ContinuousIntegrationType = buildDefinition.ContinuousIntegrationType; buildDefinitionClone.ContinuousIntegrationQuietPeriod = buildDefinition.ContinuousIntegrationQuietPeriod; buildDefinitionClone.DefaultDropLocation = buildDefinition.DefaultDropLocation; buildDefinitionClone.Description = buildDefinition.Description; buildDefinitionClone.Enabled = buildDefinition.Enabled; buildDefinitionClone.Name = String.Format("Copy of {0}", buildDefinition.Name); buildDefinitionClone.Process = buildDefinition.Process; buildDefinitionClone.ProcessParameters = buildDefinition.ProcessParameters; foreach (var schedule in buildDefinition.Schedules) { var newSchedule = buildDefinitionClone.AddSchedule(); newSchedule.DaysToBuild = schedule.DaysToBuild; newSchedule.StartTime = schedule.StartTime; newSchedule.TimeZone = schedule.TimeZone; } foreach (var mapping in buildDefinition.Workspace.Mappings) { buildDefinitionClone.Workspace.AddMapping( mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth); } buildDefinitionClone.RetentionPolicyList.Clear(); foreach (var policy in buildDefinition.RetentionPolicyList) { buildDefinitionClone.AddRetentionPolicy( policy.BuildReason, policy.BuildStatus, policy.NumberToKeep, policy.DeleteOptions); } return buildDefinitionClone; }


Puede hacer clic con el botón derecho en la definición de compilación y seleccionar ''definición de clonación'' para copiar el archivo de definición. Luego puede editarlo desde allí.