Continuous Building usando
TeamCityANDRÉ MINELLI
MAIO / 2016
Continuous Building
Objetivo Principal:
Eliminar problema do “works on my machine”
Continuous Building Ciclo básico:
◦ Baixar mudanças de um repositório de código◦ Executar build do código◦ (Opcional) Executar testes automatizados◦ (Opcional) Executar análise estática / cobertura do código◦ (Opcional) Produzir artefatos (binários) ◦ (Opcional) Fazer deploy de artefatos◦ Alertar se algum passo falhar
Continuous Building Necessário COMPROMISSO do time:
Se o build quebrar, deve ser corrigido o quanto antes!
Continuous Building Benefícios adicionais:
Continuous Building Benefícios adicionais:◦Feedback rápido sobre mudanças do código
Continuous Building Benefícios adicionais:◦Feedback rápido sobre mudanças do código◦Histórico da evolução do código
Continuous Building Benefícios adicionais:◦Feedback rápido sobre mudanças do código◦Histórico da evolução do código
◦Confiabilidade
Continuous Building Benefícios adicionais:◦Feedback rápido sobre mudanças do código◦Histórico da evolução do código
◦Confiabilidade◦Transparência
Continuous Building Diferente de Continuous Integration:
◦Integração depende da interação da equipe com o repositório
◦NÃO depende somente de uma ferramenta
TeamCity Servidor de continuous building da Jetbrains Implementado em Java (acreditem se quiser ) Servidor
◦ Gerencia configurações ◦ Monitora repositórios◦ Registra histórico, logs e estatísticas◦ Armazena artefatos
Agentes◦ Executam as etapas do ciclo de build
TeamCity – Configuração Básica Projetos◦(Subprojetos)◦Configurações de build◦Repositório◦Build steps◦Triggers
MÃO NA MASSA!
TeamCity – Configurações de build Dicas:
◦Name – adicione prefixo com o número de ordem do ‘pipeline’ de build
◦Name – adicione sufixo indicando o tipo de trigger (automático ou manual)
◦Build Number Format – adicione o ‘major version’ (fixo ou parametrizado)
TeamCity – Repositórios Dicas (Git):
◦Branch specification – adicione o(s) caminho(s) de branches adicionais para serem monitorados
◦Branch specification – use parênteses para encurtar o nome dos branches
◦Authentication > Password – crie um personal access token no VSTS
TeamCity – Build steps Dicas:
◦Use “runners” específicos sempre que possível◦Plugins!◦Log e status mais integrado
◦Fique atento ao “execute step” escolhido◦Alguns “runners” não causam falha do ‘step’
◦Ex: Testes (Nunit, MSTest, etc)◦Use “Only if build status is successful” nestes casos
TeamCity – Triggers Dicas:
◦VCS Trigger – filtre pastas de acordo com seu pipeline◦Ex: somente código precisa de build e testes
◦VCS Trigger – filtre branches de acordo com seu pipeline◦Ex: package Nuget só deve ser gerado do master
◦Finish Build Trigger - conecte steps de um pipeline ◦Scheduled Trigger – gere ‘nightly builds’
TeamCity – Saindo do básico General Settings
◦Salve artefatos produzidos no build◦APKs, Nuget Packages, relatórios de testes, screenshots, etc
◦Podem ser usados nos próximos build do ‘pipeline’◦Use o status widget no README do projeto
◦ https://teamcity.takenet.com.br/httpAuth/app/rest/builds/buildType:(id:Lime_Master)/statusIcon
TeamCity – Saindo do básico Version Control Settings◦Limpe todos os arquivos antes do build◦Mesmo efeito de ‘git clone’ a cada build◦Só desabilite se o tempo de transferencia impactar
◦Mostre as mudanças vindas de builds dependentes◦Maior transparência em um ‘pipeline’
TeamCity – Saindo do básico Build Steps
◦Adicione cobertura de código◦ Runners de testes (.NET) e gradle (Java) possuem integração◦ Pode impactar testes que dependem de tempo
◦Adicione inspeções de código◦ FxCop, Resharper Inspections, Duplicates, outros via plugin
◦Copie steps entre projetos◦Desabilite steps para testes/melhorias
TeamCity – Saindo do básico Failure Conditions
◦Falhe o build de acordo com métricas◦ Ex: cobertura reduziu, tamanho de um artefato aumentou
Build Features◦Altere o AssemblyInfo para casar com o build number◦Crie uma tag no repositório em caso de sucesso
◦ Muito útil principalmente ao gerar releases
TeamCity – Saindo do básico Dependencies◦Configure o ‘pipeline’ (chamado Build Chain)◦Usará o mesmo commit em cada build step do ‘pipeline’◦Permite visualizar o ‘pipeline’ para cada número de versão
◦Copie artefatos gerados em builds anteriores do ‘pipeline’
TeamCity – Saindo do básico Parameters◦Adicione detalhes de configuração de steps◦Explícito, em um único lugar◦Ex: Usuário, senha, URL, Major version, etc
◦Inclua variáveis de ambiente◦Utilizadas por exemplo com NodeJS e .NET Core
TeamCity – Saindo do básico Agent requirements
◦Limite quais agentes possuem recursos específicos◦ Ex: acesso a redes externas (VPNs, rede pública)◦ Ex: recursos licenciados (Xamarin, Delphi)
◦ Idealmente todos os agentes têm os mesmos recursos
TeamCity – Saindo do básico Investigations
◦Permite declarar a responsabilidade em resolver um ‘build quebrado’
◦Comunicação interna também funciona bem ;)
TeamCity – Saindo do básico Notificações
◦Email◦ IMPORTANTE: configure corretamente seu usuário
◦Diretamente nas IDEs (VS, IntelliJ/AS)◦Feed RSS, Windows Tray◦Slack (plugin)◦Webhooks (plugin)
TeamCity – Saindo do básico Notificações
◦Casamento de username configurável por repositório/projeto
◦Regras de notificações◦ Somente falhas causadas por mim◦ Somente sucesso após falha
TeamCity – Saindo do básico Pre-tested commit
◦Garante que todos commit está livre de falhas◦Submete mudanças para serem executadas ANTES de serem ‘commitadas’◦ Em caso de sucesso, faz merge das alterações
◦Requisitos:◦ Somente com integração pela IDE (VS e IntelliJ/AS)◦ Git ainda não é (bem) suportado
TeamCity – Exemplos de pipelines
GitFlow◦1. CB (Auto) – build and unit tests
◦ todos os branches◦2. Acceptance tests (Auto)
◦ develop, master e releases apenas◦3. Deploy Hmg (Manual)
◦ releases apenas◦4. Deploy Prod (Manual)
◦ master apenas
TeamCity – Exemplos de pipelines Master only
◦1. CB (Auto) – build e unit tests◦ todos os branches
◦2. Acceptance tests (Auto)◦ develop e master apenas
◦3. Deploy (Manual) - gera package para Octopus◦ master apenas
Referências e material adicional TeamCity User Guide (canal official JetBrains)
◦ https://www.youtube.com/watch?v=dmGa6_4OXdo
TeamCity Documentation◦ https://
confluence.jetbrains.com/display/TCD9/Creating+and+Editing+Build+Configurations
Ícone com interrogação em toda a interface Web ◦ Remete à documentação, para aquele contexto
Top Related