SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Integração Contínua
    com Hudson
      Portugal GTUG
Quem sou eu

•   Director de I&D na YUNIT

•   Certified Scrum Master (Actualmente Product Owner)

•   Trabalhou, Trabalha ou Envolvido em
    •   Desenvolvimento Web - HTML, JS, CSS, Canvas, SVG, etc.
    •   Java (Stack Web + JDBC) + RMI + Sistemas Distribuídos > J2EE
    •   Ruby / Ruby on Rails
    •   Visualização: Processing / Java2D / JOGL
    •   Computação Física: Arduino / Luzes / Cenas, Man
                                                                       2
Integração Contínua
• 1 das 12 práticas do Extreme Programming
• Periodicamente* pegar na ultima versão do
  código no controlo de versões e validar**
 •   Periodicamente:

     •   Diariamente, “Horariamente”, ou, melhor ainda, por triggers
         no Controlo de Versões

 •   Validar:

     •   Dependendo do tipo de projecto: validar ficheiros de
         configuração, compilar código, executar testes
                                                                       3
Integração Contínua
• Sincronização da equipa
 • Forma Simples e Eficaz™ de garantir que
    alterações individuais não invalidam o
    conjunto
• Testes
• Divida Técnica
 • Michael Feathers, Working Effectively with
    Legacy Code
                                                4
Como começar ?
• Num novo projecto
 • Assim que houver um mecanismo de build
• Num projecto já existente:
 • Garantir que o código compila
 • Garantir que o código é empacotado
 • Correr testes
 • Acrescentar outras validações
 • Aplicar STFUDD o mais possível !!        5
Hudson/Jenkins
• Servidor de Integração Contínua
• Trabalha à base de projectos/jobs
• Extensível com plugins
• Distribuído
• Desenvolvimento muito activo
• Apelativo / Fácil de usar (Destronou o
  Cruise Control por estas razões)
                                           6
Projectos
• Trigger
 •   Baseado em Tempo (=crontab), via Polling ou VCS Hook

• Setup
 •   Pull do controlo de versões, fetch de artefactos, scripts de
     inicialização

• Build
 •   Script, Ant, Maven, Rake (em vários passos)

• Post-Build
 •   Notificações, relatórios, publicação de artefactos, plugins     7
Builds Distribuídos
• Os slaves podem ser arrancados de várias
  formas (serviço windows, java webstart, ssh,
  script local) ou podem ser VMs em máquinas
  remotas.
• Cada nó pode ser marcado com etiquetas (db,
  mac, linux, app, ...)
• Podem-se lançar slaves em serviços como o
  EC2
• Podem-se criar slaves por pxeboot (pen USB)    8
Projectos com
       Dependências
• Um projecto pode ser configurado para
  publicar artefactos para uso por outros.
  Neste caso, também se despoletam builds
  dos segundos projectos
• Exemplos:
 • Geração de JARs com bibliotecas de
    integração / código comum

                                             9
Aplicações Enterprisey
•   Pode ser preciso colocar código num container para o
    poder testar, eg, EJBs, web apps
•   Nestas situações pode ser preciso usar uma base de dados
    dedicada, um container num ambiente dedicado, etc.
•   Os projectos têm de passar a:
    •   Compilar código, limpar e popular BD, limpar container,
        lançar código, correr testes, [lavar a louça...]
    •   STFUDD é muito importante aqui: Mais vale um sistema
        complicado e lento a funcionar do que um perfeito em
        lado nenhum
                                                                  10
Uso como Crontab
• O Hudson também pode ser usado como
  crontab.
• Tem as vantagens:
 • Gestão fácil
 • Contenção de carga
 • Garantia de serialização de tarefas
                                         11
Notificações / Output
•   As notificações dos resultados dos builds podem ser
    dadas por:
    •   IRC
    •   XMPP
    •   Mail
•   A melhor solução consiste num radiador de informação
    bem visível:
    •   Plugin “Radiator View”
    •   Luzes / Sirenes
                                                           12
Hudson

• Obrigado,
• Querem ver as luzes ?
• Q&A

                          13

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Escalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonEscalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonGuilherme Vierno
 
Load Testing com VisualStudio + Azure
Load Testing com VisualStudio + AzureLoad Testing com VisualStudio + Azure
Load Testing com VisualStudio + AzureBruno Nunes Trassante
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainersSandro Giacomozzi
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”pt_programar
 
A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front endDouglas Matoso
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Leonardo Kobus
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...Gleicon Moraes
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de VersãoJonathas Silva
 
Controle de versão
Controle de versãoControle de versão
Controle de versãoZé Pereira
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 

Was ist angesagt? (20)

