ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122

Embed Size (px)

DESCRIPTION

Slides do Minicurso ministrado pela ToolsCloud na Globalcode. Para se inscrever nas proximas turmas, acesse: http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-open-source Para experimentar as ferramentas apresentadas no minicurso, você pode utilizar o ambiente de demonstração da ToolsCloud: https://demo.toolscloud.net User: toolscloud Password: toolscloud ToolsCloud -- As ferramentas que os desenvolvedores adoram, na nuvem! Solução complete de ALM, open source e sem stress. Começe a usar no seu projeto hoje! http://www.toolscloud.com

Citation preview

  • 1. Application Lifecycle Management com ferramentas Open Source Minicurso MC-122 GlobalcodeBruno Souza Evangelista Java e Open Source ToolsCloud @brjavaman

2. Palestrantes Bruno Souza [email protected] @brjavaman - http://java.mn Programador, Fundador da ToolsCloud http://www.toolscloud.comMaterial e Slides Vinicius SengerKleber [email protected] @vsenger Programador, Fundador [email protected] Instrutor e Arquiteto de Software Globalcode 3. Lembretes! Curso AA1 online: ALM a fundo! http://www.globalcode.com.br/treinamentos/modulos/alm-testesQuer experimentar as ferramentas da ToolsCloud? Quer fazer parte da lista de discussoes sobre OpenALM? http://jav.mn/tcgratis 4. ALM O que ? Application Lifecycle Management: gerenciamento contnuo do software; Casamento da gesto de negcio com engenharia de software; Requer ferramentas integradas para gerenciar: Requisitos; Repositrio de cdigo; Construo; Arquitetura e codificao; Testes e qualidade Verses e componentes 5. ALM Por que? Vantagens na adoo; Rastreabilidade e dados post-hoc; Gerenciamento integrado; Simplificao nos processos; Agilidade na construo do software; Aumento da reusabilidade; Diminuio dos riscos; 6. ALM Independente de metodologia, arquitetura e tecnologia toda empresa se beneficia muito com ALM Rastreabilidade, transparncia, comunicao ALM = como lbum de fotografia do seu software, com retratos tirados automaticamente a cada mudana, 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. Ferramentas Existem vrias solues de ALM no mercado: Microsoft - Team Foundation Server IBM - Rational Team Concert Atlassian - Jira Rally Software Collabnet - TeamForge HP - Quality Center VersionOne 8. Open Source Liberdade de escolha de fornecedores Uso livre: excelente para pequenos e mdios times Possibilidade de suporte local As ferramentas mais utilizadas pelos desenvolvedores Comunidade de plugins e ferramentas Disponvel para parceiros e empresas contratadas 9. Repositrios de CdigoFonte: ZeroTurnaround Developer Productivity Report 2013 10. Integrao ContnuaFonte: ZeroTurnaround Developer Productivity Report 2013 11. Issue TrackersFonte: ZeroTurnaround Developer Productivity Report 2013 12. Efeito na Previsibilidade dos ProjetosFonte: ZeroTurnaround Developer Productivity Report 2013(apenas algumas ferramentas foram comparadas) 13. O que os Rock Stars usam?Fonte: ZeroTurnaround Developer Productivity Report 2013 (apenas algumas ferramentas foram comparadas) 14. ALM ferramentas Pilha ALM open-source que usamos: 15. Pilha ALM Open Source na nuvemAmbiente montado em minutosSoftwares atualizados e suporteNo precisa de novos servidores na sua empresa!Redmine, SVN, GIT, Hudson, Nexus integrados com LDAP: importante diferencial Experimente online as ferramentas desse mini-curso: https://demo.toolscloud.netuser: toolscloud senha: toolscloud 16. ALM 1Novo projeto 2 Redmine2 Git2 Jenkins3 Requisitos4 Codificao5 Build & Testes10Bugs e Melhorias9Produo6 Release 7 Nexus 8 HomologaoDeployment Contnuo 17. ALM 1a Semana1. Gesto de componentes 3os com Nexus 2. Testes 3. Integrao contnua 18. ALM 1o Ms1. Testes regressivos 2. Deployment contnuo bsico 3. Gesto dos seus prprios componentes com Nexus 19. Depois1. Testes avanados 2. Deployment contnuo avanado 3. Code review contnuo 20. O planejamento inicial Problema: Organizar os requisitos em entregas Atribuir os requisitos para seus desenvolvedores Acompanhar a evoluo do desenvolvimentoSoluo: Utilizar um gerenciador de issues, como o Redmine 21. Processo passo 1 requisitos e releasesstakeholder 22. Redmine Gerenciamento de Requisitos com: Gesto de pendncias; Gerenciamento de horas gastas / time tracking; Integrao com SCM; Conceito de projetos e sub-projetos; Frum, wiki, arquivos, news, calendrio, gantt chart e sistema de segurana; Software open-source construdo em Ruby on Rails; Centenas de plug-ins e mdulos adicionais; Muitas possibilidades de customizao; 23. Redmine Aps login, temos dois principais itens: Projects, para entrar em um projeto e Administration para config. geral:Home 24. A organizao do cdigo fonte Problema: Compartilhar o cdigo fonte entre os desenvolvedores do projeto Manter o histrico de alteraesSoluo: Utilizar um repositrio de cdigo fonte como o Git 25. Processo passo 2 requisitos e releasesstakeholderdesenvolvedorcdigo fontevisualizao do histrico 26. Versionamento No mundo open-source os destaques so: CVS: sistema mais antigo e precrio, porm, ainda muito utilizado. Trabalha com protocolo proprietrio; Subversion: evoluo do CVS com disponibilizao via HTTP (alm de protocolo proprietrio) e alta performance para versionamento; GIT: mais moderno ainda, por se tratar de um repositrio distribudo. Tem muitas vantagens, mas demanda mais conhecimento do usurio; 27. Versionamento Qualidade dos commits Cuidar bem das mensagens Independente de deciso, escolha entre SVN e GIT! GIT File System? Hooks & ALM 28. Introduo ao Subversion Subversion um repositrio client / server, no distribudo; mantido pelo grupo Apache: subversion.apache.org Instalao e administrao simples; No requer conhecimentos avanados do usurio; Excelente performance para gerar verses / cpias; Pode disponibilizar dados por protocolo proprietrio ou por HTTP / HTTPS; 29. Estrutura de trabalho Convencionalmente trabalhamos com: trunk (tronco): uma pasta que contm os arquivos de desenvolvimento do projeto. branch (galho): so linhas concorrentes de desenvolvimento do projeto independentes; tag (etiqueta): so verses releases efetivos de um projeto.1Trunk 3Tag2Branch 30. GIT Distribudo: no lugar de checkout voc clona o repositrio Seus commits so locais, portanto voc pode trabalhar offline Verbos: add commit log diff status branch merge push Entre offline e online vrios commits! GIT ou Subversion? 31. Integrao com Redmine Navegar nos arquivos do SVN via Web clicando no item Repository: 32. Integrao com Redmine 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 Correao de problema de encoding da IssueID #2 33. Gerenciamento das dependncias Problema: Padronizar as bibliotecas de terceiros utilizadas pelo projeto Disponibilizar as bibliotecas utilizadas para a equipe de desenvolvimentoSoluo: Utilizar uma ferramenta de build com suporte a gerenciamento de dependncias como o Maven Utilizar um gerenciador de repositrios como o Nexus 34. Processo passo 3 requisitos e releasesvisualizao do histrico stakeholder builddependnciasdesenvolvedorcdigo fonte 35. Introduo Nexus 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! 36. Introduo Nexus Para ajudar a solucionar este tipo de problema contamos com Gerenciadores de Repositrios, que desempenham um papel de proxy para os demais: DeveloperHudson Build com Mavenjar: log4j, hibernate, spring etc. Nexus Internet 37. Introduo ao Nexus O Nexus faz o download centralizado dos componentes fazendo um cache que ele utilizar para servir aos demais desenvolvedores; Alm do papel de cache, o Nexus tambm pode catalogar o componentes e artefatos da sua empresa, do seu negcio; Isso facilita bastante o reuso entre equipes; Maven + Nexus + Hudson: parceria perfeita! 38. Integrao entre mdulos Problema: Garantir que alteraes em um dos mdulos no quebrem o funcionamento de outros mdulos Notificar os responsveis em caso de quebra, o mais rapidamente possvelSoluo: Utilizar uma ferramenta de integrao contnua como o Jenkins 39. Processo parte 4 requisitos e releasesstakeholderbuildvisualizao do histrico integrao contnuadependnciasdesenvolvedorcdigo fonte 40. Integrao Continua 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? NO! Imagine que vrios desenvolvedores podem fazer commit de cdigo no fim do dia resultando em um cdigo no-compilvel; 41. Introduo ao Hudson / Jenkins Hudson/Jenkins so servidores open-source de integrao continua Um Continous integration server / CI server pode desempenhar vrias tarefas como: Build e teste;Publicao de resultados;Checkout de cdigo-fonte;Comunicao com membros do time;Na prtica: um agendador de tarefas de construo de softwares altamente customizvel; 42. Introduo ao Hudson / Jenkins Fcil instalao e configurao; Interface web based; Pode fazer builds distribudos; Relatrio de teste unitrio; Notificao do estado dos builds; Notificao em caso de quebra; 43. Introduo ao Hudson / Jenkins Arquitetura extensvel baseada em plugins com mais de 150 de plugins disponveis; Por padro vem com 4 plugins instalados: CVS SVN Maven SSH 44. 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! 45. Criando JobsEm seguida configuramos o job indicando principalmente o repositrio para checkout do projeto! 46. Criando JobsPodemos clicar em Build Now e Hudson vai iniciar o checkout do cdigo e depois vai disparar o build Maven! 47. Dashboard O dashboard traz as informaes sobre os diversos jobs / projetos configurados; Este cone indica a estabilidade dos builds: 48. Reutilizao de mdulos Problema: Disponibilizar os mdulos desenvolvidos para reuso entre as equipesSoluo: Utilizar uma ferramenta de gerenciamento de repositrios como o Nexus 49. Processo parte 5 requisitos e releasesstakeholder buildvisualizao do histricointegrao contnua dependnciasdesenvolvedorcdigo fontepublicao de artefatos 50. Configurando Maven Devemos adicionar esta configurao em um arquivo settings.xml que ficar no diretrio .m2 do usurio: 51. Configurando Maven Para que o Maven possa fazer deployment de artefatos no Nexus: 52. Qualidade do cdigo Problema: Garantir que as convenes e boas prticas esto sendo seguidas pelos desenvolvedores Visualizar as violaes e a evoluo da qualidade estrutural do cdigoSoluo: Utilizar uma ferramenta de anlise esttica do cdigo como o Sonar 53. Processo parte 6 requisitos e releasesstakeholder buildvisualizao do histricointegrao contnua dependnciasdesenvolvedorcdigo fontepublicao de artefatosinspeo 54. Implantao em produo Problema: Implantar um mdulo aprovado em produoSoluo: Utilizar a ferramenta de integrao contnua para fazer o deployment contnuo 55. Processo final requisitos e releasesstakeholder buildvisualizao do histricointegrao contnua dependnciasdesenvolvedorcdigo fonteinspeodeploy publicao de artefatosservidor 56. Outras ferramentas Junit - Testes unitrios Selenium - Testes de interface Web Jmeter - Testes de carga TestLink - Gerenciamento de casos de teste Vagrant Automatizao de servidor de desenvolvimento Chef Automao de infraestrutura 57. DemonstraoExperimente a demonstrao por contra prpria: https://demo.toolscloud.net User: toolscloud - Senha: toolscloud 58. Concluses As ferramentas Maven, Nexus, Hudson/Jenkins, Redmine e Subversion formam uma poderosa soluo de ALM; Todas as ferramentas so open-source; Este ambiente agnstico de linguagens, e funciona para projetos Delphi, C, C++, Ruby, PHP e outros;Muitas possibilidades de customizao;A ToolsCloud oferece este ambiente como servio da nuvem 59. Lembretes! Curso AA1 online: ALM a fundo! http://www.globalcode.com.br/treinamentos/modulos/alm-testesQuer experimentar as ferramentas da ToolsCloud? Quer fazer parte da lista de discussoes sobre OpenALM? http://jav.mn/tcgratis 60. Obrigado! Vinicius Senger [email protected] @vsenger www.globalcode.com.brBruno Souza [email protected] @brjavaman www.toolscloud.com 61. Dvidas? [email protected] [email protected] [email protected] 62. Slides Extras Veja nos slides a seguir informaes extras sobre como configurar algumas das ferramentas citadas nesse mini-curso. 63. Redmine Download e Instalao 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; 64. SVN: Comandos bsicos Adicionar um arquivo ou diretrio*: svn add Remover arquivo ou diretrio*: svn rm Mover arquivo ou diretrio*: svn mv Listar contedo do repositrio: svn ls Reverter alteraes locais: svn revert *Arquivos sero adicionados ou removidos no prximo commit 65. SVN / Git Integrao com Redmine O Redmine pode ser integrar com seu sistema de ; Para isso, clique nos Settings do Projeto e, em seguida, escolha Repository: 66. SVN / Git Integrao com Redmine Ao vincular o projeto a um repositrio voc ter algumas integraes; ltimas mudanas e commits no item Activities 67. SVN / Git Integrao com Redmine Voc pode configurar as palavras que sero detectadas nas mensagens de commit em: Redmine > Administration > Settings -> RepositoriesConfiguramos as palavras de referncia aquiFixing keywords podem mudar o status da Issue! 68. SVN / Git Integrao com Redmine cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit m Correao de problema closes #2 69. Jenkins / Hudson: Instalao e inicializao O Hudson pode funcionar de trs 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; 70. Jenkins / Hudson: Instalao e inicializao Para acessar o Hudson abra um browser e digite a seguinte URL: http://localhost:8080/hudson-2.0.0Configuraes do Hudson Membros do Hudson e projetos Relacionamento entre projetos Views customizadas Executores de builds. O Hudson vem com 2 executores de builds por padro. 71. Hudson / Jenkins: Configurao Para fazer as configuraes iniciais devemos clicar em Manage Hudson 72. Hudson / Jenkins: Configurao Em seguida Configure System teremos acesso as principais configuraes do Hudson:Representa o no. de executores de builds. 73. Hudson / Jenkins: Configurao Aps a instalao importante configurar o local onde esto instalados JDK, Maven e Ant (se usar); 74. Hudson / Jenkins: Configurao A outra configurao importante uma conta de e-mail funcionando para o Hudson poder se comunicar com equipes: