Igor Abade (T-Shooter)

Microsoft MVP – Visual Studio ALM


2 Comentários

Boas práticas para Contas de Serviço do Team Foundation Server 2012

O Team Foundation Server, como  qualquer outro produto de servidor, tem suas particularidades de instalação e também um conjunto de boas práticas que facilitam tanto a instalação quanto a posterior manutenção do ambiente.

Dentre as diversas boas práticas, uma das mais úteis refere-se à configuração das contas de usuário e serviço para o TFS. Use as contas listadas abaixo quando você for instalar seu TFS.

Contas de usuários interativos

As contas interativas são apenas com que você faz logon no Windows. Atualmente o TFS precisa apenas de uma conta interativa: a TFSSETUP.

Conta

Finalidade

TFSSETUP

Conta usada para o processo de configuração do TFS

Contas de serviço

As contas de serviço são usadas para cada um dos componentes de servidor do TFS que rodam como um processo independente. Entram nessa categoria os serviços Windows e os App Pools do IIS.

Conta

Finalidade

TFSSERVICE

Conta de serviço do TFS

TFSREPORTS

Conta do Reporting Services e do TFS Project Portal no SharePoint

TFSBUILD

Conta do servidor de build

SPSSERVICE

Conta de serviço da Farm (Central Admin etc.) do SharePoint

SPSSEARCH

Conta do serviço de busca do SharePoint

TFSLAB

Conta de serviço para o recurso de Lab Management

TFSTEST

Conta de serviço do controlador de testes

Dicas

  1. Os nomes de contas listados acima são apenas uma sugestão de nome. Você pode usar o nome que bem quiser; entretanto, se puder usar os nomes acima fica mais fácil de se achar na documentação depois;
  2. As contas podem ser tanto locais (criadas no próprio servidor do TFS) quanto de domínio. Porém, você só pode usar contas locais em instalações do tipo single server. Instalações dual-server ou em cluster exigem a utilização de contas de domínio;
  3. Depois que você terminar a instalação do TFS, adicione os administradores do TFS e desabilite a conta TFSSETUP no Windows (conta local) ou no Active Directory (conta de domínio). Resista à tentação de usar a conta TFSSETUP no dia-a-dia, pois ela tem privilégios demais e pode expor seu ambiente a um risco desnecessário. Quando precisar fazer alguma manutenção no ambiente – por exemplo, instalar um service pack no TFS – reabilite a conta, faça o trabalho necessário de depois a desabilite de novo.

Para saber mais

Para mais detalhes, consulte a documentação do TFS aqui: http://msdn.microsoft.com/en-us/library/ms253149.aspx

 

Um abraço,
  Igor


Deixe um comentário

Private Builds e Gated Check-ins

Caixa de diálog de Gated Check-inSe você leu meu último post sobre Private Builds, deve ter notado uma semelhança com a funcionalidade de Gated Check-in.

Para aqueles que não sabem o que é um Gated Check-in, vai aí um resumo de um post que fiz sobre o assunto:

O problema da solução apresentada acima [NA: Uso de Integração Contínua], baseada apenas no servidor de build, é que o check-in precisa ser feito antes de ser validado. Ou seja, em caso de problemas eu necessariamente terei que desfazer manualmente as alterações que quebraram o build. O ideal seria que eu pudesse disparar o buid antes do check-in, só efetivando a alteração no controle de versão se tudo corresse bem. É justamente disso que trata o conceito de gated check-in: As operações de check-in são interceptadas (geralmente usando shelvesets) e redirecionadas para um servidor de build especial. Esse servidor combina o código-fonte que já existe no TFS com as alterações que acabaram de vir do desenvolvedor. Se tudo correr bem, só então é que o check-in será consumado.

Reparou na parte que diz que o TFS “combina o código-fonte que já existe no TFS com as alterações que acabaram de vir do desenvolvedor”? É exatamente isso que faz o Private Build, certo?

