¿Hay alguna forma de copiar una definición de compilació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?¿Cómo puedo copiar una definición de compilación de TFS 2010?
Respuesta
Usted puede escribir un complemento para hacerlo. Aquí está el código para copiar una definición de build 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;
}
De su mensaje no está claro qué plantilla está usando su definición de compilación (por defecto, actualización o gestió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
acabo de tener una necesidad de copiar construir definiciones, y encontré la respuesta de Jim arriba para ser útil. Sin embargo, al ser nuevo en la API de TFS, necesitaba ayuda para conectarme al servidor y obtener la definición de compilación existente a través del código. Estos dos enlaces ayudado a llenar los vacíos:
Terminé usando las herramientas eléctricas TFS Sept 2010, que contiene la copia de comando Definición de build. – devlife
se puede descargar el nuevo TFS 2010 power tools. Tiene la opción de clonar una definición de construcción.
Ver http://msmvps.com/blogs/molausson/archive/2010/10/21/clone-a-build-definition.aspx para un ejemplo
Nota: Tenga en cuenta que el clon sólo funciona cuando no estallar por la ventana Generar.
Puede hacer clic con el botón derecho en la definición de compilación y seleccionar 'clonar definición de compilación' para copiar el archivo de definición. Luego puede editarlo desde allí.
La siguiente herramienta (VS complemento) va a satisfacer sus necesidades>
Comunidad TFS Build Administrador
http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c
Aquí es el Soltion si desea mover la definición de construcción de un proyecto de equipo de 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
}
- 1. ASP de "compilación" clásica con TFS 2010
- 2. ¿Clone la definición de compilación de TFS en Visual Studio 2012/2013/2015?
- 3. ¿Es posible copiar archivos en la plantilla de proceso de compilación de tfs 2010?
- 4. ¿Cómo depuro los procesos de compilación personalizados en TFS 2010?
- 5. Actividad de compilación personalizada de TFS 2010 Error TF215097
- 6. Automatización de compilación TFS 2010: habilitación de cobertura de código
- 7. Problema de transformación de configuración de compilación de TFS 2010
- 8. TFS 2010 RC: ¿Cómo fallar una compilación para una baja cobertura de código?
- 9. TFS 2010: implementar en varios servidores después de la compilación
- 10. TFS 2010 API, determine en qué servidor de compilación se está ejecutando una compilación.
- 11. Cómo integrar las pruebas de NUnit en una compilación de TFS 2010
- 12. Obtener el número de conjunto de cambios de una compilación desencadenada en TFS 2010
- 13. TFS 2010 y "construir una vez, desplegar muchos"
- 14. ¿Cómo puedo hacer una compilación paralela en Visual Studio 2010?
- 15. TFS 2010 no se copiaron archivos exe después de la compilación exitosa
- 16. API de TFS: cómo consultar compilaciones independientemente de la definición de compilación a la que pertenecen
- 17. Uso de definiciones de compilación TFS en una máquina local
- 18. Nuevas características de TFS 2010
- 19. Despliegue automático TFS 2010
- 20. TFS 2010 API Recursos
- 21. Áreas TFS, definición óptima y configuración
- 22. ¿Cómo obtener el último artefacto de compilación de la caída de compilación de TFS?
- 23. Cómo obtener una compilación específica con la API de TFS
- 24. Autenticación en TFS 2010
- 25. Cómo agregar nuevos usuarios a TFS 2010
- 26. Definición de compilación de TFS: ¿Puedes agregar esto al control de código fuente?
- 27. TFS 2010: ¿cómo recuperar un archivo eliminado?
- 28. TFS construir definición y espacio de trabajo relativa ruta
- 29. No ejecutar pruebas unitarias desde ciertos ensamblados en la definición de compilación de TFS 2012
- 30. ¿Cómo puedo deshacer una restauración del conjunto de cambios en TFS 2010?
tiene esta trabajando en LINQPad, impresionante =) – Maslow