Domanda

Il nostro server utilizzato per le nostre posizioni di drop build è in pensione.So come modificare la definizione della build corrente per utilizzare il nuovo server, ma come modifichi i record storici per le build che hanno già completato?Voglio essere in grado di aprire le build passate e fare clic su "Open Drop Folder" e essere eseguiti nel nuovo server.Copiare manualmente le vecchie build nel nuovo server.

È stato utile?

Soluzione

Il seguente campione sembrava funzionare:

using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;

namespace ChangeDropLocation
{
    class Program
    {
        static void Main()
        {
            TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://MyServer:8080/tfs/Collection"));
            var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));

            IBuildDetail buildDetail = buildService.GetBuild(new Uri("vstfs:///Build/Build/1506"));
            buildDetail.DropLocation ="\\somewhere";
            var buildDetails = new List<IBuildDetail>();
            buildDetails.Add(buildDetail);
            buildService.SaveBuilds(buildDetails.ToArray());
        }
    }
}
.


.

Una cosa che dovresti prendere in considerazione è che probabilmente maniderai il privilegio di aggiornare le informazioni di costruzione.Nel mio primo tentativo, anche se sono un amministratore di progetto, ho ottenuto quanto segue:

.

TF215106: accesso negato.Dominio \ Nome utente ha bisogno di aggiornare build Autorizzazioni informative per la definizione di build mybuilddefinition in team Progetto myteamproject per eseguire l'azione.Per maggiori informazioni, Contatta l'amministratore del server Foundation Team Foundation.

Per superare questo, impostare il diritto facendo clic con il pulsante destro del mouse su TeamExplorer "Builds" e quindi selezionare "Security ...".

Altri suggerimenti

Non conosco alcun strumento per farlo.Forse c'è un comando TFS PowerShell, ma a corto di questo penso che potresti - dopo aver preso le opportune precauzioni ovviamente - aggiorna direttamente il DB SQL.

La mappatura alla posizione di rilascio è memorizzata nella raccolta SQL DB in TBL_Build.

Selezionare [DropLocation], [DropLocationroot], [Log Bocation] da [tbl_build]

Non sono sicuro che ci siano implicazioni sul magazzino.Potrebbe voler controllare questo primo.

Credo che Microsoft generalmente raccomanda contro la manipolazione di SQL direttamente per cose come questa.È possibile utilizzare invece l'API TFS che sarebbe un approccio relativamente più sicuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top