Open4Education | MC122 - Introdução a ALM OpenSource

4,449 views

Published on

Published in: Education

Open4Education | MC122 - Introdução a ALM OpenSource

  1. 1. Globalcode – Open4education Application Life-cycle Management Com ferramentas open source!
  2. 2. Globalcode – Open4education Agenda Introdução Redmine Maven Source Code Management Hudson Nexus
  3. 3. Globalcode – Open4education vinicius@globalcode.com.br Twitter @vsenger Programador Fundador da Globalcode Bruno Souza bruno@javaman.com.br @brjavaman http://java.mn Vinicius Senger
  4. 4. Globalcode – Open4education TDC2013 – The Developers Conference • 10 a 14 de julho • Terá uma trilha de ALM • Outras trilhas relevantes • Cloud Computing • Open Source • Java • Arquitetura Curso AA1 já está online: ALM a fundo! Lembretes! (leia-se: merchan)
  5. 5. Globalcode – Open4education • Application Lifecycle Management: gerenciamento contínuo do software; • Casamento da gestão de negócio com engenharia de software; • Requer ferramentas integradas para gerenciar: Requisitos; Repositório de código; Construção integrada; Arquitetura e codificação; Testes e qualidade; Gerenciamento de versões e componentes; A.L.M.
  6. 6. Globalcode – Open4education A.L.M. • Independente de metodologia, arquitetura e tecnologia TODA EMPRESA PRECISA DE A.L.M. • Não documentar o futuro (Agile / Scrum) é uma coisa, poder rastrear o passado é outra; • ALM = é como álbum de fotografia do seu software, com retratos tirados automaticamente a cada mudança, falha, novo requisito, novo release, etc. • Todo mundo sai ganhando: bom para o developer, gerente, arquiteto, Scrum Master, P.O., V.P., CIO, CTO, Asponi, etc.
  7. 7. Globalcode – Open4education • Vantagens na adoção: • Rastreabilidade e dados post-hoc; • Cultura de planejamento de releases / backlog; • Gerenciamento integrado; • Simplificação nos processos; • Agilidade na construção do software; • Conseqüente aumento na cultura de testes; • Aumento da reusabilidade; A.L.M. - vantagens
  8. 8. Globalcode – Open4education “Gerenciar sem backlog é como ser um mecânico que recebe carros para conserto sem que expliquem o problema do carro.” A.L.M. - vantagens
  9. 9. Globalcode – Open4education • Expõe os ciclos de vida do software, facilitando e motivando sua a gestão: • Requisitos / Backlog / Atividade / User Story • Documentação (wiki / files) e suporte (fórum) • Versionamento, tags, brunches, .. • Gestão de Componentes e repositórios • Arquétipos Maven • Construção • Testes – Homologação - Produção • Deployment Gestão de Arquitetura
  10. 10. Globalcode – Open4education • Pilha A.L.M. open-source que usamos: A.L.M. open-source Disciplina Software Gerenciamento de Requisitos Redmine Gestão de código / versionamento SVN e GIT Construção e dependências Maven Gerenciamento de arquétipos Maven Integração Contínua Hudson Repositório de componentes Nexus Ferramenta para desenvolvimento Eclipse IDE com plugins
  11. 11. Globalcode – Open4education • oferece esta pilha como SaaS rodando na Amazon • Mais vantagens ainda: • Você tem o ambiente montado em 24hs • Não precisa de novos servidores na sua empresa! • Softwares atualizados pela ToolsCloud e suporte • Redmine, SVN, GIT, Hudson, Nexus integrados com LDAP é um enorme diferencial • Experimente online as ferramentas desse mini-curso: • https://demo.toolscloud.com • user: toolscloud senha: toolscloud
  12. 12. Globalcode – Open4education A.L.M. Novo projeto RedMine SVN Hudson Requisitos Codificação Build & Testes Release Nexus HomologaçãoProdução Bugs e Melhorias 1 2 2 2 53 4 6 10 9 8 7 Deployment Contínuo
  13. 13. Globalcode – Open4education 1. Testes 1. Integração contínua 1. Gestão de componentes 3os com Nexus A.L.M. em uma semana
  14. 14. Globalcode – Open4education 1. Testes regressivos 1. Deployment contínuo básico 1. Gestão dos seus próprios componentes com Nexus A.L.M. em um mês
  15. 15. Globalcode – Open4education 1. Testes avançados 1. Deployment contínuo avançado 1. Code review contínuo Depois
  16. 16. Globalcode – Open4education • Gerenciamento de Requisitos com: • Gestão de pendências; • Gerenciamento de horas gastas / time tracking; • Integração com SCM; • Conceito de projetos e sub-projetos; • Fórum, wiki, arquivos, news, calendário, gantt chart e sistema de segurança; • Software open-source construído em Ruby on Rails; • Centenas de plug-ins e módulos adicionais; • Muitas possibilidades de customização; Redmine
  17. 17. Globalcode – Open4education • Download e Instalação • www.redmine.org • Precisa de Ruby 1.8, Rails 2.3.5, Rack 1.0.1, RubyGems 1.8, Rake, i18n, libmysql-ruby, libopenssl- ruby1.8; Redmine
  18. 18. Globalcode – Open4education • Tela de login do Redmine: Redmine
  19. 19. Globalcode – Open4education • Após login, temos dois principais itens: Projects, para entrar em um projeto e Administration para config. geral: Redmine Home
  20. 20. Globalcode – Open4education • Temos dezenas de opções de controladores de versões de arquivos no mercado: • Subversion / SVN • CVS • GIT • Microsft Sourcesafe e TFS • Borland Starteam • Clearcase Versionamento
  21. 21. Globalcode – Open4education • No mundo open-source os destaques são: • CVS: sistema mais antigo e precário, porém, ainda muito utilizado. Trabalha com protocolo proprietário; • Subversion: evolução do CVS com disponibilização via HTTP (além de protocolo proprietário) e alta performance para versionamento; • GIT: mais moderno ainda, por se tratar de um repositório distribuído. Tem muitas vantagens, mas demanda mais conhecimento do usuário; Versionamento
  22. 22. Globalcode – Open4education • “Qualidade” dos commits • Cuidar bem das mensagens • Independente de decisão, escolha entre SVN e GIT! • GIT File System? • Hooks & ALM Versionamento
  23. 23. Globalcode – Open4education • Subversion é um repositório client / server, não distribuído; • É mantido pelo grupo Apache: • subversion.apache.org • Instalação e administração simples; • Não requer conhecimentos avançados do usuário; • Excelente performance para gerar versões / cópias; • Pode disponibilizar dados por protocolo proprietário ou por HTTP / HTTPS; Introdução ao Subversion
  24. 24. Globalcode – Open4education Comandos básicos • Adicionar um arquivo ou diretório*: svn add <arquivo ou diretorio> • Remover arquivo ou diretório*: svn rm <arquivo ou diretorio> • Mover arquivo ou diretório*: svn mv <arquivo ou diretorio> • Listar conteúdo do repositório: svn ls <URL> • Reverter alterações locais: svn revert <arquivo> *Arquivos serão adicionados ou removidos no próximo commit
  25. 25. Globalcode – Open4education • Convencionalmente trabalhamos com: • trunk (troco): uma pasta que contém os arquivos de desenvolvimento do projeto. • branch (galho): são linhas concorrentes de desenvolvimento do projeto independentes; • tag (etiqueta): são versões releases efetivos de um projeto. Estrutura de trabalho Trunk1 Branch2Tag3
  26. 26. Globalcode – Open4education • Distribuído: no lugar de checkout você clona o repositório • Seus commits são locais, portanto você pode trabalhar offline • Verbos: add commit log diff status branch merge push • Entre offline e online vários commits! • GIT ou Subversion? GIT
  27. 27. Globalcode – Open4education • O Redmine pode ser integrar com seu sistema de ; • Para isso, clique nos Settings do Projeto e, em seguida, escolha Repository: Integração com Redmine
  28. 28. Globalcode – Open4education • Ao vincular o projeto a um repositório você terá algumas integrações; • Últimas mudanças e commits no item Activities Integração com Redmine
  29. 29. Globalcode – Open4education • Navegar nos arquivos do SVN via Web clicando no item Repository: Integração com Redmine
  30. 30. Globalcode – Open4education • E o recurso mais útil é a possibilidade de você referenciar as Issues nas mensagens de commit; cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit –m “Correçao de problema de encoding da IssueID #2” Integração com Redmine
  31. 31. Globalcode – Open4education • Você pode configurar as palavras que serão detectadas nas mensagens de commit em: Redmine –> Administration –> Settings -> Repositories Integração com Redmine Configuramos as palavras de referência aqui Fixing keywords podem mudar o status da Issue!
  32. 32. Globalcode – Open4education cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit –m “Correçao de problema closes #2” Integração com Redmine
  33. 33. Globalcode – Open4education • Apresentamos o Redmine com SCM integrado. • Desta forma podemos ter um time de desenvolvimento compartilhando o mesmo servidor SCM para desenvolver as Issues do projeto; • Será que isso é o suficiente para nossa necessidade? • NÃO! Imagine que vários desenvolvedores podem fazer commit de código no fim do dia resultando em um código não-compilável; Integração Continua
  34. 34. Globalcode – Open4education • Hudson é um servidor open-source de integração continua; • Um “Continous integration server / CI server” pode desempenhar várias tarefas como: • Checkout de código-fonte; • Build e teste; • Publicação de resultados; • Comunicação com membros do time; • Na prática o Hudson é um agendador de tarefas de construção de softwares altamente customizável; Introdução ao Hudson
  35. 35. Globalcode – Open4education • Fácil instalação e configuração; • Interface é web based; • Pode fazer builds distribuídos; • Relatório de teste unitário; • Notificação do estado dos builds; • Notificação em caso de quebra; Introdução ao Hudson
  36. 36. Globalcode – Open4education • Arquitetura extensível baseada em plugins com mais de 150 de plugins disponíveis; • Por padrão vem com 4 plugins instalados: • CVS • SVN • Maven • SSH Introdução ao Hudson
  37. 37. Globalcode – Open4education • O Hudson pode funcionar de três formas: • Stand-alone: java –jar hudson.war • JNLP: https://hudson.dev.java.net/hudson.jnlp • JavaEE container: fazendo deploy do hudson.war Glassfish, Jboss, Tomcat, Jetty, Winstone, Websphere; Instalação e inicialização
  38. 38. Globalcode – Open4education • Para acessar o Hudson abra um browser e digite a seguinte URL: http://localhost:8080/hudson-2.0.0 Instalação e inicialização Executores de builds. O Hudson vem com 2 executores de builds por padrão. Configurações do Hudson Membros do Hudson e projetos Relacionamento entre projetos Views customizadas
  39. 39. Globalcode – Open4education • Para fazer as configurações iniciais devemos clicar em Manage Hudson Configuração
  40. 40. Globalcode – Open4education • Em seguida Configure System teremos acesso as principais configurações do Hudson: Configuração Representa o no. de executores de builds.
  41. 41. Globalcode – Open4education • Após a instalação é importante configurar o local onde estão instalados JDK, Maven e Ant (se usar); Configuração
  42. 42. Globalcode – Open4education • A outra configuração importante é uma conta de e-mail funcionando para o Hudson poder se comunicar com equipes: Configuração
  43. 43. Globalcode – Open4education Criando Jobs • Basicamente o Hudson pode trabalhar com projetos livres ou Maven; • Maior parte dos casos utilizamos Maven ou Ant; • Maven é o mais simples de se usar!
  44. 44. Globalcode – Open4education Criando Jobs •Em seguida configuramos o job indicando principalmente o repositório para checkout do projeto!
  45. 45. Globalcode – Open4education Criando Jobs Podemos clicar em Build Now e Hudson vai iniciar o checkout do código e depois vai disparar o build Maven!
  46. 46. Globalcode – Open4education • O dashboard traz as informações sobre os diversos jobs / projetos configurados; • Este ícone indica a estabilidade dos builds: Dashboard
  47. 47. Globalcode – Open4education • O Maven pode baixar automaticamente bibliotecas da Internet (se open-source); • Isso é excelente para o desenvolvimento de pequenos times, agora se tivermos um time de 100 desenvolvedores criando projetos Maven que fazem downloads da Internet? • Fatalmente teremos um problema de rede até que todos os Mavens terminem seus downloads! Introdução Nexus
  48. 48. Globalcode – Open4education • Para ajudar a solucionar este tipo de problema contamos com Gerenciadores de Repositórios, que desempenham um papel de proxy para os demais: Introdução Nexus Developer Hudson Build com Maven jar: log4j, hibernate, spring etc. Nexus Internet
  49. 49. Globalcode – Open4education • O Nexus faz o download centralizado dos componentes fazendo um cache que ele utilizará para servir aos demais desenvolvedores; • Além do papel de cache, o Nexus também pode catalogar o componentes e artefatos da sua empresa, do seu negócio; • Isso facilita bastante o reuso entre equipes; • Maven + Nexus + Hudson: parceria perfeita! Introdução ao Nexus
  50. 50. Globalcode – Open4education • Devemos adicionar esta configuração em um arquivo settings.xml que ficará no diretório .m2 do usuário: Configurando Maven
  51. 51. Globalcode – Open4education • Para que o Maven possa fazer deployment de artefatos no Nexus: Configurando Maven
  52. 52. Globalcode – Open4education Conclusões • As ferramentas Maven, Nexus, Hudson, Redmine e Subversion formam uma poderosa solução de ALM; • Todas as ferramentas são open-source; • Este ambiente pode funcionar para Delphi, C, C++, Ruby, entre outras plataformas; • Muitas possibilidades de customização; • A ToolsCloud oferece este ambiente como serviço da nuvem
  53. 53. Globalcode – Open4education Obrigado! vinicius@globalcode.com.br @vsenger Bruno Souza – @brjavaman – bruno@javaman.com.br

×