Logo, podemos dizer que Private Build e Gated Check-in são a mesma coisa? Bem, quase. Smile

Private Build e Gated Check-in são baseados na mesma infraestrutura que permite a execução de builds baseados em shelvesets. A diferença é o gatilho: enquanto o Private Build é opcional e disparado sob demanda pelo desenvolvedor, o Gated Check-in é obrigatório e disparado no check-in.

Qual é o melhor? Private Build ou Gated Check-in?

Não sei se dá para ser tão simplista assim. Neste caso não há melhor ou pior.

Temos clientes que preferem a segurança do Gated Check-in. Ele reduz drasticamente o risco de quebras no build. Entretanto, ele torna o processo de check-in mais burocrático e lento. Times mais maduros acabam sendo “atrapalhados” pelo Gated Check-in.

Minha opinião pessoal? Use Gated Check-in na branch de desenvolvimento APENAS SE O TIME AINDA NÃO FOR MADURO. Em todos os outros casos, confie no bom-senso do time. Eles usarão o Private Build sempre que necessário.

 

Um abraço,
  Igor


Deixe um comentário

Use Private Builds – e pare de passar vergonha!

TFS Build Wall - painel com status de builds mostrando builds quebrados

Integração contínua é uma ferramenta importante para garantia de qualidade do código produzido pelo time, certo?

Seu time usa TFS? E usa o Team Build para fazer integração contínua? Legal!

Só tem uma coisa que não é muito legal: ser a pessoa que quebrou o build. Principalmente se, em sua empresa, o status dos builds fica na parede, à vista de todos. Esta foto à direita é do ambiente de desenvolvimento de um de nossos clientes. Temos times mistos (desenvolvedores da Lambda3 e do cliente) trabalhando em projetos hospedados no TFS do cliente. E, acredite: assim que um build é quebrado, TODO MUNDO saca o smartphone do bolso e tira fotos da TV. Provavelmente a “vítima” que quebrou o build vai pagar o almoço e ainda vai ser “trolada” por um tempinho! Smile

Evitar a quebra  do build é fácil, não? Basta compilar o código no seu computador e rodar todos os testes. Só então, se estiver tudo OK, você pode fazer o check-in com a certeza de que o build não será quebrado. Pena que nem sempre as coisas são tão simples assim…

Tem alguns cenários em que nem sempre é viável (ou possível) garantir a integridade do código antes do checkin. Por exemplo: se você está mexendo numa classe de uma biblioteca, que é consumida em várias partes de um grande sistema, você provavelmente precisaria executar novamente todos os seus testes. Não apenas os de unidade (esses são obrigatórios; você deveria executar sempre!) mas também os de integração. E é aí que as coisas começam a ficar mais complicadas.

Testes de integração são, por natureza, como elefantes: grandes, lentos e pesados. Ou seja, muitas vezes não dá para rodar testes de integração da máquina do desenvolvedor – principalmente se há dependência de complexos ambientes de testes que dificilmente poderiam ser reconstruídos no ambiente do desenvolvedor.

Caímos então no dilema: há testes que são inviáveis de se reproduzir no computador do desenvolvedor, por serem muito lentos ou por dependerem de um ambiente caro de se recriar para cada uma das pessoas no time. Nesses casos, o uso do servidor de automação de build é a melhor saída. E nesses casos eu corro o risco de fazer commit de código defeituoso, que quebraria o build e, eventualmente, atrapalharia o trabalho de outros membros do time. Como resolver?

Entra aí o conceito de Private Build: já pensou que legal seria poder rodar um build só seu, usando toda a infraestrutura já montada para a Integração Contínua (CI)? Com esse build você poderia validar o código usando o servidor de build mas, diferente do que acontece em builds de CI, você não precisaria fazer o commit/check-in para disparar o build. Você forneceria seu código ao TFS sem fazer check-in e, portanto, sem atrapalhar os outros! Dessa forma você poderia testar várias vezes seu código, até que estivesse OK. Só então você faria o check-in e dispararia o processo normal de CI.

