Como você altera a pasta suspensa para compilações históricas no TFS 2010
-
10-12-2019 - |
Pergunta
Nosso servidor que tem sido usado para nossos locais de entrega de build está sendo desativado.Eu sei como alterar a definição de compilação atual para usar o novo servidor, mas como alterar os registros históricos de compilações que já foram concluídas?Quero poder abrir compilações anteriores e clicar em 'Abrir pasta suspensa' e ser levado para o novo servidor.Copiaremos manualmente as compilações antigas para o novo servidor.
Solução
O exemplo a seguir pareceu funcionar:
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());
}
}
}
Uma coisa que você deve levar em consideração é que provavelmente não terá o privilégio de atualizar as informações da compilação.Na minha primeira tentativa, embora eu seja administrador do projeto, obtive o seguinte:
TF215106:Acesso negado.DOMAIN Nome de usuário Necessário de atualização As permissões de informações de criação para a definição de construção myBuildDefinition in Team Project MyTeamProject para executar a ação.Para obter mais informações, entre em contato com o administrador do Team Foundation Server.
Para superar isso, defina o botão direito clicando com o botão direito em TeamExplorer "Builds" e selecione "Segurança...".
Outras dicas
Eu não conheço nenhuma ferramenta para fazer isso.Talvez haja um comando TFS PowerShell, mas que eu acho que você poderia - depois de tomar precauções adequadas, é claro - atualize o SQL DB diretamente.
O mapeamento para o local da queda é armazenado na coleção SQL DB em TBL_BUILD.
Selecione [DropLocation], [DropLocationRoot], [LogLocalização] de [TBL_BUILD]
Não tenho certeza se existem implicações no armazém.Pode querer verificar isso primeiro.
Eu acredito que a Microsoft geralmente recomenda o manipulação de SQL diretamente para coisas como esta.Você poderia usar a API do TFS, em vez disso, que seria uma abordagem relativamente segura.