<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feed.lambda3.com.br/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blogs da Lambda3 » Claudio Leite</title>
	
	<link>http://blog.lambda3.com.br</link>
	<description />
	<lastBuildDate>Fri, 17 May 2013 17:54:13 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feed.lambda3.com.br/LLL/claudioleite" /><feedburner:info uri="lll/claudioleite" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Mudando a plataforma que o MSBuild irá rodar durante o processo de Build</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/OuDeCv8_FnM/</link>
		<comments>http://blog.lambda3.com.br/2013/05/mudando-a-plataforma-que-o-msbuild-ir-rodar-durante-o-processo-de-build/#comments</comments>
		<pubDate>Thu, 09 May 2013 20:06:44 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[Team Build]]></category>

		<guid isPermaLink="false">https://blog.lambda3.com.br/?p=5401</guid>
		<description><![CDATA[Pessoal, Essa eu passei durante uma consultoria no cliente. A situação era a seguinte: O Team Build e os agentes estão instalados em máquinas 64bits. Tinha um projeto que precisava ser compilado com algumas informações e dll´s de x86. Quando &#8230; <a href="http://blog.lambda3.com.br/2013/05/mudando-a-plataforma-que-o-msbuild-ir-rodar-durante-o-processo-de-build/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Pessoal,</p>
<p>Essa eu passei durante uma consultoria no cliente. A situação era a seguinte: O Team Build e os agentes estão instalados em máquinas 64bits. Tinha um projeto que precisava ser compilado com algumas informações e dll´s de x86.</p>
<p>Quando mandava rodar normalmente, ele apenas dava um erro falando que não conseguia carregar umas dll´s.</p>
<p>Após fazer um estudo percebi que o msbuild procurava as informações no diretório x64 dos projetos e as informações dentro do arquivo de csproj (que é o arquivo que contém o script de msbuild) mandava procurar dentro do x86. Se eu mudasse essa informação quebrava a compilação na máquina dos Devs e sem ela não funciona no servidor de build. E aí, como resolver ?</p>
<p>Dentro da Build Definition tem um parametro que nós podemos usar justamente para isso.</p>
<p>Como setar o parâmetro:</p>
<p>Vá na sua Build Definition –&gt; <strong>Aba Process –&gt; Advanced</strong>. Lá tem uma opção chamada: <strong>MSBuild Plataform </strong>e pronto, todos os seus problemas estão resolvidos! <img src='http://blog.lambda3.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/04/image2.png" rel="lightbox[5401]"><img style="display: inline; border: 0px;" title="image" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2013/04/image_thumb.png" width="550" height="179" border="0" /></a></p>
<p>Por padrão ele vem com a opção Auto, isso significa que ele vai identificar qual é a plataforma do sistema operacional que ele vai rodar e chama o MSbuild.exe daquela plataforma.</p>
<p>Para resolver o problema aqui, simplesmente coloquei a propriedade com o valor <strong>X86</strong> e tudo funcionou perfeitamente!</p>
<p>Até a próxima</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/OuDeCv8_FnM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/05/mudando-a-plataforma-que-o-msbuild-ir-rodar-durante-o-processo-de-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/05/mudando-a-plataforma-que-o-msbuild-ir-rodar-durante-o-processo-de-build/</feedburner:origLink></item>
		<item>
		<title>Acessando o TFS em ambientes Linux</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/oYztdJMfAdo/</link>
		<comments>http://blog.lambda3.com.br/2013/05/acessando-o-tfs-em-ambientes-linux/#comments</comments>
		<pubDate>Mon, 06 May 2013 21:00:13 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>

		<guid isPermaLink="false">https://blog.lambda3.com.br/?p=5377</guid>
		<description><![CDATA[Fala Pessoal, No último mês trabalhei em uma PoC e nela temos que validar alguns cenários especificos. Um desses cenários era trabalhar com códigos-fontes que são desenvolvidos apenas em máquinas que rodam Linux. Até aí nada demais vocês podem falar, &#8230; <a href="http://blog.lambda3.com.br/2013/05/acessando-o-tfs-em-ambientes-linux/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala Pessoal,</p>
<p>No último mês trabalhei em uma PoC e nela temos que validar alguns cenários especificos. Um desses cenários era trabalhar com códigos-fontes que são desenvolvidos apenas em máquinas que rodam Linux.</p>
<p>Até aí nada demais vocês podem falar, afinal posso usar o Team Explorer Everywhere (TEE) que vai resolver meu problema, ou posso usar o TFS e Git como demonstrado pelo Giovanni Bassi nesse post (<a href="http://blog.lambda3.com.br/2013/01/tfs-agora-suporta-git/">http://blog.lambda3.com.br/2013/01/tfs-agora-suporta-git/</a>) .</p>
<p>Mas imagine que você está trabalhando com um ambiente de TFS local e não o TF Service (que é o único que suporta Git) e ainda tem aquele usuário de linux que gosta de usar apenas linha de comando, ou por algum outro motivo, não possa ou não queira instalar o Eclipse para rodar o TEE.</p>
<p>Para esse cenário, podemos usar o <a href="http://www.microsoft.com/en-us/download/details.aspx?id=30661">Cross-platform Command-Line Client for Team Foundation server</a>.</p>
<p>Nesse link tem os passos necessários para você baixar e configurar o command line. Mas e aí, como eu uso para poder fazer o meu check-in e check-out ?</p>
<p>Primeiro temos que aceitar o End User License Agreement (EULA), para isso, na pasta onde você descompactou o zip digite:</p>
<p><strong>tf eula</strong></p>
<p>Vá até o final do arquivos e aceite os termos.</p>
<p>Depois de aceitar o EULA, vamos agora facilitar as coisas um pouco. Os comandos que vamos usar sempre pedem que passemos como parametros a collection vou realizar a operação, usuário e senha. Para evitar de ficar sempre digitando as informações, sugiro criarmos um alias no bash, assim além de em qualquer lugar você apenas digitar o <strong>tf</strong>  e o seu S.O entender podemos também já colocar essas informações que sempre precisariamos usar. Para isso, digite o seguinte na sua console:</p>
<p><strong>alias tf=’local_onde_voce_descompactou_o_script/tf –login:(seu_usuario)@dominio.(Senha) –collection:http://end_servidor:porta/tfs/nm_collection</strong></p>
<p>Com o nosso alias configurado vamos criar o nosso workspace, para isso, crie uma pasta na sua home, como por exemplo ProjetoNoTFS com o seguinte comando:</p>
<p><strong>mkdir ~/ProjetoNoTFS</strong></p>
<p>Agora vamos criar o nosso workspace no TFS, para isso digite:</p>
<p><strong>tf workspace –new –location:local –permission:Private</strong></p>
<p>Existem outros parametros, para ter uma lista completa, digite apenas <strong>./tf</strong></p>
<p>Depois de ter o workspace criado, vamos mapear a working folder, para isso, digite:</p>
<p><strong>tf workfold –map (pasta_no_servidor) (pasta_local) –workspace:(nome_do_workspace)</strong></p>
<p>Agora podemos baixar todos os arquivos que já estão no repositório. Entre na pasta que acabamos de mapear e digite :</p>
<p><strong>tf get </strong></p>
<p>Agora podemos editar as informações e fazer um checkin, no meu caso, vou adicionar um arquivo txt que criei no Linux. Para isso digite :</p>
<p><strong>tf add </strong> <strong>(nome_do_arquivo)</strong></p>
<p>Agora vamos fazer um checkin, para isso digite:</p>
<p><strong>tf checkin </strong> <strong>(nome_do_arquivo) –comment:“comentario que quiser”</strong></p>
<p>se quiser vincular um workitem no checkin, utilize o parametro <strong>–associate</strong> ou <strong>-resolve</strong></p>
<p>e para fazer o checkout :</p>
<p><strong>tf checkout </strong> <strong>(nome_do_arquivo)</strong></p>
<p>Espero que tenham gostado.</p>
<p>Até a próxima</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/oYztdJMfAdo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/05/acessando-o-tfs-em-ambientes-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/05/acessando-o-tfs-em-ambientes-linux/</feedburner:origLink></item>
		<item>
		<title>Sidekicks, uma ferramenta essencial para Administradores do Team Foundation Server</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/buUup_uKB3E/</link>
		<comments>http://blog.lambda3.com.br/2013/05/sidekicks_uma_ferramenta_essencial_para_administradores_do_team_foundation_server/#comments</comments>
		<pubDate>Fri, 03 May 2013 19:34:15 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=2918</guid>
		<description><![CDATA[Fala Pessoal, Imaginem o seguinte cenário, um desenvolvedor que trabalhava no seu projeto pediu demissão e um novo desenvolvedor foi contratado para trabalhar em seu lugar. Antes de liberar a máquina para o novo desenvolvedor, geralmente a máquina com as &#8230; <a href="http://blog.lambda3.com.br/2013/05/sidekicks_uma_ferramenta_essencial_para_administradores_do_team_foundation_server/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala Pessoal,</p>
<p>Imaginem o seguinte cenário, um desenvolvedor que trabalhava no seu projeto pediu demissão e um novo desenvolvedor foi contratado para trabalhar em seu lugar. Antes de liberar a máquina para o novo desenvolvedor, geralmente a máquina com as configurações originais é formatada e preparada para o novo desenvolvedor.</p>
<p>Perfeito, temos tudo pronto e o desenvolvedor novo já pode começar a trabalhar. Assim que ele abre o Visual Studio, esse novo desenvolvedor vai criar seu workspace para “baixar” seu projeto em uma pasta padrão. Ao fazer isso ele pode receber uma mensagem, informando que já existe um workspace vinculado no Visual Studio.</p>
<p>E agora? o desenvolvedor antigo já foi embora. A máquina que ele usava já foi formatada. Como podemos apagar essa informação do servidor e libere a máquina para outro usuário?</p>
<p>Outra situação, seu desenvolvedor saiu de férias e esqueceu de fazer o check-in de alguma coisa que ainda estava trabalhando e outra pessoa da sua equipe precisa mexer nesse(s) arquivo(s). Como podemos liberar esses arquivos?</p>
<p>Existem duas maneiras, uma é via linha de comando, porém nada amigável e a outra é usando uma excelente ferramenta que ajuda na administração do seu Team Foundation Server: <a href="http://www.attrice.info/downloads/index.htm#tfssidekicks2012">Team Foundation Sidekicks</a></p>
<p>Essa é uma das ferramentas que utilizo muito e sempre passo para o clientes para ajudar na administração do TFS.</p>
<p>Até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/buUup_uKB3E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/05/sidekicks_uma_ferramenta_essencial_para_administradores_do_team_foundation_server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/05/sidekicks_uma_ferramenta_essencial_para_administradores_do_team_foundation_server/</feedburner:origLink></item>
		<item>
		<title>Branch &amp; Merge no MVP Conference</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/I4eHM4Cg07U/</link>
		<comments>http://blog.lambda3.com.br/2013/03/branch-merge-no-mvp-conference/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 11:00:22 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Branch&Merge]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=5226</guid>
		<description><![CDATA[Fala Pessoal, Hoje dia 26.03 eu tive a oportunidade de palestrar no MVP Virtual Conference. Foi um grande prazer! Ser escolhido para falar junto com os MVP´s de ALM realmente foi uma honra, espero ter atendido a todas as expectativas &#8230; <a href="http://blog.lambda3.com.br/2013/03/branch-merge-no-mvp-conference/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala Pessoal,</p>
<p>Hoje dia 26.03 eu tive a oportunidade de palestrar no MVP Virtual Conference. Foi um grande prazer! Ser escolhido para falar junto com os MVP´s de ALM realmente foi uma honra, espero ter atendido a todas as expectativas e de todos!</p>
<p>Na palestra eu comentei sobre os  Alm Rangers, o Guide de Branch &amp; Merge e o plug-in que instalado no Visual Studio nos ajuda a criar a nossa estrutura inicial de branch e guide.</p>
<ul>
<li> <a href="http://vsarbranchingguide.codeplex.com/">Branch &amp; Merge Guide</a></li>
<li><a href="http://vsarguidance.codeplex.com/releases/view/96222">Plug-in do Visual Studio 2012</a></li>
</ul>
<p>Surgiram perguntas em como poderíamos trabalhar com o Xcode e o TFS, como trabalhar em sistemas não Windows e o TFS para gerenciar minhas branches. Vou preparar essa semana alguns post sobre esses cenários.</p>
<p>Eu já tinha feito uma palestra sobre Branch e Merge no ALM Summit 2012 e acabei escrevendo um post completando algumas informações, quem quiser, pode acessar o post no link: <a href="http://blog.lambda3.com.br/2012/05/minha-palestra-no-alm-summit-brasil-2012/">http://blog.lambda3.com.br/2012/05/minha-palestra-no-alm-summit-brasil-2012/</a></p>
<p>Querem conhecer mais sobre ALM, não percam o ALM Summit Brasil 2013!!</p>
<p>Já imaginou você ir para um evento, ver as melhores práticas de ALM e ainda poder ganhar um XBOX ??</p>
<p>Para maiores informações : <a href="http://www.almsummitbrasil.com.br/">http://www.almsummitbrasil.com.br/</a></p>
<p>Espero que tenham gostado da palestra e em caso de dúvidas, deixem seus comentários ou enviem por twitter ou e-mail.</p>
<p>Abs!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/I4eHM4Cg07U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/03/branch-merge-no-mvp-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/03/branch-merge-no-mvp-conference/</feedburner:origLink></item>
		<item>
		<title>Deploy Automático de Aplicação Web com Team Build e Publish Profile</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/6RF4sjaG8Fw/</link>
		<comments>http://blog.lambda3.com.br/2013/03/deploy-automtico-de-aplicao-web-com-team-build-e-publish-profile/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 12:00:32 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Deploy Automatizado]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[TFS2012]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=5007</guid>
		<description><![CDATA[Fala Pessoal, Nesse post vou falar um pouco de uma solução que implantei em um cliente. O Cenário lá é o seguinte: Eles possuem uma solution que contém mais de um projeto Web App e projetos WCF. Nós já tínhamos &#8230; <a href="http://blog.lambda3.com.br/2013/03/deploy-automtico-de-aplicao-web-com-team-build-e-publish-profile/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala Pessoal,</p>
<p>Nesse post vou falar um pouco de uma solução que implantei em um cliente. O Cenário lá é o seguinte: Eles possuem uma solution que contém mais de um projeto Web App e projetos WCF.</p>
<p>Nós já tínhamos implementado nesse projeto a Continuos Integration, criando uma Build Definition e setando a trigger de CI.</p>
<p>Depois de um tempo foi requisitado uma build noturna e que nessa build os projetos web e os serviços fossem publicados no ambiente de homologação, automatizando o processo de build e deploy.</p>
<p>Basicamente, iremos validar a compilação, rodar testes de unidade e integração (quando aplicável) e se tudo der certo, publicar no ambiente de homologação para que o usuário final pudesse validar as últimas alterações implementadas.</p>
<p>Para atender esse cenário, utilizamos uma funcionalidade do Visual Studio, o publish profile ( para infos sobre o que é e como criar, acesse o site: <a href="http://msdn.microsoft.com/en-us/library/dd465337.aspx">http://msdn.microsoft.com/en-us/library/dd465337.aspx</a> )</p>
<p>Depois que criarmos os publishes profiles conseguiríamos publicar os sites e serviços se clicássemos com o botão direito e der o publish. Essa ainda não é a solução desejada.</p>
<p>Como fazer para encaixar isso na minha Build Definition e quando ela rodar os meus sites serem publicados?</p>
<p>Na sua Build Definition, vá na aba de processos e procure a opção <b>MSBuild Arguments</b>, conforme a figura abaixo:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image002.jpg" rel="lightbox[5007]"><img style="display: inline; border: 0px;" title="clip_image001" alt="clip_image001" src="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image001.jpg" width="244" height="124" border="0" /></a></p>
<p>Agora que a coisa começa a ficar interessante, o MSBuild tem um parâmetro que podemos passar que permite que eu informe o nome do meu <b>Publish Profile</b> para fazer o deploy logo após a compilação e execução dos testes.</p>
<p>Para isso digite o seguinte no <b>MSbuild Arguments</b> :</p>
<p><b>PublishProfile=&#8221;QA&#8221;</b></p>
<p>O “<b>QA” </b>é o nome que você deu para o seu <b>publish profile</b>. Para que todos os seus sites e serviços sejam publicados, basta dar o mesmo nome para o <b>publish profile</b> e tudo será publicado logo após a compilação e execução de testes.</p>
<p>Com isso, de forma simples e rápida montamos uma solução que compila e faz o deploy das nossas aplicações para qualquer ambiente que desejarmos.</p>
<p>Até a próxima.</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/6RF4sjaG8Fw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/03/deploy-automtico-de-aplicao-web-com-team-build-e-publish-profile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/03/deploy-automtico-de-aplicao-web-com-team-build-e-publish-profile/</feedburner:origLink></item>
		<item>
		<title>Palestra no DotNetFloripa</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/fWeC2F8OSPY/</link>
		<comments>http://blog.lambda3.com.br/2013/03/palestra-no-dotnetfloripa/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 14:25:19 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[TFS2012]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=5095</guid>
		<description><![CDATA[Fala pessoal, Semana passada eu estava fazendo uma PoC em floripa e acabou que pude ir em uma reunião do grupo DotNetFloripa para falar um pouco sobre o TFS. A palestra era para ser de 45 mins, mas acabou que &#8230; <a href="http://blog.lambda3.com.br/2013/03/palestra-no-dotnetfloripa/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala pessoal,</p>
<p>Semana passada eu estava fazendo uma PoC em floripa e acabou que pude ir em uma reunião do grupo DotNetFloripa para falar um pouco sobre o TFS.</p>
<p>A palestra era para ser de 45 mins, mas acabou que ficamos conversando bem mais tempo. Também, falar de TFS é fácil, posso ficar horas conversando sem problemas.</p>
<p>Para comeplementar, quem quiser pode baixar a máquina virtual que eu utilizei para realizar as demos no seguinte link:</p>
<p><a title="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx" href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx">http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx</a></p>
<p>Foi um prazer conversar com vocês !! Espero que na próxima eu consiga ir com mais calma e assim podermos beber mais cervejas! <img src='http://blog.lambda3.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/fWeC2F8OSPY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/03/palestra-no-dotnetfloripa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/03/palestra-no-dotnetfloripa/</feedburner:origLink></item>
		<item>
		<title>Fazendo Merges Através de um Work Item</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/mFD0BQ0MxIY/</link>
		<comments>http://blog.lambda3.com.br/2013/02/fazendo-merges-atravs-de-um-work-item/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 18:00:58 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=4946</guid>
		<description><![CDATA[Fala Galera, Esse post já estava para sair tem um bom tempo, mas antes tarde do que nunca. Outro dia estava em um cliente e um pedido foi: “Claudio, eu já trabalho bem com os work items e sempre faço &#8230; <a href="http://blog.lambda3.com.br/2013/02/fazendo-merges-atravs-de-um-work-item/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala Galera,</p>
<p>Esse post já estava para sair tem um bom tempo, mas antes tarde do que nunca.</p>
<p>Outro dia estava em um cliente e um pedido foi: “Claudio, eu já trabalho bem com os work items e sempre faço check-in vinculando meu código a uma tarefa especifica. Tem como quando eu for fazer a promoção do meu código entre os branches eu usar o work item e não o changeset ??? “</p>
<p>A resposta padrão é não, mas o consultor falou mais alto e rápido. “bom depende&#8230; ” e fui detalhando o modelo que já havia feito em outros clientes para as versões antigas (TFS 2008).</p>
<p>O único modelo seria através de algum programa customizado onde você acessaria a API do TFS para pegar todas as tarefas em algum determinado estado, depois você teria que pegar todos os changesets vinculados aí sim você conseguiria saber os arquivos para fazer o download para um workspace local e depois fazer o merge arquivo por arquivo para o branch desejado.</p>
<p>Dois dias depois, conversando com o Vinícius Moura da Lambda, ele me mostrou um plug-in para o TFS que fazia isso também, mas na hora não guardei o nome. Chegando em casa fui pesquisar, como não lembrava o nome específico, procurei pelo o que ele faz e o resultado da pesquisa me trouxe um link da Microsoft mostrando isso. Todo o trabalho agora já faz parte do produto!!!Vamos ver na prática como funciona.</p>
<p>Minha estrutura de branch é simples, usando a estratégia de ambientes, conforme imagem:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image001.png" rel="lightbox[4946]"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="clip_image001" alt="clip_image001" src="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image001_thumb.png" width="178" height="244" border="0" /></a></p>
<p>Agora precisamos de umas tarefas com changesets vinculados</p>
<p>No meu caso, criei um projeto simples e fiz algumas alterações vinculando a uma tarefa, conforme figura abaixo:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image003.jpg" rel="lightbox[4946]"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="clip_image003" alt="clip_image003" src="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image003_thumb.jpg" width="550" height="204" border="0" /></a></p>
<p>Imagina agora que a minha tarefa está pronta e todos os arquivos necessários estão vinculados a ela através dos changesets 151 e 152 e preciso saber em qual branch ela está publicada.</p>
<p>Para isso, temos um ícone novo na parte do work item, que é o <b>Track Work Item</b></p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/02/teste.png" rel="lightbox[4946]"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="teste" alt="teste" src="http://blog.lambda3.com.br/wp-content/uploads//2013/02/teste_thumb.png" width="380" height="64" border="0" /></a></p>
<p>Ao Clicarmos nesse botão a seguinte imagem será apresentada :</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image007.jpg" rel="lightbox[4946]"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="clip_image007" alt="clip_image007" src="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image007_thumb.jpg" width="550" height="268" border="0" /></a></p>
<p>É importante selecionar todos os branches, assim será possível ver em quais dos branches a tarefa já foi publicada ou não, feito isso clique em <b>Visualize</b> e pronto, você verá exatamente onde o seu work item está publicado!</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image008.png" rel="lightbox[4946]"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="clip_image008" alt="clip_image008" src="http://blog.lambda3.com.br/wp-content/uploads//2013/02/clip_image008_thumb.png" width="244" height="226" border="0" /></a></p>
<p>Nesse meu modelo, eu consigo identificar que o Work Item 70 já está publicado em Dev e QA, mas ainda não foi para produção.</p>
<p>Espero que tenham gostado e até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/mFD0BQ0MxIY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2013/02/fazendo-merges-atravs-de-um-work-item/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2013/02/fazendo-merges-atravs-de-um-work-item/</feedburner:origLink></item>
		<item>
		<title>Realizando o Deploy do Website com Msdeploy e TeamBuild</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/QPcu5vbfCak/</link>
		<comments>http://blog.lambda3.com.br/2012/06/realizando-o-deploy/#comments</comments>
		<pubDate>Sun, 17 Jun 2012 21:52:32 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[TFS 2010]]></category>
		<category><![CDATA[WebDeploy]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=3087</guid>
		<description><![CDATA[Agora que já temos o pacote do nosso WebSite compilando, vamos realizar o deploy da solução em um servidor de homologação. Antes de adicionarmos a tarefa de Deploy, vamos tirar dois itens que estão fixos no nosso comando e que &#8230; <a href="http://blog.lambda3.com.br/2012/06/realizando-o-deploy/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Agora que já temos o pacote do nosso WebSite compilando, vamos realizar o deploy da solução em um servidor de homologação.</p>
<p>Antes de adicionarmos a tarefa de Deploy, vamos tirar dois itens que estão fixos no nosso comando e que o ideal é que pudessemos entrar com valores, assim quando formos utilizar essa build em outro team project, basta configurar os parametros na Build Definition e ele também iria funcionar.</p>
<p>Para criar esse parametros, basta usarmos as abas de configuração do DefaultTemplate.xaml (as abas ficam na parte de baixo do workflow) e mais algumas informações irão aparecer.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image13.png" rel="lightbox"><img style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb13.png" width="569" height="131"></a></p>
<p>&nbsp;</p>
<p>Vamos criar 3 parametros:</p>
<p>1 – Informando qual é o nome do website que queremos publicar. Esse é o nome que foi dado na criação do website no Visual Studio. Tem que ser exatamente igual.</p>
<p>2 – Informando qual é o diretório onde o pacote será escrito. Lembre que esse diretório o usuário do Team Build deverá ter acesso.</p>
<p>3 – Nome do pacote que iremos gerar.</p>
<p>Clique na última linha para criar esses parametros.</p>
<ul>
<li>NmWebSite
<li>Diretorio
<li>NmPacote </li>
</ul>
<p>Agora vamos fazer os parametros aparecerem na tela da Build Definition</p>
<p>Na lista de parametros, vamos procurar o argumento <strong>Metadata. </strong>Ele é um argumento especial que nos permite criar parametros na área de Process de uma build definition. Ao achar o parametro, clique no ícone para abria a janela de configuração.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image14.png" rel="lightbox"><img style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb14.png" width="569" height="25"></a></p>
<p>Na janela, iremos clicar no botão Add e preencher o formulario com os seguintes valores:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image15.png" rel="lightbox"><img style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;border-top-width: 0px;margin-right: auto" border="0" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb15.png" width="414" height="451"></a></p>
<ul>
<li>Parameter Name : É o nome do parametro que ficará acessível para utilizarmos nas atividade do workflow
<li>Display Name: É o nome que aparecerá na Build Definition
<li>Category: Nome da categoria que será criada para armazenar os parametros que criarmos </li>
</ul>
<table cellspacing="0" cellpadding="2" width="567" border="0">
<tbody>
<tr>
<td valign="top" width="145">
<p align="center"><strong>Parameter Name</strong></p>
</td>
<td valign="top" width="143">
<p align="center"><strong>Display Name</strong></p>
</td>
<td valign="top" width="142">
<p align="center"><strong>Category</strong></p>
</td>
<td valign="top" width="135"><strong>View This parameter When</strong></td>
</tr>
<tr>
<td valign="top" width="151">NmWebSite</td>
<td valign="top" width="146">Nome do Web Site</td>
<td valign="top" width="148">Conf de Publicacao</td>
<td valign="top" width="130">Always Show the Parameter</td>
</tr>
<tr>
<td valign="top" width="153">Diretorio</td>
<td valign="top" width="146">Diretorio do Pacote</td>
<td valign="top" width="152">Conf de Publicacao</td>
<td valign="top" width="129">Always Show the Parameter</td>
</tr>
<tr>
<td valign="top" width="154">NmPacote</td>
<td valign="top" width="145">Nome do Pacote</td>
<td valign="top" width="155">Conf de Publicacao</td>
<td valign="top" width="127">Always Show the Parameter</td>
</tr>
</tbody>
</table>
<p>Fazendo o check-in do template e abrindo novamente a nossa Build Definition, encontraremos os nossos parametros.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image16.png" rel="lightbox"><img style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb16.png" width="569" height="277"></a></p>
<p>&nbsp;</p>
<p>Agora vamos alterar a nossa tarefa de criação do pacote. Vamos alterar o valor do <strong>Arguments</strong> para :</p>
<p>Arguments: <strong>String.Format(&#8220;-verb:sync -source:contentPath=&#8221;"{0}\_PublishedWebSites\{1}\&#8221;" -dest:package=&#8221;"{2}\{3}&#8221;" &#8220;, BinariesDirectory, NmWebSite, Diretorio, NmPacote)</strong></p>
<p>&nbsp;</p>
<p>Vamos criar mais 2 parametros, esse conterão informações sobre onde iremos fazer o Deploy. Siga os procedimentos acima para criar mais esses dois parametros e coloque no mesmo grupo.</p>
<ul>
<li>ServidorDeploy
<li>IISPathServidorDeploy </li>
</ul>
<p>Com o nosso pacote criado e os novos parametros configurados, vamos adicionar a tarefa que vai realizar o deploy. </p>
<p>Para isso, arraste outra tarefa de Invoke Process para ficar logo abaixo da tarefa de criação do pacote e a configure com os seguintes parametros:</p>
<p>Arguments: <strong>String.Format(&#8220;-verb:sync -source:package=&#8221;"{0}\{1}&#8221;" -dest:contentPath=&#8221;"{2}&#8221;",computername=&#8221;"{3}/MsDeployAgentService&#8221;" -allowUntrusted &#8220;, Diretorio, NmPacote, IISPathServidorDeploy, ServidorDeploy )</strong></p>
<p>DisplayName:<strong> Deploy do Pacote</strong></p>
<p>FileName:<strong> String.Format(&#8221; &#8220;&#8221;c:\Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe&#8221;" &#8220;)</strong></p>
<p>Preencha os novos parametros na build definition e execute uma build para ver a solução funcionando.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image17.png" rel="lightbox"><img style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb17.png" width="569" height="89"></a></p>
<p>E pronto! com isso o seu Website será publicado no servidor indicado!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/QPcu5vbfCak" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/06/realizando-o-deploy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/06/realizando-o-deploy/</feedburner:origLink></item>
		<item>
		<title>Gerando o pacote para deploy do WebSite</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/vL0IY9cTVmY/</link>
		<comments>http://blog.lambda3.com.br/2012/06/gerando-o-pacote-para-deploy-do-website/#comments</comments>
		<pubDate>Wed, 13 Jun 2012 23:12:56 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[TFS2010]]></category>
		<category><![CDATA[WebDeploy]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=3078</guid>
		<description><![CDATA[Bom agora que já temos nosso WebSite compilando através do Team Build, vamos começar a configurar o Deploy desse Site em um servidor. Nessa parte, vou fazer um paralelo de como faríamos se fizemos o mesmo procedimento usando uma WebApplication. &#8230; <a href="http://blog.lambda3.com.br/2012/06/gerando-o-pacote-para-deploy-do-website/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Bom agora que já temos nosso WebSite compilando através do Team Build, vamos começar a configurar o Deploy desse Site em um servidor.</p>
<p>Nessa parte, vou fazer um paralelo de como faríamos se fizemos o mesmo procedimento usando uma WebApplication.</p>
<p>Inicialmente, vou falar um pouco da estrutura estrutura diferente dos dois tipos de projetos.</p>
<p>Quando criamos um WebSite project no Visual Studio, automaticamente um arquivo da solution é criado. Até aí nada demais, afinal o Visual Studio faz isso para qualquer novo projeto. O ponto diferente é que para o WebSite, nós não temos um arquivo de projeto! e aí começam alguns de nossos problemas…</p>
<p>O arquivo *.vbproj ou *.csproj nada mais é do que um script do MSBUILD, onde existem algumas configurações informando o que deve ser feito na hora da compilação do projeto e isso é essecial para o TeamBuild.</p>
<p>O Team Build encapsula algumas informações para nós, deixando toda essa configuração e customização mais fácil, mas em um dado momento de seu workflow ele simplesmente pega o arquivo do seu projeto, passa ele como parametro para o MSBUILD que irá realizar a compilação.</p>
<p>O MSBUILD por padrão aceita dois tipo de arquivo o *.vbproj ou *.csproj e o *.sln. A grande diferença é que nos *.*proj temos alguns scripts já implementados e quando usamos o *.sln o MSBUILD irá usar as configurações básicas instaladas, não tendo disponível nenhum target (tarefas que devem ser executadas para compilar o projeto) diferente que possuem alguns parametros a mais, como por exemplo o DeployOnBuild.</p>
<p>Qual é o impacto disso para o nosso deploy ? Simples, a primeira coisa que precisamos fazer para que possamos fazer o deploy automático é criar um pacote. Esse pacote que contém todos os arquivos necessários do nosso site e alguns arquivos de configuração que o MSDeploy irá utilizar.</p>
<p>Para criar o pacote, no caso de uma WebApplication, precisamos apenas passar um parametro para o MSBUILD e ele montará o pacote para nós. Vamos ver o exemplo:</p>
<p>Primeiro, teamos que criar uma  Build Definition para a Web Application (igual aos passos anteriores) e adicionar esse parametro, para isso abra sua build definition novamente e vá até a aba Process, conforme imagem abaixo:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image6.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb6.png" width="569" height="225" border="0" /></a></p>
<p>Na aba de processo, vamos no item 3 Advanced e vamos procurar o parametro <strong>MSBUILD Arguments </strong>e vamos adicionar o parametro <strong>/p:DeployOnBuild=true</strong> a mais que vai fazer que um pacote já seja criado durante a compilação de uma Web Application.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image7.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb7.png" width="569" height="131" border="0" /></a></p>
<p>Pronto, feito isso, enfilere uma build e depois vamos no diretório onde o Site foi compilado para ver o pacote criado.</p>
<p>Depois de gerar a build e a compilação ter sido concluída com sucesso, vamos no seguinte diretório: (Esse caminho é o padrão da configuração do Team Build e dos Agentes, então caso você tenha feito alguma configuração diferente o caminho pode variar).</p>
<p>Abra o Windows explorer e vá no seguinte caminho: C:\Builds\1 dali para frente, basta navegar nas pastas seguindo a seguinte lógica :</p>
<ul>
<li>Nome do team project</li>
<li>Nome da Build Definition</li>
</ul>
<p>Ao chegar na Build escolhida, vamos no diretório de Binários e no diretório onde contém os sites publicados. No meu exemplo esse caminho completo seria:</p>
<p><strong>C:\Builds\1\TeamBuild\WebApp\Binaries\_PublishedWebsites</strong></p>
<p>Olhando dentro desse diretório, veremos duas pastas. WebApp1 que contém os arquivos do Site e a pasta WebApp1_Package que contém o pacote que será utilizado para deploy.</p>
<p>(Não é escopo desses posts falar sobre a estrutura de arquivos do pacote, apenas como gerar de forma automática.)</p>
<p>Se fizermos a mesma coisa com a Build Definition do WebSite, ou seja, adicionar o parametro no MSBuild Arguments e formos no diretório, veremos que teremos quase todas as pastas iguais, menos a referente ao pacote.</p>
<p>Isso acontece porque o parametro de DeployOnBuild=true é um parametros que o script de MSBUILD (*.*proj) conhece e executa algumas atividades a mais para gerar o pacote. Como no projeto do WebSite não temos isso, teremos que montar “na mão” essa geração do pacote.</p>
<p>Para criar a geração do pacote, iremos utilizar o MSDeploy que é um componente utilizado para realizar deploy que foi desenvolvido pela microsoft e é instalado quando instalamos o Web Deploy. Para mais informações acesse : <a title="http://www.iis.net/download/webdeploy" href="http://www.iis.net/download/webdeploy">http://www.iis.net/download/webdeploy</a></p>
<h1>Criando o Pacote para um WebSite</h1>
<p>Já que não temos algumas facilidades, precisamos alterar o Workflow de build e adicionar uma tarefa que utilize o MSDeploy para realizar a geração do pacote. Para isso iremos utilizar como base da nossa customização o processo padrão o <strong>Default Template</strong>.</p>
<p>Para alterar o workflow de Build, vá no source control e entre nas seguintes pastas:</p>
<p>No nosso exepmlo:<strong> $/TeamBuild/BuildProcessTemplates </strong>e abra o arquivo <strong>DefaultTemplate.xaml</strong></p>
<p>A seguinte tela será apresentada:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image8.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb8.png" width="569" height="228" border="0" /></a></p>
<p>Esse é o workflow padrão utilizado pelo servidor de TeamBuild para compilar nosso projeto. Como não é escopo desse post, não entrarei em detalhes de como funciona esse procedimento e suas tarefas.</p>
<p>Para o nosso exemplo, vamos adicionar uma tarefa chamada da Invoke Process em um ponto especifico do workflow. A tarefa Invoke Process fica na toolbox no grupo Team Foundation Build Activities.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image9.png" rel="lightbox"><img style="float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; padding-right: 0px; margin-right: auto; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb9.png" width="317" height="594" border="0" /></a></p>
<p>A nossa tarefa deve ser adicionada logo após a compilação do nosso website, por isso, procure dentro do workflow a sequencia de atividades chamada: <strong>Try Compile, Test, and Associate Changesets and Work Items </strong>e bem no final dela, arraste e solte a tarefa InvokeProcess, conforme figura abaixo:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image10.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb10.png" width="569" height="98" border="0" /></a></p>
<p>&nbsp;</p>
<p>Ao adicionar a tarefa bem no final dessa sequencia de atividades, a tarefa aparecerá com um ícone vermelho de exclamação, isso ocorre porque precisamos passar alguns parametros para que o Invoke Process funcione.</p>
<p>Para isso, abra as propriedade da tarefa (aperte F4) e vamos preencher os campos:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image11.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb11.png" width="551" height="460" border="0" /></a></p>
<p>&nbsp;</p>
<p>Arguments: <strong>String.Format(&#8220;-verb:sync -source:contentPath=&#8221;"{0}\_PublishedWebSites\WebSite1\&#8221;" -dest:package=&#8221;"c:\site\teste.zip&#8221;" &#8220;, BinariesDirectory)</strong></p>
<p>DisplayName:<strong> Criação do Pacote</strong></p>
<p>FileName:<strong> String.Format(&#8221; &#8220;&#8221;c:\Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe&#8221;" &#8220;)</strong></p>
<p>Como nesse primeiro momento queremos garantir apenas a criação do pacote, vamos deixar algumas informações do Arguments de maneira fixa, mais tarde iremos deixar mais dinâmico.</p>
<p>Obs: O caminho que você informar onde o pacote será criado, o usuário do teambuild tem que ter permissão de escrita, caso contrário o pacote não será criado. Para fins de exemplo, crie o diretório Site e dê permissão para todos.</p>
<p>Dica: Se você estiver com problemas para debugar, na tarefa Invoke Process tem dois espaços para você adicionar uma tarefa. Nela podemos adicionar uma tarefa que escreva no log da Build para identificar os possiveis problemas. para isso, arraste a tarefa do tipo <strong>WriteBuildMessage</strong>  e no parametro, coloque a string de Output de cada um dos Handles,</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image12.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb12.png" width="569" height="282" border="0" /></a></p>
<p>Feito isso, salve o template e faça o check-in do arquivo, caso contrário o TFS não irá executar essa nossa customização.</p>
<p>Depois de ter feito o check-in, gere uma nova build e quando ela finalizar com sucesso, vá no diretório onde definimos que estaria o nosso pacote para ver se ele foi criado.</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/vL0IY9cTVmY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/06/gerando-o-pacote-para-deploy-do-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/06/gerando-o-pacote-para-deploy-do-website/</feedburner:origLink></item>
		<item>
		<title>Compilando o WebSite com o TeamBuild</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/MtSq_tnTz-Q/</link>
		<comments>http://blog.lambda3.com.br/2012/06/compilando-o-website-com-o-teambuild/#comments</comments>
		<pubDate>Wed, 13 Jun 2012 20:05:04 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[TFS2010]]></category>
		<category><![CDATA[WebDeploy]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=3050</guid>
		<description><![CDATA[Vamos ao nosso primeiro passo que é fazer nosso website compilar através de uma build definition. Esse passo parece simples, mas pode trazer alguns problemas para o nosso ambiente de Build. Esses problemas podem ser criados por causa de dependências &#8230; <a href="http://blog.lambda3.com.br/2012/06/compilando-o-website-com-o-teambuild/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Vamos ao nosso primeiro passo que é fazer nosso website compilar através de uma build definition.</p>
<p>Esse passo parece simples, mas pode trazer alguns problemas para o nosso ambiente de Build. Esses problemas podem ser criados por causa de dependências que o seu projeto tenha. Como estamos trabalhando com um servidor dedicado ao TeamBuild, ele precisará ter todas os componentes necessários para conseguir realizar a compilação do seu projeto.</p>
<p>Então para iniciar a nossa compilação, no servidor de Build, que nesse cenário que eu montei também está configurado o meu Agente de Build, será necessário instalar os componentes de terceiros que o seu projeto depende.</p>
<p>Como nesse exemplo eu não vou usar nada de terceiros não precisarei instalar, mas caso a aplicação de vocês necessite desses componentes instalados, vocês devem preparar esse ambiente com tudo que for necessário antes de iniciarmos a compilação.</p>
<p>Esse procedimento deve ser realizado em cada Agente de Build que você tiver, isso é muito importante, caso contrário o Team build não conseguirá compilar.</p>
<p>Como exemplo, eu criei 1 TeamProject Chamado TeamBuild e criei uma Build Definition WebSite1.</p>
<p>&nbsp;</p>
<p align="center"><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb.png" width="216" height="240" border="0" /></a></p>
<p>Vamos agora configurar a build definition, para esse exemplo, coloquei as seguintes configurações;</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image1.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb1.png" width="540" height="210" border="0" /></a></p>
<p>Nessa tela basta configurar o nome da sua Build Definition. O ideal é que seja um nome que faça referência ao que ela vai executar no sistema.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image2.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb2.png" width="551" height="173" border="0" /></a></p>
<p>Como esse é apenas um exemplo eu coloquei a trigger como Manual.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image3.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb3.png" width="569" height="119" border="0" /></a></p>
<p>Esse é um ponto muito importante e geralmente onde alguns erros de dependencia começam a ocorrer. Na aba Workspace é onde eu informo para o TeamBuild o que ele deve baixar para conseguir realizar a compilação do meu Website.</p>
<p>Assim que você cria a sua build definition, um dos pontos que o Visual Studio já configura para você é trazer qual pasta do Source Control será baixada e para qual diretório dentro do Agente de Build.</p>
<p>Um problema comum é que as vezes o Visual Studio coloca para baixar todo o seu repositório e isso acaba deixando muito lento o sistema de automação da build, pois cada vez que ele for executar uma build, ele baixará todo o seu repositório (vai baixar todos os arquivos que estão no seu source control, mesmo que sejam de outros team projects) e essa é uma tarefa um pouco demorada.</p>
<p>Imagina que seu repositória já tenha por volta de 1GB de arquivos mas o seu projeto só necessite de 10Mbs, toda vez o Team Build terá que realizar o download de 1GB de arquivos para utilizar os 10Mbs de arquivos que seu projeto precisa para ser compilado. Então tome cuidado configure bem quais os workspaces que você vai baixar.</p>
<p>Outro ponto importante é garantir que você baixe todas as pastas necessarias. Imagine a seguinte situação: Você possui um website e uma pasta de resources que contém algumas dll´s que foram adicionadas ao seu projeto de projetos externos que são necessárias para a compilação, um exemplo seria as dlls de algum framework desenvolvido na sua empresa. Essa pasta tem que ser mapeada para que seja realizado o download, caso contrário na hora de compilação irá ser gerado um erro por falta de recursos.</p>
<p>Para evitar esse tipo de problema, seria bom mandar baixar o repositório todo do seu Team Project, assim você terá uma garantia que tudo que está relacionado ao seu projeto será baixado para a compilação.</p>
<p>Para as telas de Build Defaults, Process e Retention Policy, nesse momento ficarão com as informações padrões. Iremos mexer na parte de Process mais tarde.</p>
<p>Agora vamos executar a nossa build e ver se a compilação vai funcionar.</p>
<p>Para isso basta enfileirar uma build, já que configuramos como trigger o modelo Manual e ver o resultado da Build.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image4.png" rel="lightbox"><img style="float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; padding-right: 0px; margin-right: auto; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb4.png" width="351" height="344" border="0" /></a></p>
<p>E o resultado esperado tem que ser a compilação realizada como mostrado na seguinte tela:</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image5.png" rel="lightbox"><img style="padding-top: 0px; padding-left: 0px; padding-right: 0px; border-width: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/06/image_thumb5.png" width="531" height="182" border="0" /></a></p>
<p>Caso tenha dado algum erro de compilação, faça os ajustes necessários para podermos ir para o próximo passo.</p>
<p>Sem uma compilação realizada com sucesso, não conseguiremos realizar o deploy desse nosso WebSite.</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/MtSq_tnTz-Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/06/compilando-o-website-com-o-teambuild/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/06/compilando-o-website-com-o-teambuild/</feedburner:origLink></item>
		<item>
		<title>TeamBuild + WebSite</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/_ovDyNjCXfw/</link>
		<comments>http://blog.lambda3.com.br/2012/06/teambuild-website/#comments</comments>
		<pubDate>Wed, 13 Jun 2012 19:27:34 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[TFS2010]]></category>
		<category><![CDATA[WebDeploy]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=3036</guid>
		<description><![CDATA[Fala pessoal, Eu estou precisando montar uma solução para um cliente que temos que fazer o deploy automático de um site usando o Team Build. Existem milhares de posts explicando o procedimento de como usar o Team Build e o &#8230; <a href="http://blog.lambda3.com.br/2012/06/teambuild-website/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Fala pessoal,</p>
<p>Eu estou precisando montar uma solução para um cliente que temos que fazer o deploy automático de um site usando o Team Build. Existem milhares de posts explicando o procedimento de como usar o Team Build e o Web Deploy para fazer isso, mas como sempre, cada situação tem sua peculiaridade, essa não seria diferente.</p>
<p>Na situação atual nós temos que fazer o deploy de um site que foi criado usando o WebSite project do Visual Studio e por isso, várias da facilidades que teriamos com uma Web Application foram por água abaixo, obrigando a realizar um procedimento bem diferente do que temos publicado por aí.</p>
<p>Vamos primeiro aos desafios:</p>
<p>1 – Por utilizar o WebSite project, nós não temos um arquivo do vb.proj ou cs.proj, que já contém algumas definições de build e agrupa todos os projetos que devem ser compilados para que o site funcione corretamente.</p>
<p>2 – Precisamos fazer o controle do web.config por ambiente, e para variar, como não é uma WebApplication, a funcionalidade do WebConfigTransformation também não está disponível, nos obrigando a fazer esse procedimento na mão.</p>
<p>3 – Algumas máquinas de deploy não estão no mesmo dominio nem rede, o que complica um pouco mais o modelo de passagem do pacote do servidor de Build para as máquinas onde deveremos realizar o Deploy.</p>
<p>Vamos a solução proposta e aos poucos vou publicando um artigo para cada um dos passos descritos.</p>
<p>Preparando o ambiente:</p>
<p>Para que tudo funcione precisaremos ter instalado no nosso ambiente:</p>
<ul>
<li>1 servidor de Build (preferencialmente uma máquina separada do servidor de aplicação do TFS)</li>
<li>1 servidor de homologação</li>
<li>1 servidor de produção</li>
</ul>
<p>Para os servidores de homologação e produção, precisaremos ter instalado o IIS 7 ou superior, Web  Deployment Kit 2.1 ou superior, SO Windows 2008 Server (essa foi a configuração que eu usei no meu ambiente de teste).</p>
<p>Passos para a solução:</p>
<p>1 – Primeiro vamos configurar uma Build Definition que pelo menos compile o WebSite com todos os pré-requisitos que precisamos e depois faremos uma cópia manual desses arquivos para o IIS e ver se o site está funcionando como deveria</p>
<ul>
<li><a href="http://blog.lambda3.com.br/2012/06/compilando-o-website-com-o-teambuild/">Compilando o website com o teambuild</a></li>
</ul>
<p>2 – Sabendo que nosso modelo de compilação está funcionando, vamos começar a realizar o deploy dessa compilação no IIS. Para isso iremos customizar um processo de build que contenham as tarefas de Web Deploy e faremos o deploy automático</p>
<ul>
<li><a href="http://blog.lambda3.com.br/2012/06/gerando-o-pacote-para-deploy-do-website/">Gerando o pacote para deploy do WebSite</a></li>
<li><a href="http://http://blog.lambda3.com.br/2012/06/realizando-o-deploy/">Realizando o Deploy do Website com Msdeploy e TeamBuild</a></li>
</ul>
<p>3 – Para finalizar, vamos criar o nosso web.config transformation. Iremos criar mais uma tarefa customizada para realizar essa atividade.</p>
<p>4 – Por ultimo, alguns pontos de verificação e modelos que talvez você tenham que implementar para comunicação entre as máquinas em dominios diferentes para a passagem do pacote de deploy.</p>
<p>Depois disso tudo, teremos o nosso deploy automático com web.config transformation em Website projects!</p>
<p>Qualquer dúvida, deixem seus comentários que irei ter o maior prazer em responder.</p>
<p>Até a próxima.</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/_ovDyNjCXfw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/06/teambuild-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/06/teambuild-website/</feedburner:origLink></item>
		<item>
		<title>Migrando o servidor de Banco de Dados do TFS 2010</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/EsEPDsc5dis/</link>
		<comments>http://blog.lambda3.com.br/2012/06/migrando-o-servidor-de-banco-de-dados-do-tfs-2010/#comments</comments>
		<pubDate>Sat, 09 Jun 2012 19:50:38 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[MIgração de Base de Dados]]></category>
		<category><![CDATA[TFS 2010]]></category>
		<category><![CDATA[TFS_Configuration]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=3033</guid>
		<description><![CDATA[Boa tarde pessoal, nem sempre encontramos uma documentação completa dos procedimentos para migrar todas as bases de dados do TFS para um novo servidor, por isso resolvi escrever esse post. Esse é um procedimento bem simples, então vamos ao passo-a-passo &#8230; <a href="http://blog.lambda3.com.br/2012/06/migrando-o-servidor-de-banco-de-dados-do-tfs-2010/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Boa tarde pessoal, nem sempre encontramos uma documentação completa dos procedimentos para migrar todas as bases de dados do TFS para um novo servidor, por isso resolvi escrever esse post.</p>
<p>Esse é um procedimento bem simples, então vamos ao passo-a-passo :</p>
<p>Primeira etapa: Migrar a base de configuração do TFS</p>
<ol>
<li>Entre no servidor do TFS e coloque as bases offline e depois pare os serviços do TFS. Nesse momento se no seu servidor de aplicação só tiver o TFS, basta para o IIS todo, caso contrário, pare apenas o site do TFS. </li>
<li>Depois de parar o site do TFS, pode parar o TFS Job, para isso, vá configuração dos serviços do Windows e de um stop no serviço do TFS.</li>
<li>Entre na máquina onde as bases do TFS estão e faça um backup de todas as bases, tanto as de configuração quanto as das Project Collections.</li>
<li>Entre no novo servidor do SQL e faça um restore nas bases que você quer subir nesse servidor. </li>
<li>Precisamos de um usuário de domínio que tenha permissão de Administrador no TFS. Porvavelmente você já tem essa conta que está apontando para o servidor antigo, por tanto podemos utilizar ela mesma. Caso você esteja em um amibente single server e utilizou apenas uma conta, siga o procedimento no <font><font>link de </font><a href="http://www.microsoft.com/en-us/download/details.aspx?id=24337" target="_blank"><font>instalação do TFS</font></a></font><font>. <br /></font>Agora que vem a parte dificil, convencer o DBA que precisamos que esse usuário tenha permissão de sysadmin temporariamente, apenas para fazer uma configuração e depois podemos revogar esse acesso.</li>
<li>Volte&nbsp; para o Servidor onde está o TFS abra o command do Visual Studio e rode o seguinte comando:
<p><strong><font size="2">TFSConfig ChangeServerID <br />/SQLInstance:NM_Novo_Servidor_Onde_Esta_Sua_Base_De_Configuracao&nbsp; <br />/DatabaseName:TFS_Configuration(ou o nome que você deu para a sua base de configuração)<br /></font></strong><strong><font size="2"></li>
<p></font></strong>
<li>Depois de rearumar os IDs do novo servidor, para que não haja nada repetido, vamos registrar esse novo servidor no TFS, para isso execute o seguinte comando:</p>
<p><strong>TFSConfig PrepSQL <br />/SQLInstance:NM_Novo_Servidor_Onde_Esta_Sua_Base_De_Configuracao<br /></strong>&nbsp; </li>
<li>Com esse comando, estamos falando para o servidor do TFS que ele poderá usar esse novo servidor. Agora precisamos remapear a base de configuração, para isso, execute o seguinte comando:
<p><strong>tfsconfig remapdbs<br /> /sqlinstances::NM_Novo_Servidor_Onde_Esta_Sua_Base_De_Configuracao <br />/databasename:Tfs_Configuration</strong></li>
<li>Agora, vamos arrumar o permissionamento das contas, para isso, execute o seguinte comando:
<p><strong>TFSConfig Accounts<br /> /ResetOwner <br />/SQLInstance:NM_Novo_Servidor_Onde_Esta_Sua_Base_De_Configuracao<br /> /DatabaseName: Tfs_Configuration<br /></strong></li>
<li>E para finalizar, vamos registrar esse banco de dados, para isso, digite o seguinte comando:
<p><strong>tfsconfig RegisterDB<br /> /SQLInstance:NM_Novo_Servidor_Onde_Esta_Sua_Base_De_Configuracao<br />/databasename:Tfs_Configuration<br /></strong></li>
<li>E pronto, agora o seu TFS está apontando para o novo servidor de banco de dados. Agora, para a felicidade do DBA, podemos revogar o acesso de sysadmin dado e deixar apenas como DB_Owner das bases do TFS.</li>
<li>Inicie novamente o IIS ou o site do TFS e o serviço de JOB do TFS</li>
<li>Entre no Console Administration e veja que o servidor já está apontando para o novo servidor de banco de dados. Agora só falta reconfigurar a(s ) das ProjectsCollections. Para isso selecione a project collection e clique para editar as configurações. Coloque no nome do novo servidor, salve e coloque a coleção on-line novamente. Faça isso para todas project collections que você tiver e pronto, sua migração estará completa.</li>
</ol>
<p>Bom, esses são os passos necessários para a migração de servidor do SQL do TFS. Caso tenham alguma dúvida ou problema, deixe no comentário que responderei com o maior prazer.</p>
<p>Até a próxima.</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/EsEPDsc5dis" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/06/migrando-o-servidor-de-banco-de-dados-do-tfs-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/06/migrando-o-servidor-de-banco-de-dados-do-tfs-2010/</feedburner:origLink></item>
		<item>
		<title>Material Complementar para o HandsOn LAB</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/aGYgBFCtZSI/</link>
		<comments>http://blog.lambda3.com.br/2012/05/material-complementar-para-o-handson-lab/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:08:38 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[ALM Rangers]]></category>
		<category><![CDATA[Testes manuais]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=2992</guid>
		<description><![CDATA[Pessoal, com um pouco de demora, mas conforme prometido, estou escrevendo esse post para destacar alguns materiais complementares do que foi apresentado no HandsON aqui no Rio, porém acredito que isso sirva para todas as outras localidades que tiveram o &#8230; <a href="http://blog.lambda3.com.br/2012/05/material-complementar-para-o-handson-lab/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Pessoal, com um pouco de demora, mas conforme prometido, estou escrevendo esse post para destacar alguns materiais complementares do que foi apresentado no HandsON aqui no Rio, porém acredito que isso sirva para todas as outras localidades que tiveram o HandsON.</p>
<p>Vamos lá, começando pelo básico. Para quem não pode copiar a máquina no dia do hands on ou quer uma versão digital do material dado, segue o link onde podem ser encontrados :</p>
<ul>
<li><a href="http://blogs.msdn.com/b/visualstudiobr/archive/2011/11/26/materiais-com-os-principais-recursos-do-visual-studio-2010-em-portugu-234-s-dispon-237-veis.aspx">Laboratórios e Máquina Virutal do Visual Studio ALM 2010</a></li>
<li><a href="http://blogs.msdn.com/b/visualstudiobr/archive/2011/10/10/visual-studio-vnext-alm-laborat-243-rios-dispon-237-veis-em-portugu-234-s-hands-on-labs.aspx">Laboratórios e Máquina Virtual do Visual Studio VNext</a></li>
</ul>
<h1>Perfil  &#8211; Time de Desenvolvedores e Arquitetos:</h1>
<ul>
<li>Lab 1 – Introdução ao Source Control:
<ul>
<li><a title="http://msdn.microsoft.com/pt-br/library/ms181368.aspx" href="http://msdn.microsoft.com/pt-br/library/ms181368.aspx">http://msdn.microsoft.com/pt-br/library/ms181368.aspx</a> – Link sobre source control no MSDN</li>
<li><a title="http://social.msdn.microsoft.com/Forums/is/tfsversioncontrol/thread/85602e42-9c99-424c-9ed9-cebe883a847b" href="http://social.msdn.microsoft.com/Forums/is/tfsversioncontrol/thread/85602e42-9c99-424c-9ed9-cebe883a847b">http://social.msdn.microsoft.com/Forums/is/tfsversioncontrol/thread/85602e42-9c99-424c-9ed9-cebe883a847b</a> – Thread no MSDN falando de como conectar versões antigas no TFS 2010.</li>
</ul>
</li>
<li>Lab 2 – Branch e Merge com Team Foundation Server 2010
<ul>
<li><a href="http://vsarbranchingguide.codeplex.com/releases">Visual Studio Team Foundation Server Branching and Merging Guide</a> – Esse é um guide escrito pelos Visual Studio ALM Rangers sobre algumas estratégias de Branch e Merge para as versões 2010 e já está disponível a versão beta do Vnext.</li>
</ul>
</li>
<li>Lab 3 – Customização de Workflow de Build
<ul>
<li><a href="http://vsarbuildguide.codeplex.com/">Team Foundation Build Customization Guide</a> – Mais um guide dos Visual Studio ALM Rangers só sobre Team Build e como trabalhar com algumas customizações.</li>
</ul>
</li>
<li>Lab 4 – Depurando código com Intellitrace
<ul>
<li><a href="http://channel9.msdn.com/search?term=Intellitrace">Videos no Channel 9 sobre Intellitrace</a></li>
</ul>
</li>
<li>Lab 5 – Utilizando Code Analysis para Melhoria da Qualidade de Código
<ul>
<li><a href="http://channel9.msdn.com/blogs/wriju/code-analysis-using-visual-studio-2010">Video Channel 9</a></li>
</ul>
</li>
<li>Lab 6 – Code Discovery utilizando Architecture Tools
<ul>
<li><a title="Doug Seven- Code Understanding and Systems Design with Visual Studio 2010" href="http://channel9.msdn.com/Shows/VS2010Launch/Doug-Seven-Code-Understanding-and-Systems-Design-with-Visual-Studio-2010">Doug Seven- Code Understanding and Systems Design with Visual Studio 2010</a></li>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/gg487293.aspx">Entendendo Sistemas Existentes com Visual Studio 2010</a></li>
<li><a href="http://vsararchitectguide.codeplex.com/">Visual Studio Architecture Tooling Guide</a></li>
</ul>
</li>
<li>Lab 7 – Entendendo Acoplamento de Classes
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/gg487293.aspx">Entendendo Sistemas Existentes com Visual Studio 2010</a></li>
<li><a href="http://vsararchitectguide.codeplex.com/">Visual Studio Architecture Tooling Guide</a></li>
</ul>
</li>
<li>Lab 8 – Utilizando o Architecture Explorer
<ul>
<li>Video Channel 9</li>
<li><a href="http://vsararchitectguide.codeplex.com/">Visual Studio Architecture Tooling Guide</a></li>
</ul>
</li>
</ul>
<h1>Perfil – Líderes e Coordenadores :</h1>
<ul>
<li>Lab 1 –Planejando Seus projetos com o TFS 2010
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/library/dd286619.aspx">Planejando e acompanhando projetos</a></li>
<li><a title="http://channel9.msdn.com/shows/VS2010Launch/Proactive-Project-Management-with-Visual-Studio-2010/" href="http://channel9.msdn.com/shows/VS2010Launch/Proactive-Project-Management-with-Visual-Studio-2010/">Proactive Project Management with Visual Studio 2010</a></li>
<li><a href="http://channel9.msdn.com/blogs/visualstudio/agile-planning-templates-in-visual-studio-team-system-2010">Agile Planning Templates in Visual Studio Team System 2010</a></li>
</ul>
</li>
<li>Lab 2 – Acompanhamento da Qualidade
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/library/dd286718.aspx">Acompanhamento de Bugs, tarefas e outros itens de trabalho</a></li>
</ul>
</li>
<li>Lab 3 &#8211; Utilizando Excel e Report Builder para Relatorios Customizados
<ul>
<li><a href="http://blog.lambda3.com.br/2012/05/customizao-de-relatrios-no-tfs-2010/">Customização de relatórios no TFS 2010</a></li>
<li><a title="http://msdn.microsoft.com/library/bb649552.aspx" href="http://msdn.microsoft.com/library/bb649552.aspx">Criação, personalização e gerenciamento de relatórios para ALM de Visual Studio</a></li>
</ul>
</li>
</ul>
<h1>Perfil – Time de Qualidade e Testadores :</h1>
<p>Links para o MSDN : <a title="http://msdn.microsoft.com/library/ms182409.aspx" href="http://msdn.microsoft.com/library/ms182409.aspx">Testando o aplicativo</a></p>
<p>Links que abordam o modelo completo :</p>
<ul>
<li><a title="http://blog.lambda3.com.br/2012/01/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-1/" href="http://blog.lambda3.com.br/2012/01/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-1/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 1</a></li>
<li><a title="http://blog.lambda3.com.br/2012/01/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-2/" href="http://blog.lambda3.com.br/2012/01/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-2/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 2</a></li>
<li><a href="http://blog.lambda3.com.br/2012/04/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-3/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 3</a></li>
<li>Lab 1 -Planejamento de Testes com o Microsoft Test Manager 2010
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/hh457671">Introdução e visão geral sobre testes e qualidade na Plataforma Microsoft</a></li>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/hh457675">Planejamento de testes com Test Manager 2010</a></li>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/hh457672">Derrubando as barreiras entre testadores e desenvolvedores</a></li>
</ul>
</li>
<li>Lab 2 -Gerenciamento de Casos de Testes com o Microsoft Test Manager 2010
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/hh457673">Gerenciando grandes volumes de teste em uma mesma solução</a></li>
<li><a href="http://blog.lambda3.com.br/2012/04/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-3/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 3</a></li>
</ul>
</li>
<li>Lab 3 -Criando e Executando Testes Manuais com o Microsoft Test Manager 2010
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/hh563952">Entendendo os testes manuais</a></li>
<li><a href="http://blog.lambda3.com.br/2012/04/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-3/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 3</a></li>
</ul>
</li>
<li>Lab 4 -Testes Exploratórios com o Microsoft Test Manager 2010
<ul>
<li><a href="http://channel9.msdn.com/Blogs/TheOliver/Visual-Studio-Team-System-2010-Exploratory-Testing">Visual Studio Team System 2010: Exploratory Testing</a></li>
<li><a href="http://channel9.msdn.com/Events/ALM-Summit/2011/Exploratory-Testing">Exploratory Testing</a></li>
</ul>
</li>
<li>Lab 5 -Testes em Diferentes Plataformas com o Microsoft Test Manager 2010
<ul>
<li><a href="http://blog.lambda3.com.br/2012/04/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-3/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 3</a></li>
</ul>
</li>
<li>Lab 6 -Introdução a Coded UI com o Microsoft Visual Studio Ultimate 2010
<ul>
<li><a href="http://msdn.microsoft.com/pt-br/vstudio/ee957688">Iniciando o uso dos testes de IU codificados</a></li>
<li><a href="http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium/TD023">Building Robust, Maintainable Coded UI Tests with Visual Studio 2010</a></li>
</ul>
</li>
<li>Lab 7 -Ciclo de Correção de Bugs com o Microsoft Test Manager 2010
<ul>
<li><a href="http://blog.lambda3.com.br/2012/04/tudo-o-que-voc-precisa-saber-sobre-testes-no-visual-studio-parte-3/">Tudo o que você precisa saber sobre testes no Visual Studio – Parte 3</a></li>
</ul>
</li>
</ul>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/aGYgBFCtZSI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/05/material-complementar-para-o-handson-lab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/05/material-complementar-para-o-handson-lab/</feedburner:origLink></item>
		<item>
		<title>Minha Palestra no ALM Summit  Brasil 2012</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/yA-3jL5Gqrw/</link>
		<comments>http://blog.lambda3.com.br/2012/05/minha-palestra-no-alm-summit-brasil-2012/#comments</comments>
		<pubDate>Tue, 01 May 2012 20:53:00 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[ALM Rangers]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=2987</guid>
		<description><![CDATA[Boa tarde pessoal, primeiro gostaria de agradecer à todos pela presença no evento e na minha palestra! Estou aqui através desse post publicando a minha palestra (que pode ser baixada aqui) e gostaria de complementar alguns tópicos que infelizmente não &#8230; <a href="http://blog.lambda3.com.br/2012/05/minha-palestra-no-alm-summit-brasil-2012/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Boa tarde pessoal, primeiro gostaria de agradecer à todos pela presença no evento e na minha palestra! Estou aqui através desse post publicando a minha palestra (que pode ser baixada <a href="https://skydrive.live.com/view.aspx?cid=97640379FE13BFDA&amp;resid=97640379FE13BFDA%21220">aqui</a>) e gostaria de complementar alguns tópicos que infelizmente não deu tempo de compartilhar com vocês, por isso vamos ao que interessa!</p>
<p>Primeiro é onde vocês podem baixar  o Branch Guide dos ALM Rangers.</p>
<p>Nesse link ( <a href="http://msdn.microsoft.com/en-us/vstudio/ee358787">Projetos dos ALM Rangers</a> ), você pode encontrar todos os projetos que estão sendo desenvolvidos pela equipe, vale a pena dar uma olhada em tudo que estamos trabalhando e qualquer proposta nova ou problema encontrado não deixe de nos comunicar!</p>
<p>Mas especificamente sobre a minha palestra, segue o endereço do <a href="http://vsarbranchingguide.codeplex.com/">Visual Studio Team Foundation Server Branching and Merging Guide</a> .</p>
<p>Outros pontos que não deram tempo de passar na palestra:</p>
<h1>Melhores Práticas</h1>
<p>• Usar nomes significativos para o Branch – Sempre que possível utilize nomes que realmente tenham algum siginifcado para o seu projeto. Isso parece um detalhe bobo, mas imagine a situação onde você está utilizando a estratégia por feature, e começa utilizando nomes não tão significantes. Com o andar do projeto, esse número de branches pode ficar alto e sem nomes significativos, pode começar a gerar problemas para a sua equipe, impossibilitando que ela saiba qual feature eles tem que trabalhar no momento.</p>
<p>• Sempre prefira Branch ao invés de code-freezen – Code-freezen é um dos &#8221; porquês “ que queremos evitar. Então sempre que surgir uma situação onde a sua equipe de desenvolvimento tiver que ficar parada para que testes, deploys ou qualquer outra coisa que não seja desenvolver novos códigos, acertar bugs identificados em versões anteriores, pense em criar um branch. Isso já gera um valor para esse branch justificando a sua criação.</p>
<p>• Integre sempre que possível – Integrar sempre que possível tem que ser um mantra! deixar para fazer tudo na última hora, trazer as modificações geradas na main para o seu branch de trabalho apenas no final, pode gerar um tempo muito maior de resolução de conflitos e com isso impactar diretamente no seu prazo de entrega. Por isso, integre sempre, pelo menos 1 vez por semana, mais do que isso, você e sua equipe já estarão correndo riscos.</p>
<p>• Resolva conflitos no “Soft” branch – O Soft branch é onde você está desenvolvendo no momento, é o seu branch de desenvolvimento. Sempre resolva os comflitos nesse branch e nunca no que é considerado o mais estável, como o Main por exemplo. Isso que dizer que você antes de publicar alguma nova feature para a Main, baixa a versão do Main para a seu Branch de desenvolvimento resolva todos os conflitos e aí sim, faça a entrega para o Main.</p>
<p>• Evitar branches em cascatas – Tente evitar ao máximo o cascateamento nos branches, pois isso torna muito mais complicada a sua integração e trás um tempo muito maior para a liberação do seu código. Como vimos no início da palestra, isso vai impactar diretamente no custo de manutenção do branch, o que pode não trazer o valor esperado para o branch exigindo que a sua estratégia tenha que ser completamente revista.</p>
<p>• Isole a mudança – Isolar a mudança e não a equipe. Nós temos que isolar apenas  o que queremos modificar no nosso sistema sem impactar os outros membros do time e nunca isolar um grupo ou uma pessoa. Todos tem que saber o que está acontecendo no sistema e porque algum branch foi criado. Caso você comece a isolar as pessoas, você começará a criar silos na sua equipe o que trará muitos problemas para o seu projeto. TOME MUITO CUIDADO!</p>
<p>• Evitar Baseless Merge  &#8211; Como vimos, as vezes o Baseless Merge é necessário (Estratégia de Branch por Release com Mainline), mas tome cuidado com essa técnica, pois ela acaba abrindo caminhos novos caminhos para a release do seu sistema que podem forçar o seu código a não passar por áreas críticas e ser lançada uma versão sem todas as funcionalidades ou bugs que já foram corrigidos.</p>
<h1>Anti-Padrões</h1>
<p>• Merge Paranoia – Medo de realizar o merge entre dois branches. Se isso está acontecendo com o seu projeto, com certeza sua estratégia de branch não é a mais adequada para o seu problema. Pare agora e revise sua estratégia. Esse medo de realizar merges entre branches não pode existir.</p>
<p>• Merge Mania – Ao contrário da primeira, realizar merge todo o tempo também não é uma coisa boa. Esse item também sugere que a estratégia selecionada não está sendo a mais eficaz nesse momento para o seu projeto. Para um tempo e revise o seu modelo.</p>
<p>• Big Bang Merge – Deixar para fazer o merge apenas na última hora, na hora de realizar a liberação do código para Release. NUNCA FAÇA ISSO!</p>
<p>• Branch Mania – Um dos pontos para que um branch seja criado é descobrir qual o valor que ele trará para o projeto. Se ele não trouxer valor ou tiver alguma outra técnica que possa ser empregada no lugar, então não crie o branch! Cada branch que você criar, é mais uma complexidade que você está trazendo para a gestão do seu sistema. Por tanto, sair criando branches sem um bom motivo também é um problema.</p>
<p>• Branches Temporarios – Nunca crie branches para executar algum teste ou fazer pequenas alterações temporárias! Isso não trás valor para o seu projeto! para realizar esse tipo de tarefa, prefira usar shelve, com certeza ele vai resolver o seu problema e não trará complexidade desnecessária para o seu gerenciamento.</p>
<h1>Escolhendo a sua estratégia</h1>
<p>Esse não é um modelo único, porém é um ponto de partida para que você escolha qual estratégia de branch deve ser utilizada no seu projeto.</p>
<p>&nbsp;</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/05/image.png" rel="lightbox"><img style="padding-left: 0px; padding-right: 0px; padding-top: 0px; border: 0px;" alt="image" src="http://blog.lambda3.com.br/wp-content/uploads//2012/05/image_thumb.png" width="569" height="218" border="0" /></a></p>
<p>Utilize isso como um ponto de partida, mas adicione mais alguns pontos de validação para a sua decisão. Uma delas é, qual caminho que eu teria que percorrer para fazer a liberação do meu código ? Existe alguma compliance que eu devo seguir na minha empresa ? As vezes, como vimos na DEMO, teremos que utilizar mais de uma estratégia para atingir os objetivos que aquele projeto necessita.</p>
<p>Tenha em mente que cada projeto pode ter uma estratégia de branch diferente. Então sugiro que você tenha pelo menos 3 modelos padrões na sua empresa para projetos pequenos, projetos médios e um para projetos grandes ou críticos. Mas na hora de definir, faça uma simulação para validar se aquela estratégia não vai lhe trazer complexidade desnecessária.</p>
<p>Espero que tenham gostado da palestra e em caso de dúvidas, deixem seus comentários ou enviem por twitter ou e-mail.</p>
<p>Até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/yA-3jL5Gqrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/05/minha-palestra-no-alm-summit-brasil-2012/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/05/minha-palestra-no-alm-summit-brasil-2012/</feedburner:origLink></item>
		<item>
		<title>Enviando os e-mails de alerta do TFS pelo Gmail</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/SMFwI3tsL6k/</link>
		<comments>http://blog.lambda3.com.br/2012/04/enviando-os-e-mails-de-alerta-do-tfs-pelo-gmail/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 23:19:24 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/2012/04/enviando-os-e-mails-de-alerta-do-tfs-pelo-gmail/</guid>
		<description><![CDATA[Empresas de pequeno ou médio porte tem optado por alguns serviços na nuvem, como por exemplo, utilizar o gmail como seu servidor de e-mails e o google doc´s como repositório de documentos. Essas mesmas empresas também utilizam serviços internos como &#8230; <a href="http://blog.lambda3.com.br/2012/04/enviando-os-e-mails-de-alerta-do-tfs-pelo-gmail/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Empresas de pequeno ou médio porte tem optado por alguns serviços na nuvem, como por exemplo, utilizar o gmail como seu servidor de e-mails e o google doc´s como repositório de documentos.</p>
<p>Essas mesmas empresas também utilizam serviços internos como o Team Foundation Server para gerenciar seus projetos de desenvolvimento, independente da linguagem .NET, Java, Cobol, VB6 etc.</p>
<p>Nesse cenário surge a necessidade de integração entre alguns serviços internos com serviços externos. E como podemos fazer isso com o Team Foundation Server e o Gmail ?</p>
<p>Nativamente, não é possível passar informações de servidores e-mail, usuários e contas para autenticação, por isso temos que implementar uma funcionalidade do IIS, o SMTP Server, para criar um servidor virtual de SMTP e fazer ele “conversar” com o gmail, permitindo que o TFS envie seus alertas.</p>
<p>Para fazer isso, primeiro precisaremos instalar a feature do <strong>SMTP Server,</strong> para isso acesse o <strong>Server Manager</strong>, e selecione a feature do <strong>SMTP Server<br />
</strong></p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/gmail0.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="gmail0" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/gmail0_thumb.png" width="409" height="277" border="0" /></a></p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/gmail1.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="gmail1" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/gmail1_thumb.png" width="414" height="306" border="0" /></a></p>
<p>Click em Next até chegar ao final da instalação. Depois de instalar, precisamos configurar o SMTP Server do IIS para isso, vamos acessar o IIS Manager abrir a Feature do SMTP E-mail</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/2.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="2" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/2_thumb.png" width="269" height="332" border="0" /></a></p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/3.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="3" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/3_thumb.png" width="425" height="180" border="0" /></a></p>
<p>Na tela de configuração da Feature do <strong>SMTP E-Mail</strong>, deixaremos as opções padrões.</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/4.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="4" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/4_thumb.png" width="420" height="290" border="0" /></a></p>
<p>Agora precisamos configurar o nosso servidor virtual para conversar com o Gmail. Para isso, vamos acessar o IIS Manager 6.0</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/5.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="5" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/5_thumb.png" width="424" height="282" border="0" /></a></p>
<p>Ao abrirmos a console do IIS Manager 6.0, percebemos que o serviço está parado, então o primeiro passo é iniciar o serviço. Selecione o serviço ao lado direito e depois clique no botão iniciar (a figura igual ao botão play na barra superior)</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/6.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="6" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/6_thumb.png" width="425" height="300" border="0" /></a></p>
<p>Depois de iniciado, selecione o serviço e entre nas propriedades para começarmos as configurações</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/7.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="7" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/7_thumb.png" width="324" height="359" border="0" /></a><br />
Na aba <strong>Access</strong>, vamos habilitar quais as máquinas vamos permitir que faça relay nesse servidor. Podem ser adicionadas máquina a máquina, uma rede válida ou um domínimo específico. No nosso exemplo, vou adicionar uma rede.<a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/8.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="8" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/8_thumb.png" width="270" height="299" border="0" /></a></p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/9.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="9" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/9_thumb.png" width="301" height="294" border="0" /></a></p>
<p>Agora na aba <strong>Delivery</strong>, acesse a opção <strong>Outbound Sercurity </strong>selecione a opção <strong>basic authentication</strong> e coloque o e-mail do gmail e a senha de acesso do e-mail. Tem que ser um e-mail válido. São com essas informações que o IIS realizará a conexão com o Gmail para enviar os e-mails de alerta. Importante não podemos esquecer de marcar a opção <strong>TLS Encryptation</strong></p>
<p><strong><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/10.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="10" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/10_thumb.png" width="309" height="343" border="0" /></a></strong></p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/111.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="11" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/11_thumb.png" width="317" height="322" border="0" /></a></p>
<p>No <strong>Outbound Connections</strong> precisamos alterar a porta de comunicação de TCP. Por padrão a porta é a <strong>25</strong>, porém o gmail utiliza a porta <strong>587 </strong></p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/121.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="12" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/12_thumb.png" width="326" height="176" border="0" /></a></p>
<p>Por último, vamos na opção <strong>Advanced</strong>. Nessa tela vamos informar qual é o nome do nosso servidor virtual, tem que ser o nome do seu servidor que é conhecido na rede (nome + domínio)  e o <strong>smart host</strong>, precisamos informar qual é o smtp do gmail (smtp.gmail.com), conforme figura abaixo</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/13.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="13" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/13_thumb.png" width="344" height="333" border="0" /></a></p>
<p>Com isso, configuramos o Servidor de SMTP, agora vamos configurar os alertas do Visual Studio. Para isso, entre na console administration, selecione o <strong>application tier</strong> e role até a opção de configurar os alertas de e-mail.</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/14.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="14" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/14_thumb.png" width="293" height="361" border="0" /></a><br />
<a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/15.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="15" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/15_thumb.png" width="425" height="237" border="0" /></a></p>
<p>Na opção SMTP Server, entre com o nome do servidor onde acabou de ser configurado o servidor de SMTP. No E-mail From Address coloque um endereço de e-mail, pode ser qualquer endereço.</p>
<p><a href="http://claudioleite.com/blog/wp-content/uploads/2011/05/16.png" rel="lightbox[2915]"><img style="float: none; margin-left: auto; margin-right: auto;" alt="16" src="http://claudioleite.com/blog/wp-content/uploads/2011/05/16_thumb.png" width="380" height="132" border="0" /></a><br />
Pronto, agora você pode gerar algum alerta no TFS que receberá o e-mail através do gmail configurada no passo 8.</p>
<p>Esse procedimento pode ser utilizado para qualquer servidor de e-mail externo que você possua um usuário válido ou se na sua empresa a porta padrão de conexão com o servidor de e-mail é diferente da padrão.</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/SMFwI3tsL6k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/04/enviando-os-e-mails-de-alerta-do-tfs-pelo-gmail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/04/enviando-os-e-mails-de-alerta-do-tfs-pelo-gmail/</feedburner:origLink></item>
		<item>
		<title>Debugando um Event Handler no TFS 2010</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/bT2vA-9d17E/</link>
		<comments>http://blog.lambda3.com.br/2012/03/debugando-um-event-handler-no-tfs-2010/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 13:45:20 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=2911</guid>
		<description><![CDATA[Esse post pode ser considerado um complemento do post do André Dias, sobre como impedir que um desenvolvedor sobrescrever a política de check-in no TFS. Com os Events Handlers, podemos fazer mais coisas além de verificação de comentários, podemos adicionar &#8230; <a href="http://blog.lambda3.com.br/2012/03/debugando-um-event-handler-no-tfs-2010/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Esse post pode ser considerado um complemento do post do <a href="http://blog.lambda3.com.br/L3/andredias/">André Dias</a>, <a href="http://blog.lambda3.com.br/2011/07/como-impedir-o-desenvolvedor-de-sobrescrever-a-poltica-de-check-in-no-tfs/">sobre como impedir que um desenvolvedor sobrescrever a política de check-in no TFS</a>.</p>
<p>Com os Events Handlers, podemos fazer mais coisas além de verificação de comentários, podemos adicionar uma complexidade maior  que exigirá alguns testes prévios e debug.</p>
<p>Para debugar um Event Handler e facilitar a vida, vamos adicionar o output do projeto já para a pasta padrão do Team Foundation Server, com isso o nosso Event Handler já será publicado na área de instalação e começará a funcionar sem que seja necessárias nenhuma configuração a mais ou cópia de arquivos. Para isso acesse a propriedade do projeto</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image002.png" rel="lightbox"><img style="padding-left: 0px; padding-right: 0px; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" alt="clip_image002" src="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image002_thumb.png" width="301" height="521" border="0" /></a></p>
<p>Na página de propriedades do projeto, vá para aba Build e vamos adicionar a propriedade Output Path para: C:\Program Files\Microsoft Team Foundation Server 2010\Application Tier\Web Services\Plugins\</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image005.png" rel="lightbox"><img style="padding-left: 0px; padding-right: 0px; padding-top: 0px; border: 0px;" alt="clip_image005" src="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image005_thumb.png" width="569" height="435" border="0" /></a></p>
<p>Feito isso, podemos mandar compilar o Event Handler que estamos trabalhando para que ele seja instalado.</p>
<p>Agora, para realizarmos um debug, vamos precisar atachar o processo do IIS que está rodando o TFS 2010. Para isso, vamos no menu Debug -&gt; Attach Process</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image008.png" rel="lightbox"><img style="padding-left: 0px; padding-right: 0px; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" alt="clip_image008" src="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image008_thumb.png" width="458" height="333" border="0" /></a></p>
<p>Irá aparecer uma lista de processos disponíveis. Procure o processo do IIS (w3wp.exe) que esteja rodando o .net framework 4.0 (caso no seu servidor possua outras aplicações no framework 4.0, você terá que identificar o processo por algum dos outros campos, o um exemplo, seria o User Name, que é o usuário que está rodando o TFS 2010)</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image010.png" rel="lightbox"><img style="padding-left: 0px; padding-right: 0px; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" alt="clip_image010" src="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image010_thumb.png" width="493" height="332" border="0" /></a></p>
<p>Não esqueça de marcar a opção “Show processes in all sessions” para ver o processo do IIS. Caso você não encontre o processo do TFS, basta força uma “rodada” do TFS, para isso, vá no team explorer e dê um refresh. Isso fará que o processo “entre no ar” novamente. Feito isso, clique em Attach.</p>
<p>Para realizar o debug, abra uma nova IDE do VS2010, conecte no TFS e faça um check-in, com isso você poderá começar a debugar o seu código.</p>
<p><a href="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image012.png" rel="lightbox"><img style="padding-left: 0px; padding-right: 0px; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" alt="clip_image012" src="http://blog.lambda3.com.br/wp-content/uploads//2012/03/clip_image012_thumb.png" width="569" height="414" border="0" /></a></p>
<p>Espero que tenha ajudado e qualquer dúvida, não deixe de entrar em contato!</p>
<p>Até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/bT2vA-9d17E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2012/03/debugando-um-event-handler-no-tfs-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2012/03/debugando-um-event-handler-no-tfs-2010/</feedburner:origLink></item>
		<item>
		<title>O início de mais um Lambda</title>
		<link>http://feed.lambda3.com.br/~r/LLL/claudioleite/~3/XQySigxeWgQ/</link>
		<comments>http://blog.lambda3.com.br/2011/10/o-inicio-de-mais-um-lambda/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 03:44:12 +0000</pubDate>
		<dc:creator>Claudio Leite</dc:creator>
				<category><![CDATA[Outros]]></category>

		<guid isPermaLink="false">http://blog.lambda3.com.br/?p=2420</guid>
		<description><![CDATA[Bom pessoal, esse é o meu primeiro post como um novo Lambda. Estou há pouco tempo na empresa, ao final de outubro serão 4 meses e apenas agora estou começando a escrever no blog. O primeiro post tinha que ser &#8230; <a href="http://blog.lambda3.com.br/2011/10/o-inicio-de-mais-um-lambda/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Bom pessoal, esse é o meu primeiro post como um novo Lambda. Estou há pouco tempo na empresa, ao final de outubro serão 4 meses e apenas agora estou começando a escrever no blog.</p>
<p>O primeiro post tinha que ser sobre essa experiência inicial que tenho tido com a empresa, não teria outra opção! Por que isso? Simples, a cultura da empresa realmente é muito diferente de outros lugares que eu já trabalhei. O pessoal aqui presa muito o trabalho em comunidade sempre incentivando que você vá e diga para todos as coisas que você vem realizando em clientes, aprendendo, que você compartilhe seu conhecimento.</p>
<p>Isso não é uma coisa muita comum, especialmente para empresas que vivem de consultoria como é o nosso caso, mas por ser orientada a comunidade, quando você não faz a sua parte, você se sente um peixe fora d’água.</p>
<p>Não falo isso com o sentido negativo, mas sim positivo, pois isso gera uma vontade, em nós “novatos” na empresa, em também querer fazer parte desse universo.</p>
<p>Essa é uma empresa que é realmente focada em comunidade e como até foi dito em um dos folhetos distribuídos em eventos: “&#8230; Nós realizamos consultorias de graça, publicando em nossos Blogs, falando em nossas palestras alguns feitos realizados &#8230; “. O texto em si não era exatamente esse, mas a idéia é essa, compartilhar todo o conhecimento sempre.</p>
<p>Isso ficou claro logo no início, quando em um trabalho para um cliente, conseguimos implementar uma customização que não tinha muita documentação e já foram e lançaram um post em como realizar aquela tarefa. E isso sempre contínua, sempre que apresento alguma coisa que desenvolvi para algum cliente vem a primeira pergunta: “Já publicou isso ?”.</p>
<p>Minha resposta, até hoje, era &#8230; “ainda não, vou escrever”. E finalmente agora comecei e espero não parar mais. Acho que agora realmente fui infectado por esse vírus de compartilhamento e entrei no clima da empresa.</p>
<p>Agora sobre o que vou escrever? Inicialmente irei estar bem focado na minha área de atuação que é ALM, porque é o  que eu trabalho aqui na Lambda, com o <a title="Andre Dias" href="http://blog.lambda3.com.br/L3/andredias/" target="_blank">André Dias</a> e o <a title="Igor Abade" href="http://blog.lambda3.com.br/L3/igorabade/" target="_blank">Igor Abade</a> e fora dela no grupo dos <a title="Visual Studio ALM Rangers" href="http://blogs.msdn.com/b/willy-peter_schaub/" target="_blank">Visual Studio ALM Rangers</a>.</p>
<p>Isso vai permitir que eu exponha as experiências que venho vivendo com o Visual Studio 2010 nas consultorias da Lambda3 e as com o Visual Studio VNext através dos dois projetos que eu venho trabalhando (Microsoft Test Management Guide e Process Customization Guide).</p>
<p>Realmente espero poder contribuir muito com vocês e poder ajudar no que for preciso!</p>
<p>Agora sim, me sinto um Lambda por completo! <img src='http://blog.lambda3.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>E até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/LLL/claudioleite/~4/XQySigxeWgQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.lambda3.com.br/2011/10/o-inicio-de-mais-um-lambda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.lambda3.com.br/2011/10/o-inicio-de-mais-um-lambda/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.650 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-18 15:51:40 --><!-- Compression = gzip -->