Vamos ver como fazer isso?

Partiremos da premissa que você tem um ambiente de integração contínua já montado, capaz de rodar todos os seus testes (representado na figura abaixo pela definição de build “CI”).

Exemplo de definições de build. Usaremos a build CI

Agora, faça suas alterações na sua aplicação. Eu espero Smile.

Pronto? Então vamos testar essas alterações!

Clique com o botão direito na definição de build CI e selecione “Queue new build…”:

Menu "Queue new build..."

O “pulo do gato” vem a seguir: em “What do you want to build?”, selecione “Latest sources with shelveset” e, depois, em “Create”:

Caixa de diálogo Queue new build com a opção "What do you want to build?"

Vamos, agora, criar um shelveset com nossas alterações. Esse shelveset será usado para a execução do build. Vamos chamar nosso shelveset de PB (de Private Build; poderia ter chamado de qualquer outra coisa). Aí é só clicar em Queue!

Caixa de diálogo de criação de shelveset

Agora vamos ver o que aconteceu: quando você agenda um build privado, o TFS baixa a última versão do código-fonte no controle de versão para o agente de build e depois aplica o shelveset sobre a última versão do código. É como se você tivesse feito check-in do seu código! Entretanto, o TFS distingue builds privados daqueles que são agendados pelas vias comuns. Repare na mensagem indicando que seu shelveset está sendo validado e que, por padrão, o resultado do seu build não é copiado para a drop location:

Janela de status do build indicando a execução do build privado

Em caso de erro você pode corrigir seu código e reagendar um novo build privado – sem atrapalhar ninguém no time!

Viu como é simples usar builds privados? Agora você só quebra build se quiser!

 

Um abraço,
  Igor


Deixe um comentário

Mudanças na ferramenta de ALM para bancos de dados no Visual Studio “11”

A Microsoft introduziu, em 2005, uma ferramenta com uma proposta revolucionária: integrar o desenvolvimento de bancos de dados ao ciclo de vida da aplicação.

Nascia então o “Visual Studio 2005 Team Edition for Database Professionals” (*), que oferecia recursos como controle de versão para a estrutura (“schema”) de bancos de dados, testes de unidade para código de bancos de dados (ex. stored procedures e queries), geração de dados e mais.

Quando a Microsoft lançou o Visual Studio Team System 2008, renomeou o produto para “Visual Studio Team System 2008 Database Edition”. Até aqui, o DbPro (como era conhecido o produto) era um vendido à parte – ou seja, para usar esses recursos de DDLC (Database Development Lifecycle) era necessário adquirir o VSTS Database Edition ou o venerável VSTS Team Suite (que incorporava todos os recursos disponíveis na plataforma Team System).

O problema é que, diferente do que o time de produto tinha imaginado, o grande usuário dessa ferramenta não era o DBA, mas sim o próprio desenvolvedor. Afinal, é ele quem precisa modificar o banco de dados sempre que necessário, como parte do processo de construção da aplicação. Com isso os desenvolvedores acabavam tendo que comprar duas ferramentas (VSTS 2008 Development Edition e VSTS 2008 Database Edition) para suas atividades do dia-a-dia. Desnecessário dizer que ninguém estava feliz com isso…

imageEm 2010 veio a primeira grande mudança de posicionamento do produto. A Microsoft, a partir do feedback recebido dos clientes, decidiu juntar as duas ferramentas – VSTS Development Edition e Database Edition – num único produto: o novo Visual Studio 2010 Premium. Além da integração, veio também a possibilidade de gerenciar bancos de dados Oracle em complemento ao suporte original a SQL Server.

Ficou confuso com essa viagem no tempo? É, não é para menos… A ferramenta originalmente conhecida como DbPro (codinome “DataDude”) passou por muitas mudanças desde que foi lançada. A única constante era o fato de que, para usar a ferramenta, era necessário comprar um produto “premium” (Team System até 2008, VS Premium/Ultimate no 2010). E como se não bastassem tantas mudanças, vem aí mais uma mudança radical:

