Continuous Building
usando
TeamCity
ANDRÉ 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) Execu...
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
◦Con...
Continuous Building
Benefícios adicionais:
◦Feedback rápido sobre mudanças do código
◦Histórico da evolução do código
◦Con...
Continuous Building
Diferente de Continuous Integration:
◦Integração depende da interação da equipe com o
repositório
◦NÃO...
TeamCity
Servidor de continuous building da Jetbrains
Implementado em Java (acreditem se quiser )
Servidor
◦ Gerencia con...
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 – adi...
TeamCity – Repositórios
Dicas (Git):
◦Branch specification – adicione o(s) caminho(s) de
branches adicionais para serem mo...
TeamCity – Build steps
Dicas:
◦Use “runners” específicos sempre que possível
◦Plugins!
◦Log e status mais integrado
◦Fique...
TeamCity – Triggers
Dicas:
◦VCS Trigger – filtre pastas de acordo com seu pipeline
◦Ex: somente código precisa de build e ...
TeamCity – Saindo do básico
General Settings
◦Salve artefatos produzidos no build
◦APKs, Nuget Packages, relatórios de tes...
TeamCity – Saindo do básico
Version Control Settings
◦Limpe todos os arquivos antes do build
◦Mesmo efeito de ‘git clone’ ...
TeamCity – Saindo do básico
Build Steps
◦Adicione cobertura de código
◦ Runners de testes (.NET) e gradle (Java) possuem i...
TeamCity – Saindo do básico
Failure Conditions
◦Falhe o build de acordo com métricas
◦ Ex: cobertura reduziu, tamanho de u...
TeamCity – Saindo do básico
Dependencies
◦Configure o ‘pipeline’ (chamado Build Chain)
◦Usará o mesmo commit em cada build...
TeamCity – Saindo do básico
Parameters
◦Adicione detalhes de configuração de steps
◦Explícito, em um único lugar
◦Ex: Usuá...
TeamCity – Saindo do básico
Agent requirements
◦Limite quais agentes possuem recursos específicos
◦ Ex: acesso a redes ext...
TeamCity – Saindo do básico
Investigations
◦Permite declarar a responsabilidade em resolver um
‘build quebrado’
◦Comunicaç...
TeamCity – Saindo do básico
Notificações
◦Email
◦ IMPORTANTE: configure corretamente seu usuário
◦Diretamente nas IDEs (VS...
TeamCity – Saindo do básico
Notificações
◦Casamento de username configurável por
repositório/projeto
◦Regras de notificaçõ...
TeamCity – Saindo do básico
Pre-tested commit
◦Garante que todos commit está livre de falhas
◦Submete mudanças para serem ...
TeamCity – Exemplos de pipelines
GitFlow
◦1. CB (Auto) – build and unit tests
◦ todos os branches
◦2. Acceptance tests (Au...
TeamCity – Exemplos de pipelines
Master only
◦1. CB (Auto) – build e unit tests
◦todos os branches
◦2. Acceptance tests (A...
Referências e material adicional
TeamCity User Guide (canal official JetBrains)
◦ https://www.youtube.com/watch?v=dmGa6_4O...
Próximos SlideShares
Carregando em…5
×

Continuous Building usando TeamCity

54 visualizações

Publicada em

Apresenta conceitos de 'continous building' e principais opções de configurações do TeamCity, incluindo algumas dicas práticas e opções mais avançadas.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
54
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Isto pode ser feito manualmente – e até individualmente. Mas como tudo q toma muito tempo (seja por acontecer repetidamente ou por ser longo), deve ser automatizado!
  • Pode funcionar como repositorio Nuget
  • Projetos e subprojetos, básico de build steps e triggers – ver roteiro!
  • Prefixo somente se mais de uma configuraçao for usada; sufixo somente se houver diferentes tipos de trigger
  • Ver roteiro apos falar do “Execute step”
  • VCS Trigger – ver roteiro
  • Continuous Building usando TeamCity

    1. 1. Continuous Building usando TeamCity ANDRÉ MINELLI MAIO / 2016
    2. 2. Continuous Building Objetivo Principal: Eliminar problema do “works on my machine”
    3. 3. 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
    4. 4. Continuous Building Necessário COMPROMISSO do time: Se o build quebrar, deve ser corrigido o quanto antes!
    5. 5. Continuous Building Benefícios adicionais:
    6. 6. Continuous Building Benefícios adicionais: ◦Feedback rápido sobre mudanças do código
    7. 7. Continuous Building Benefícios adicionais: ◦Feedback rápido sobre mudanças do código ◦Histórico da evolução do código
    8. 8. Continuous Building Benefícios adicionais: ◦Feedback rápido sobre mudanças do código ◦Histórico da evolução do código ◦Confiabilidade
    9. 9. 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
    10. 10. 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
    11. 11. 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
    12. 12. TeamCity – Configuração Básica Projetos ◦(Subprojetos) ◦Configurações de build ◦Repositório ◦Build steps ◦Triggers
    13. 13. MÃO NA MASSA!
    14. 14. 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)
    15. 15. 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
    16. 16. 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
    17. 17. 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’
    18. 18. 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/buildT ype:(id:Lime_Master)/statusIcon
    19. 19. 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’
    20. 20. 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
    21. 21. 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
    22. 22. 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’
    23. 23. 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
    24. 24. 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
    25. 25. TeamCity – Saindo do básico Investigations ◦Permite declarar a responsabilidade em resolver um ‘build quebrado’ ◦Comunicação interna também funciona bem ;)
    26. 26. 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)
    27. 27. 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
    28. 28. 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
    29. 29. 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
    30. 30. 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
    31. 31. 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+Editi ng+Build+Configurations Ícone com interrogação em toda a interface Web ◦ Remete à documentação, para aquele contexto

    ×