Pergunta

Eu defini uma compilação no TFS 2010 com um local de descarte como "\server\BuildDrop\".Quando coloco a compilação na fila, ela é descartada em algo como "\server\BuildDrop\MyBuild\MyBuild_20120309.1".

Gostaria de poder definir uma compilação que cairá em um local exato que nunca muda.Posso alterar a definição de compilação para sempre cair em um local como este?

1)\servidor\BuildDrop\MyBuild\
ou
2) \servidor\BuildDrop\MyBuild\Latest\

Foi útil?

Solução

Se as pessoas quiserem saber onde encontrar as compilações mais recentes, acho que é melhor educá-las sobre onde fica o local de entrega e quais são os nomes das compilações, para que possam determinar facilmente qual delas é a mais recente.Se quiser copiar a saída do local de descarte para o mesmo diretório, você terá que criar um modelo personalizado (modificando o modelo padrão) que execute seu build.Durante minha compilação, depois que os arquivos são copiados para o local de descarte, executo um script para copiar os arquivos do local de armazenamento para um diretório "Mais recente" comum.No entanto, você pode facilmente encontrar problemas onde as pessoas acessam arquivos no diretório "Latest" enquanto você está executando uma compilação e, portanto, sua compilação falha porque não pode sobrescrever esses arquivos.

Se quiser determinar o local de descarte da última compilação bem-sucedida, você também pode fazer isso de forma programática.Abaixo está um trecho de uma atividade personalizada que escrevi para fazer exatamente isso:

        string tfsUri = "http://pathToTfsServer:8080/tfs";
        string projectName = "MyTfsProject";
        string buildDefinition = "MyTfsBuildDefinitionName";

        // connect to the Project and query the builds of the BuildDefinition
        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsUri), new UICredentialsProvider());
        tfs.EnsureAuthenticated();
        var buildServer = tfs.GetService<IBuildServer>();
        var buildDetails = buildServer.QueryBuilds(projectName, buildDefinition);

        // sort builds based on start time
        Array.Sort(buildDetails, delegate(IBuildDetail build1, IBuildDetail build2)
        {
            return build1.StartTime.CompareTo(build2.StartTime);
        });

        // return only the last successful build that currently exists
        for (int i = buildDetails.Length - 1; i >= 0; i--)
        {
            if (buildDetails[i].Status == BuildStatus.Succeeded && buildDetails[i].IsDeleted == false)
                return buildDetails[i];
        }

Se você deseja personalizar o Team Build 2010, sugiro a leitura Tutoriais de Ewald Hoffman sobre o assunto.

Outras dicas

Quando uma compilação é acionada, uma pasta será criada no local de armazenamento especificado, como

  • MeuBuild_20120309.1
  • MeuBuild_20120309.2
  • MeuBuild_20120310.1

A convenção de nomenclatura de pastas é "Build Definition"_"yyyymmdd"."build number"número de compilação é o número de compilações fornecidas em um dia.Portanto, ao acionar uma compilação, você pode ir até o local de lançamento da compilação e simplesmente acessar a pasta mais recente (com base na convenção de nomenclatura) e obter a configuração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top