image

SQL Server Data Tools (anteriormente conhecido como SQL Server Developer Tools, codinome “Juneau”) representa a nova versão da ferramenta de banco de dados anteriormente conhecida como DbPro, DataDude, VSTE for Database Professionals, VSTS Database Edition…

Reparou numa coisa estranha? Sim, agora o DbPro não é mais parte do Visual Studio. Os recursos de bancos de dados foram movidos para o SQL Server.

“Putz, agora ferrou tudo!!!” foi minha reação ao ficar sabendo da mudança. Mas antes de entrar em pânico, entenda o que muda:

  • Pontos positivos:
    • O DbPro/SSDT agora é gratuito. Sim, você leu direito. Gratuito. Você pode baixar o SSDT do site da Microsoft e usá-lo com qualquer SQL Server ao qual você tenha acesso;
    • Pode ser usado independentemente ou integrado ao Visual Studio (2010 ou Dev11). Mesmo se o seu Visual Studio for o Professional (mas não Express).
  • Pontos negativos:
    • Como é um novo produto, ainda não está claro quais são as implicações da migração da ferramenta do time de Visual Studio para o time do SQL Server. Agora é aguardar o lançamento do SQL Server 2012 para termos certeza do que mudou (se é que mudou).

Para mais informações sobre o SSDT, leia o post do Gert Drapers (o Data Dude original, pai do DbPro/”DataDude”):

http://blogs.msdn.com/b/gertd/archive/2011/10/17/sql-server-developers-tools-code-named-juneau-becomes-sql-server-data-tools-ssdt.aspx

Um abraço,
    Igor

(*) Estou para ver empresa que goste de nome de produto comprido como a Microsoft!


Deixe um comentário

SVNBridge: Integre seu TFS 2010 com clientes Subversion

image

Um dos grandes desafios de muitas empresas que pretendem migrar do Subversion para o TFS é: como integrar meu time – e suas ferramentas – ao novo servidor?

Se você usa ferramentas que oferecem suporte nativo ao TFS – como o Visual Studio, o Eclipse (com o Team Explorer Everywhere) ou até mesmo o IntelliJ IDEA – fica mais fácil. O problema é quando o time está usando ferramentas que só sabem falar com o Subversion, tal como o Adobe Dreamweaver ou o Apple Xcode.

Para esses casos, uma alternativa pode ser o SVNBridge – um tradutor de protocolos (ou “bridge”) que emula o protocolo do Subversion, “enganando” os clientes como o Dreamweaver ou o Xcode e fazendo-os acreditar que estão conectados a um repositório Subversion, quando na verdade estão falando com o TFS.

O SVNBridge foi criado pelo time do CodePlex para que clientes SVN (em especial o TortoiseSVN) pudessem ser usados para conexão com os TFS oferecidos pelo serviço CodePlex. O time percebeu que muitas empresas poderiam se beneficiar disso e portanto decidiram compartilhar o código.

Se você já usa (ou pretende usar) o TFS e tem pessoas no seu time que dependem de ferramentas que não “falam” TFS mas “falam” Subversion, experimente o SVNBrigde!

Um abraço,
    Igor


1 Comentário

Como obrigar os usuários a instalar o SP1 do VS 2010 para conectar ao TFS

Acesso negadoO Service Pack 1 do Visual Studio 2010, bem como o do Team Foundation Server 2010, trouxeram enormes melhorias de funcionalidade e estabilidade. Por isso, é natural esperar que seus todos os seus desenvolvedores tenham atualizado seu computador com o SP1, certo?

A questão é – tem algum jeito de evitar que os desenvolvedores conectem-se ao TFS se eles não tiverem instalado o Service Pack 1?

