Integração Continua - Jenkins

1.724 visualizações

Publicada em

Integração continua com Jenkins

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

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

Nenhuma nota no slide

Integração Continua - Jenkins

  1. 1. Jenkins João Carlos Ottobboni
  2. 2. Agenda - Introdução - Histórico da Ferramenta; - Descrição das Características; - Ferramentas Concorrentes; - Usando Jenkins em um projeto Ruby on Rails; - Conclusão e Referências.
  3. 3. Introdução Integração Continua de Software - CI Integração continua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho freqüentemente. Geralmente uma pessoa integra pelo menos uma vez ao dia - podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado(Incluindo os testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a diminuir significativamente os problemas de integração e permite que o time desenvolva software coeso mais rapidamente. -Martin Fowler
  4. 4. Introdução
  5. 5. Antes da CI
  6. 6. Exemplo de CI
  7. 7. Exemplo de CI
  8. 8. Exemplo de CI
  9. 9. Exemplo de CI
  10. 10. Exemplo de CI
  11. 11. Exemplo de CI
  12. 12. Exemplo de CI
  13. 13. Exemplo de CI
  14. 14. Exemplo de CI
  15. 15. Exemplo de CI
  16. 16. Exemplo de CI
  17. 17. Exemplo de CI
  18. 18. Jenkins ● Jenkins é o lider open-source para integração continua. Construído em Java ele prove mais de 400 plugins para dar suporte a construção e teste de projetos. ● Construindo projetos de software / testes continuamente, assim como CruiseControl ou Damagecontrol. Em poucas palavras, o Jenkins fornece um sistema de integração contínua fácil de usar, tornando mais fácil para os desenvolvedores integrar as alterações no projeto, e tornando mais fácil para os usuários obterem uma nova compilação.
  19. 19. Histórico ● Jenkins foi originalmente desenvolvido como o projeto Hudson ● A Criação de Hudson começou no verão de 2004 na Sun Microsystems. Foi lançado pela primeira vez em java.net em fevereiro de 2005. ● Por volta de 2007 Hudson tornou-se conhecida como uma alternativa melhor para CruiseControl e outros acúmulos de servidores de código aberto. ● Em novembro de 2010, surgiu uma questão na comunidade Hudson no que diz respeito à infra-estrutura utilizada, que cresceu para abranger questões sobre a gestão e controle pela Oracle. As negociações entre os principais colaboradores do projeto e do Oracle aconteceu e, embora houvesse muitas áreas de concordância um ponto chave foi a marca registrada "Hudson" , depois que a Oracle requereu o direito ao nome para uma marca registrada em dezembro de 2010.
  20. 20. Histórico ● Como resultado, em 11 de janeiro de 2011, uma chamada por votos foi feito para mudar o nome do projeto "Hudson" para "Jenkins". a proposta foi aprovada por maioria esmagadora. ● Em 1 de fevereiro de 2011, a Oracle disse que tinham a intenção de continuar o desenvolvimento do Hudson, e considerou o Jenkins uma nova ferramenta em vez de uma mudança de nome. Jenkins e Hudson, portanto, continuaram como dois projetos independentes. ● Em dezembro de 2013, a organização Jenkins no GitHub tinha 567 membros do projeto e cerca de 1.100 repositórios públicos , em comparação com 32 membros do projeto do Hudson e 17 repositórios públicos.
  21. 21. Descrição das Caracteristicas ● RSS / E-mail / IM Integração: Jenkins fornece meios para construir os resultados por RSS ou e-mail para receber notificações em tempo real sobre as falhas. ● JUnit / reporting teste TestNG: relatórios de testes JUnit podem ser tabulados, resumidas e apresentadas com informações do histórico, como quando ele começou a quebrar, etc. História é plotada em um gráfico. ● Buils distribuidas: Jenkins pode distribuir as cargas de construção / teste para vários computadores. Isso permite que você obtenha o máximo proveito dessas estações de trabalho ociosas sentadas debaixo mesas dos desenvolvedores. ● Facil instalação: Apenas faça o dowload Java jenkins.war -jar, ou implantá-lo em um servlet. Sem instalação adicional, nenhum banco de dados. ● Facil configuração: Jenkins pode ser configurado iteiramente a partir de sua interface web amigavel. ● Links permanentes: Jenkins lhe dá URLs legíveis limpas para a maioria de suas páginas, incluindo alguns permalinks como "última versão" / "build mais recente sucesso", de modo que eles podem ser facilmente ligado a partir de outros lugares.
  22. 22. Descrição das Caracteristicas File fingerprinting: Jenkins mantêm o historico de qual build produziu qual jars, qual build usa quais jars e assim por diante. Isso funciona mesmo para jars que são produzidos fora Jenkins, e é ideal para projetos que precisam rastrear dependência. Apoio Plugin: Jenkins pode ser estendido via plugins de terceiros. Você pode escrever plugins para fazer ferramentas de apoio Jenkins / processos que sua equipe usa.
  23. 23. Vantagens ● Vantagens ○ Builds periódicos ○ Testes Automatizados ○ Builds em ambientes diferentes do desenvolvedor ○ Possibilita analize de código ○ Possibilita customização ○ Reduzir retrabalho ○ Reduzir custo da entrega ○ Identificar erros mais cedo ○ Fácil de operar e configurar ○ Comunidade ativa ○ UI agradável ○ O jenkins integra com outras ferramentas através de plugins existentes na própria aplicação.
  24. 24. Ferramentas Concorrentes
  25. 25. Hudson ● Open Source, e tem suporte da própria Oracle. ● As funcionalidades dele são praticamente as mesmas do Jenkins. ● O suporte da Oracle pode ser um ponto relevante na escolha. ● O suporte da Oracle pro Hudson não saiu nada de novo desde Dezembro / 2010
  26. 26. TeamCity - JetBrains ● Desenvolvido pela JetBrains; ● Ramos para Git e Mercurial; ● integrações e extensibilidade com Xcode, Visual Studio e Amazon EC2; ● Tem integração com algumas IDE’s como: Eclipse, Visual Studio, IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm; ● Existem mais de 50 plugins.
  27. 27. Bamboo – Atlassian ● Desenvolvido pela Atlassian; ● Ele é bem popular e tem ótimos recursos; ● Tem uma ótima integração com o Jira; ● Ele também tem integração com algumas IDE’s como: IntelliJ IDEA, Eclipse, e Visual Studio
  28. 28. Drone.io ● Possui suporte a diversas linguagens, como: C, C++, Go, Java, JavaScript, PHP, Ruby, etc; ● Integra perfeitamente com o Github, Bitbucket e Google Code; ● Também se integra com serviços de terceiros, como: Heroku, dotCloud, Google AppEngine, etc...
  29. 29. Travis CI ● O Travis CI é um serviço de Integração Contínua na nuvem que pode ser conectado a repositórios no GitHub; ● Ele é gratuito para repositórios públicos e pago para repositórios privados; ● Possui suporte a diversas linguagens, como: C, C++, Go, Java, JavaScript, Node.js, Objective-C, PHP, Python, Ruby, etc.
  30. 30. Apache Continuum ● Open Source, Desenvolvido pela Apache, ele roda num Servlet Container qualquer, como o Tomcat; ● Ele baixa o código alterado do controle de versão (SVN, CVS, VSS, Mercurial e outros), roda o build, distribui no servidor de aplicação (ou servlet container) e roda os testes unitários; ● Se você não usa o Maven, é melhor não utilizar o Continuum; ● Não se integra nem com Eclipse, nem com Netbeans.
  31. 31. Team Foundation Server ● Desenvolvido pela Microsoft; ● Se integra muito bem com o Visual Studio; ● A principal diferença entre ele e as outras ferramentas é que o TFS já é o kit todo: o controle de versão, o servidor de integração contínua e um project tracker; ● Roda em Windows.
  32. 32. CruiseControl.rb ● Open Source; ● Desenvolvido pela ThoughtWorks; ● Foi feito especialmente para se integrar com o Git; ● Foi criado para trabalhar com projetos Ruby.
  33. 33. CruiseControl ● Open Source; ● Tem varios Plugins; ● Integração com Eclipse e envio de e-mails; ● A parte boa dele é o dashboard;
  34. 34. Gráfico de Popularidade
  35. 35. Gráfico de Popularidade
  36. 36. Gráfico de Popularidade
  37. 37. Workflow com CI
  38. 38. Usando Jenkins em um projeto RoR
  39. 39. Intalando o jenkins apt-get update apt-get upgrade wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list apt-get update apt-get install -y jenkins /etc/init.d/jenkins start http://server-ip:8080.
  40. 40. Intalando nginx apt-get -y install nginx /etc/init.d/nginx start Criar arquivo no caminho /etc/nginx/sites-enabled/jenkins e colar o codigo seguinte fazendo as alterações necessarias.
  41. 41. Intalando nginx upstream jenkins { server 127.0.0.1:8080; } server { listen 80 default; server_name ci.my_site.com; try_files $uri @jenkins; location @jenkins { proxy_pass http://jenkins; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } location ~ /job/w+/build { root /var/cache/.jenkins/war; try_files $uri @jenkins; } location / { root /var/cache/jenkins/war/; try_files $uri @jenkins; } }
  42. 42. Quem usa Jenkins
  43. 43. Referências http://zeroturnaround.com http://jenkins-ci.org http://rubyonrails.org http://nginx.org https://github.com/presidentbeef/brakeman

×