JEE nas nuvens: uma introdução ao openshift
JEE nas nuvens:  uma introdução ao openshiftJEE nas nuvens:  uma introdução ao openshift
JEE nas nuvens: uma introdução ao openshift
 
Jugvale
JugvaleJugvale
Jugvale
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Escalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonEscalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em Python
 
Load Testing com VisualStudio + Azure
Load Testing com VisualStudio + AzureLoad Testing com VisualStudio + Azure
Load Testing com VisualStudio + Azure
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainers
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
 
A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front end
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Vagrant sti
Vagrant stiVagrant sti
Vagrant sti
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Controle de versão
Controle de versãoControle de versão
Controle de versão
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 

Ähnlich wie Integração Contínua com Hudson

Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseOziel Moreira Neto
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsCamila Carrera
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoRegis Machado
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 

Ähnlich wie Integração Contínua com Hudson (20)

Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Alm open source
Alm open sourceAlm open source
Alm open source
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 

Integração Contínua com Hudson

  • 1. Integração Contínua com Hudson Portugal GTUG
  • 2. Quem sou eu • Director de I&D na YUNIT • Certified Scrum Master (Actualmente Product Owner) • Trabalhou, Trabalha ou Envolvido em • Desenvolvimento Web - HTML, JS, CSS, Canvas, SVG, etc. • Java (Stack Web + JDBC) + RMI + Sistemas Distribuídos > J2EE • Ruby / Ruby on Rails • Visualização: Processing / Java2D / JOGL • Computação Física: Arduino / Luzes / Cenas, Man 2
  • 3. Integração Contínua • 1 das 12 práticas do Extreme Programming • Periodicamente* pegar na ultima versão do código no controlo de versões e validar** • Periodicamente: • Diariamente, “Horariamente”, ou, melhor ainda, por triggers no Controlo de Versões • Validar: • Dependendo do tipo de projecto: validar ficheiros de configuração, compilar código, executar testes 3
  • 4. Integração Contínua • Sincronização da equipa • Forma Simples e Eficaz™ de garantir que alterações individuais não invalidam o conjunto • Testes • Divida Técnica • Michael Feathers, Working Effectively with Legacy Code 4
  • 5. Como começar ? • Num novo projecto • Assim que houver um mecanismo de build • Num projecto já existente: • Garantir que o código compila • Garantir que o código é empacotado • Correr testes • Acrescentar outras validações • Aplicar STFUDD o mais possível !! 5
  • 6. Hudson/Jenkins • Servidor de Integração Contínua • Trabalha à base de projectos/jobs • Extensível com plugins • Distribuído • Desenvolvimento muito activo • Apelativo / Fácil de usar (Destronou o Cruise Control por estas razões) 6
  • 7. Projectos • Trigger • Baseado em Tempo (=crontab), via Polling ou VCS Hook • Setup • Pull do controlo de versões, fetch de artefactos, scripts de inicialização • Build • Script, Ant, Maven, Rake (em vários passos) • Post-Build • Notificações, relatórios, publicação de artefactos, plugins 7
  • 8. Builds Distribuídos • Os slaves podem ser arrancados de várias formas (serviço windows, java webstart, ssh, script local) ou podem ser VMs em máquinas remotas. • Cada nó pode ser marcado com etiquetas (db, mac, linux, app, ...) • Podem-se lançar slaves em serviços como o EC2 • Podem-se criar slaves por pxeboot (pen USB) 8
  • 9. Projectos com Dependências • Um projecto pode ser configurado para publicar artefactos para uso por outros. Neste caso, também se despoletam builds dos segundos projectos • Exemplos: • Geração de JARs com bibliotecas de integração / código comum 9
  • 10. Aplicações Enterprisey • Pode ser preciso colocar código num container para o poder testar, eg, EJBs, web apps • Nestas situações pode ser preciso usar uma base de dados dedicada, um container num ambiente dedicado, etc. • Os projectos têm de passar a: • Compilar código, limpar e popular BD, limpar container, lançar código, correr testes, [lavar a louça...] • STFUDD é muito importante aqui: Mais vale um sistema complicado e lento a funcionar do que um perfeito em lado nenhum 10
  • 11. Uso como Crontab • O Hudson também pode ser usado como crontab. • Tem as vantagens: • Gestão fácil • Contenção de carga • Garantia de serialização de tarefas 11
  • 12. Notificações / Output • As notificações dos resultados dos builds podem ser dadas por: • IRC • XMPP • Mail • A melhor solução consiste num radiador de informação bem visível: • Plugin “Radiator View” • Luzes / Sirenes 12
  • 13. Hudson • Obrigado, • Querem ver as luzes ? • Q&A 13

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. Correr testes esporadicamente vs sistematicamente\n
  5. \n
  6. \n
  7. \n
  8. Arranque\nTags\nEC2 / pxe\n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n