Graças a essa dica do Neno Loje, traduzida abaixo, agora dá para configurar o TFS 2010 de forma a rejeitar conexões de computadores que não tenham o VS 2010 SP1 instalado.

Solução

É fácil, você só precisa adicionar dois valores ao Registry do TFS (e reiniciar o TFS após a alteração):

  • Chave: /Configuration/Application/DisabledUserAgents/TFS10SP1
    Valor: “Team Foundation (*.exe, 10.0.<40219.1)”
  • Chave: /Configuration/Application/DisabledUserAgents/TFS10SP1/Message
    Valor: “Lamento, mas você precisa instalar o Visual Studio 2010 Service Pack 1.”
Como fazer

Use a ferramenta tfsreg.exe e execute os dois comandos abaixo:


tfsreg.exe /server:http://<meu-tfs>:8080/tfs /path:/Configuration/Application/DisabledUserAgents/TFS10SP1 /value:"Team Foundation (*.exe, 10.0.<40219.1)"

tfsreg.exe /server:http://<meu-tfs>:8080/tfs /path:/Configuration/Application/DisabledUserAgents/TFS10SP1/Message /value:"Lamento, mas você precisa instalar o Visual Studio 2010 Service Pack 1."

Importante: Ajuste o URL em azul, acima, para o endereço correto do seu TFS.

Dessa forma, desenvolvedores com computadores desatualizados receberão a mensagem abaixo ao tentar conectar ao TFS:

image

 

Referência: http://msmvps.com/blogs/vstsblog/archive/2011/09/07/restrict-tfs-to-only-allow-connections-from-clients-with-vs-sp1.aspx


1 Comentário

Economize espaço em disco ao usar Coded UI Test, Team Build e Vídeo

Gráfico de uso de espaço em disco (exemplo)

Você sabia que os testes criados com o Microsoft Test Manager (parte da família Visual Studio 2010) podem ser configurados para capturar, automaticamente, vídeos da tela do computador durante a execução dos testes?

Ah, já sabia? Bom, confesso que realmente não esperava que isso fosse uma grande novidade… Smile

O que talvez seja novidade para alguns é que mesmo testes do tipo Coded UI (testes de automação de interface de usuário, recurso exclusivo do Visual Studio 2010 Premium/Ultimate) que são executados pelo Team Build, durante o processo de build automatizado, podem gerar vídeos.

A vantagem disso é que em caso de problemas o desenvolvedor consegue assistir ao vídeo da execução do teste e pode identificar mais facilmente eventuais problemas. A desvantagem é que o consumo de espaço em disco do banco de dados do TFS pode crescer muito rápido – afinal, testes automatizados são criados para serem executados repetidas vezes!

A dica, portanto, é manter no TFS apenas os vídeos dos testes que falharem! Afinal, se o teste foi bem-sucedido é pouco provável que você precise do vídeo…

Para isso:

  1. Abra a solução que contém seu projeto de testes;
  2. Localize o arquivo .testsettings que está associado ao seu processo de build (no meu exemplo, é o arquivo BVT.testsettings):
    Localização do arquivo BVT.testsettings
  3. Em Data and Diagnostics, selecione a opção Video Recorder e clique em Configure:
    Botão "Configure" do gravador de vídeo
  4. Agora, o “pulo do gato”: Desmarque a opção Save video recording if test case passes:
    Opção "Save video recording if test case passes"

 

Um abraço,
   Igor


Deixe um comentário

Team Explorer Everywhere (TFS no Eclipse) agora em português!

Pessoal, recentemente fui convidado pelo Martin Woodward para participar do processo de revisão e validação de um novo trabalho do time dele: a criação de um pacote de tradução (conhecido como “language pack”) para o Team Explorer Everywhere (antigo “Teamprise”).

