Esiste un modo per copiare una definizione di build? Lavoro in una metodologia di controllo del codice sorgente principale che utilizza molti rami diversi che vivono per periodi molto brevi (ad esempio da alcuni giorni a una settimana). Mi piacerebbe davvero copiare un modello di build e cambiare solo la soluzione da costruire. C'è un modo per fare questo?Come posso copiare una definizione di build TFS 2010?
risposta
È possibile scrivere un componente aggiuntivo per farlo. Ecco il codice per copiare una definizione di build esistente:
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;
}
Dal messaggio non è chiaro quale modello è la definizione di build utilizzata (impostazione predefinita, aggiornamento o gestione lab). Se ho capito bene, ti piacerebbe impostare facilmente una definizione di build che costruisca la stessa soluzione ma da un ramo diverso.
Una cosa che potresti provare invece di copiare la definizione è modificarla. Quando il ramo muore, rinomina la definizione di build (potrebbe essere utile per la creazione di report), modifica la mappatura dell'area di lavoro della build e dovresti eseguirla.
Grazie, Ladislau
Ho appena avuto una necessità di copiare costruire le definizioni, e ho trovato la risposta di Jim sopra per essere utile. Tuttavia, essendo nuovo per l'API TFS, avevo bisogno di aiuto per la connessione al server e ottenere la definizione di build esistente attraverso il codice. Questi due collegamenti hanno contribuito a colmare le lacune:
ho finito per usare gli strumenti TFS Potere Sept 2010 che contiene Clone comando definizione di compilazione. – devlife
è possibile scaricare la nuova TFS 2010 power tools. Ha la possibilità di clonare una definizione di build.
Vedi http://msmvps.com/blogs/molausson/archive/2010/10/21/clone-a-build-definition.aspx per un esempio
Nota: Tenere presente che il clone funziona solo quando non hai pop fuori dalla finestra Genera.
È possibile fare clic con il tasto destro del mouse sulla definizione di build e selezionare "clone build definition" per copiare il file di definizione. Puoi quindi modificarlo da lì.
Lo strumento seguente (VS Addin) in grado di soddisfare le vostre esigenze>
Comunità TFS Costruire Direttore
http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c
Ecco la soltion se si desidera spostare la definizione di compilazione da un team di progetto per altro progetto Team.
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. Nodejs Definizione build TFS
- 2. Definizione build TFS clone in Visual Studio 2012/2013/2015?
- 3. Come posso far apparire una build di TeamCity in TFS Build Explorer?
- 4. Come concatenare le build TFS?
- 5. Come eseguire una compilazione automatizzata in TFS 2010 con un'etichetta
- 6. Utilizzo di Gallio/Mbunit con TFS 2010 Team Build
- 7. TFS Build Test Results
- 8. Come ripristinare la definizione di build cancellata
- 9. API TFS: come eseguire query su build indipendenti dalla definizione di build di appartenenza
- 10. API TFS 2010, determinare su quale build è in esecuzione una build.
- 11. Automazione build TFS 2010 - Abilitazione della copertura del codice
- 12. Come attivare una build in TFS 2015 usando l'API REST
- 13. Personalizza Riepilogo Costruisci TFS 2010
- 14. Ottieni il numero di changeset di una build innescata in TFS 2010
- 15. TFS 2010 RC: Come fallire una build per la copertura di basso codice?
- 16. TFS 2010 e "costruire una volta, distribuire molti"
- 17. TFS 2015 Publish Build Artifacts in una directory
- 18. Migrazione da TFS 2010 a TFS 2012
- 19. Risorse API TFS 2010
- 20. Converti TFS 2013 xaml Build Definition in TFS 2015 vNext Build
- 21. Come posso trovare tutti i file estratti in TFS 2010?
- 22. Come posso annullare un rollback del changeset in TFS 2010?
- 23. Come configurare la definizione di build TFS 2013 per creare da tag Git?
- 24. Tfs build fallito
- 25. YUI compressor e TFS Build
- 26. È possibile copiare il file nel modello di processo di creazione di tfs 2010?
- 27. Dove si trova il registro di build "principale" di TFS 2010?
- 28. TFS 2010: cronologia persa dopo lo spostamento di una cartella
- 29. Organizzazione del codice sorgente in TFS 2010
- 30. Aggiornamento di TFS 2015 Build Agent
ottenuto questo lavoro in LINQPad, impressionante =) – Maslow