Para quem não conhece, o Team Explorer Everywhere (ou TEE) é um plugin da Microsoft que oferece suporte nativo ao Team Foundation Server a partir do Eclipse. Com esse plugin, desenvolvedores que usem um IDE baseado em Eclipse (como o pessoal que desenvolve em Java ou PHP) têm acesso a itens de trabalho, a integração com o controle de versão e até mesmo a builds automatizados a partir do seu ambiente de desenvolvimento.

A novidade, agora, é que ao instalar o novo pacote de tradução e configurar o Eclipse para o idioma português, é possível utilizar toda a interface (como as Team Explorer e Pending Changes) totalmente em português! Veja o resultado:

Imagem do Eclipse após a traduçao

Como instalar

Antes de instalar o pacote de idiomas, você precisa:

  1. Instalar o Team Explorer Everywhere 2010 Service Pack 1 (faça o download a partir de http://www.microsoft.com/download/en/details.aspx?id=25125);
  2. Configurar o Eclipse para suportar o idioma português-brasileiro. Para mais informações sobre como configurar o Eclipse, consulte a página http://www.eclipse.org/babel/.

A seguir, com o Eclipse devidamente configurado para funcionar em português e o TEE já instalado, siga os passos abaixo:

  1. Abra o Eclipse.
  2. No menu Help, clique em Install New Software. A caixa de diálogo Installé exibida.
  3. Clique em Add. A caixa de diálogo Add Siteé exibida.
  4. Em Name, digite Arquivo morto local do Pacote de Idiomas do Team Explorer Everywhere.
  5. Clique em Archive.
  6. Especifique a localização do arquivo morto e clique em Open. Selecione o arquivo morto baixado, TFSEclipsePlugin-NL1-UpdateSiteArchive-10.1.0-2.zip.
  7. Clique em OK.
  8. Na lista de recursos da caixa de diálogo Install, marque a caixa de seleção correspondente ao Team Explorer Everywhere.
  9. Clique em Nextduas vezes.
  10. Aceite os Termos de Licença para Software Microsoft e clique em Finish.
  11. Reinicie o Eclipse quando solicitado.

FAQ

  1. O Eclipse é gratuito, portanto eu suponho que o Team Explorer Everywhere também seja – certo?
    Infelizmente, errado. O Team Explorer Everywhere é um produto que deve ser adquirido da Microsoft. Usuários que tenham licenças do Visual Studio Ultimate com MSDN, por outro lado, têm direito de utilizar o TEE sem custo adicional.

Um abraço,
Igor


2 Comentários

“Check in”, “Check-in” ou “Checkin”?

Exemplo de uso da expressão Check InNão sei vocês, mas eu sempre fiquei na dúvida quando tinha que escrever um post ou artigo sobre controle de versão:

Afinal, qual o jeito certo de escrever – “Check in”, “Check-in” ou “Checkin”?

Hoje, numa thread na lista de discussão que nós MVPs usamos para falar com o time de produto de ALM (Visual Studio e TFS), finalmente aprendi o jeito “certo” – bom, pelo menos um jeito consistente de escrever…  Smile

Chris Clements, Documentation Manager da Microsoft, explicou qual o padrão usado internamente para as documentações do produto:

Utilização Forma Correta Exemplo
Verbo Check in
(separado, sem hífen)
Check In Pending Changes
Adjetivo Check-in
(com hífen)
Check-in Operation;
Gated Check-in Build
Substantivo Check-in
(com hífen)
At the time of your next check-in

Agora pelo menos já dá para ter algum padrão para seguir sempre que precisarmos escrever sobre operações de check-in (com hífen! Smile), certo?

 

Um abraço,
    Igor


Deixe um comentário

Traga seu banco de dados para o ALM (Lightning Talk – Trilha ALM) do TDC 2011

Pessoal, segue abaixo a apresentação que utilizei na minha palestra sobre DDLC (Database Development Lifecycle) e integração do desenvolvimento de bancos de dados ao ALM com Visual Studio Premium e Team Foundation Server 2010.

Bom proveito!

 

Um abraço,
Igor Abade (@igorabade)

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.