SlideShare uma empresa Scribd logo
1 de 32
Jenkins
Felipe Joel da Rosa
Jenkins
Fevereiro 07, 2017
3/17/13 2
●
As soluções de CI/CD são uma parte vital de qualquer time agil
pois ajudam a reforçar os ideais de desenvolvimento agil
●
Jenkins, um sistema de build continuo, permite as equipes focar
o trabalho em desenvolvimento automatizando o processo de
testes, o gerenciamento de artefatos e os processos de
implantação
●
A flexibilidade e as funcionalidades do jenkins permitem o
acoplamento em diversos ambientes e agilizam o processo de
desenvolvimento para todas as partes envolvidas
Jenkins
3/17/13 Red Hat Confidential 3
●
O que é?
●
Quais os benefícios?
Integração Continua
3/17/13 4
●
O que é?
●
Deployment Pipeline
Entrega Continua
5
●
O que é?
●
Onde se encaixa?
●
Por que eu deveria usar?
●
O que eu posso fazer?
●
Como funciona?
●
Onde é usado?
●
Como começar?
Jenkins
6
“Continuous Integration is a software development practice where
members of a team integrate their work frequently, usually each
person integrates at least daily - leading to multiple integrations
per day. Each integration is verified by an automated build
(including test) to detect integration errors as quickly as possible”
– Martin Fowler
Integração Continua
7
Frequentemente (idealmente a cada commit), o sistema é:
●
Integrado – Todas as mudanças realizadas até o momento são
adicionadas ao projeto.
●
Construido – O código é compilado em um executável ou pacote.
●
Testado – Suites de testes são executadas.
●
Arquivado – Versionado e armazenado
●
Deployed - Instalado em um sistema onde os desenvolvedores
podem utilizá-lo.
CI – O que realmente significa?
8
Jenkins
9
●
Detecção imediata de bugs
●
Nenhum passo de integração no ciclo de vida
●
Um sistema implantável em qualquer ponto do ciclo de vida
●
Registro de evolução do projeto
Benefícios CI
10
●
Repositórios de código fonte - SVN, Mercurial, Git
●
Sistemas de build continuo - Jenkins, Bamboo, Cruise Control
●
Frameworks de teste - JUnit,Cucumber, CppUnit
●
Repositórios de artefatos - Nexus, Artifactory, Archiva
CI/CD ferramentas
11
“Continuous Delivery is a software development discipline where you build
software in such a way that the software can be released to production at any
time.
You’re doing continuous delivery when:
●
Your software is deployable throughout its lifecycle
●
Your team prioritizes keeping the software deployable over working on new
features
●
Anybody can get fast, automated feedback on the production readiness of their
systems any time somebody makes a change to them
●
You can perform push-button deployments of any version of the software to any
environment on demand” – Martin Fowler
Continuous Delivery
12
“You achieve continuous delivery by continuously integrating the
software done by the development team, building executables,
and running automated tests on those executables to detect
problems. Furthermore you push the executables into
increasingly production-like environments to ensure the software
will work in production. To do this you use a Deployment
Pipeline.” – Martin Fowler
Continuous Delivery
13
Entrega contínua é alcançado através do deployment pipeline. O
deployment pipeline é composto por três componentes: visibidade,
feedback e deploy contínuo
●
Visibilidade – Todos os aspectos do sistema de entrega incluindo
building, deploying, testes, e release de versão são visiveís para todos
os membros da equipe promovendo assim a colaboração
●
Feedback – Team members tomam conhecimento dos problemas o mais
rápido possível assim são capazes de corrigi-los mais rapidamente
●
Deploy continuo – Através de um processo totalmente automatizado,
você pode realizar o deploy e lançar qualquer versão de software para
qualquer ambiente
Deployment pipeline
14
●
2005 - Hudson foi lançado por Kohsuke Kawaguchi da Sun
Microsystems
●
2010 – Oracle comprou a Sun Microsystems
●
Devido a uma disputa pela patente do nome, Hudson foi
renomeado para Jenkins
●
Oracle continuou o desenvolvimento do Hudson
Jenkins - História
15
●
Jenkins é altamente configuravél
●
O desenvolvimento de plugins adicionais prove ainda mais
flexibilidade
●
Combinando Jenkins com Ant, Gradle, ou outra ferramenta de
automação de build, as possibilidades são ilimitadas
●
Flexibilidade, maturidade, comunidade
Por que Jenkins? Flexibilidade
16
●
Jenkins está sob a licença MIT
●
Grande suporte da comunidade e documentação completa
●
Facilidade para escrever plugins
●
Algo errado com o jenkins? Você pode consertar!
Por que Jenkins? Free/OSS
17
●
Gerar relatório de testes
●
Integração com diferentes sistemas de controle de versão
●
Realizar o Push para vários repositórios de artefatos
●
Deploys diretamente para ambiente de produção ou teste
●
Notificar os stakeholders do status do build
●
…e muito mais
O que o Jenkins pode fazer?
18
Quando configurar um projeto jenkins, você tem as seguintes opções:
●
Associar servidor de controle de versão
●
Triggering builds – Iniciar um job assim que outro job terminar, Periodico,
consultar SCM por modificações
●
Execução de shell scripts, bash scripts, Ant targets e Maven targets
●
Arquivamento de artefatos
●
Publicar resultados de testes JUnit and Javadocs
●
Notificações por email
como mencionado antes, plugins expandem as funcionalidades ainda
mais
Como o Jenkins funciona - Setup
19
●
Uma vez criado o projeto no jenkins, todos os builds futuros serão
automáticos.
- Building
●
Jenkins executa o build em um executer
- por default, Jenkins fornece um executer por core no servidor de build
●
Jenkins também tem o conceito de servidores de build slave
- Útil para o building em diferentes arquiteturas
- Distribuição de carga
Como o Jenkins funciona - Building
20
Jenkins vem com recursos básicos de relatórios
●
Monitorando o status do build
- Último success and failure
- “Weather” – Build trend
●
Estes podem ser bastante melhorados com o uso de plugins de pré-build
- Cobertura de testes unitários
- Tendência de resultado de teste
- Findbugs, Checkstyle, PMD
Como o Jenkins funciona -
Relatórios
21
Jenkins Main Page
22
●
A página principal fornece um resumo dos projetos
●
Quick view de:
- O que está em building (“No builds in the queue”)
- Status do Build Executor (Ambos “Idle”)
- Status dos projetos
Jenkins Main Page
23
Jenkins Project status
24
●
Página de status do projeto fornece mais detalhes de um
determinado projeto
- O status dos últimos builds
- Gráficos
- Dependências
Jenkins Project Status
25
O sistema de plugins do Jenkins permite uma ampla gama de recursos, incluindo (mas certamente
não limitado a)
●
SCM - Mercurial, Git, Subversion
●
Teste - Selenium, Windmill, TestLink
●
Notificações - IRC, Twitter, Jabber
●
Relatórios - Doxygen, PMD, Findbugs
●
Artifact repository - Artifactory, Archiva, Nexus
●
Triggers - Jabber, Directory Watchers
●
Integração Externa - GitHub, Bugzilla, JIRA
●
E o mais importante – The CI Game. Um jogo onde os desenvolvedores competem entre si
objetivando desenvolver o mais estável e bem testado código
Melhorando o Jenkins
26
27
Há também soluções cloud-based que podem fornecer uma
instância Jenkins
●
- Cloudbees - http://www.cloudbees.com/
●
- bitnami - http://bitnami.com/stack/jenkins
Jenkins na nuvem
28
Jenkins tem dois tipos de release
●
Weekly release
- Recursos e bug fixes semanais
●
Long-Term Support (LTS) release
- Atualizações de 3 meses em 3 meses
- Usa uma versão “stable but old”
- Mudanças são limitadas a bug fixes importantes
Releases Jenkins
29
●
Para um time agíl, Jenkins prove a base para uma solução CI/CD
●
Jenkins suporta os princípios ageís provendo entrega continua
de software
●
A extensibilidade do Jenkins permite adaptação para diferentes
ambiente pré-existentes
Jenkins e o Agile
30
●
Como uma parte integral de um solução CI/CD, Jenkins não é de forma
alguma o único componente
●
Para um solução CI/CD funcionar, um repositório comum de código fonte
precisa existir
●
Uma base de dados de artefatos precisa existir, para as entregas
poderem ser efetuadas em iterações passadas
●
O último passo em um processo CI é o deploy dos componentes do build
●
… e nada disso importa se os desenvolvedores não usam o sistema;
processos precisam garantir que o sistema seja usado como pretendido
Jenkins, CI/CD e Agile
31
●
Continuous integration é uma necessidade em projetos complexos
devido aos benefícios que prove considerando a detecção prévia de
problemas
●
Uma boa solução CI/CD deve ser flexivel o bastante para acoplar nos
ambientes pré-existentes e prover todos os recursos que o time espera
●
Jenkins, pode ser parte integral de um solução de CI/CD devido ao seu
conjunto de recursos e a extensibilidade que o sistemas de plugins prove
Conclusão
32
●
Continuous Integration – Martin Fowler
●
- http://www.martinfowler.com/articles/continuousIntegration.html
●
Continuous Delivery – Martin Fowler
●
- https://martinfowler.com/bliki/ContinuousDelivery.html
●
Hudson
●
- http://hudson-ci.org/
●
Jenkins
●
- https://jenkins.io/
●
What is Continuous Integration
●
- https://www.thoughtworks.com/continuous-integration
●
Duval Paul (2012). "Continuous Delivery: Patterns and Anti-Patterns in Software Lifecycle" (PDF). Refcardz. Retrieved October 9,
2015.
Referências

Mais conteúdo relacionado

Mais procurados

E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsEdson Celio
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
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
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoFelipe
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágilClaudia Melo
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisMarcos Pessoa
 
Introdução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de SoftwareIntrodução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de SoftwareClaudia Melo
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaPwC
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
Jenkins e a Integração Contínua
Jenkins e a Integração ContínuaJenkins e a Integração Contínua
Jenkins e a Integração ContínuaDenis Vieira
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous deliveryMarco Valtas
 
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Implantação de Ambiente de Integração contínua para  projeto que usa Java e CImplantação de Ambiente de Integração contínua para  projeto que usa Java e C
Implantação de Ambiente de Integração contínua para projeto que usa Java e CEliane Collins
 
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasLatinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasRaul Leite
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...tdc-globalcode
 

Mais procurados (20)

E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
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
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
 
Introdução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de SoftwareIntrodução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de Software
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao Continua
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Jenkins e a Integração Contínua
Jenkins e a Integração ContínuaJenkins e a Integração Contínua
Jenkins e a Integração Contínua
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
 
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Implantação de Ambiente de Integração contínua para  projeto que usa Java e CImplantação de Ambiente de Integração contínua para  projeto que usa Java e C
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
 
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasLatinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
Ferramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando gitFerramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando git
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
 
Controle de versões com o Subversion
Controle de versões com o SubversionControle de versões com o Subversion
Controle de versões com o Subversion
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 

Semelhante a Jenkins: Uma solução flexível para Integração Contínua

Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend ServerDiego Santos
 
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
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!Evandro Couto
 
Praticas DevOps Com ZendServer
Praticas DevOps Com ZendServerPraticas DevOps Com ZendServer
Praticas DevOps Com ZendServerWilliam Felipe
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Anderson Silveira
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralPatrick Monteiro
 

Semelhante a Jenkins: Uma solução flexível para Integração Contínua (20)

Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Workshop - Jenkins
Workshop - JenkinsWorkshop - Jenkins
Workshop - Jenkins
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend Server
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
Praticas DevOps Com ZendServer
Praticas DevOps Com ZendServerPraticas DevOps Com ZendServer
Praticas DevOps Com ZendServer
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão Geral
 

Jenkins: Uma solução flexível para Integração Contínua

  • 1. Jenkins Felipe Joel da Rosa Jenkins Fevereiro 07, 2017
  • 2. 3/17/13 2 ● As soluções de CI/CD são uma parte vital de qualquer time agil pois ajudam a reforçar os ideais de desenvolvimento agil ● Jenkins, um sistema de build continuo, permite as equipes focar o trabalho em desenvolvimento automatizando o processo de testes, o gerenciamento de artefatos e os processos de implantação ● A flexibilidade e as funcionalidades do jenkins permitem o acoplamento em diversos ambientes e agilizam o processo de desenvolvimento para todas as partes envolvidas Jenkins
  • 3. 3/17/13 Red Hat Confidential 3 ● O que é? ● Quais os benefícios? Integração Continua
  • 4. 3/17/13 4 ● O que é? ● Deployment Pipeline Entrega Continua
  • 5. 5 ● O que é? ● Onde se encaixa? ● Por que eu deveria usar? ● O que eu posso fazer? ● Como funciona? ● Onde é usado? ● Como começar? Jenkins
  • 6. 6 “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible” – Martin Fowler Integração Continua
  • 7. 7 Frequentemente (idealmente a cada commit), o sistema é: ● Integrado – Todas as mudanças realizadas até o momento são adicionadas ao projeto. ● Construido – O código é compilado em um executável ou pacote. ● Testado – Suites de testes são executadas. ● Arquivado – Versionado e armazenado ● Deployed - Instalado em um sistema onde os desenvolvedores podem utilizá-lo. CI – O que realmente significa?
  • 9. 9 ● Detecção imediata de bugs ● Nenhum passo de integração no ciclo de vida ● Um sistema implantável em qualquer ponto do ciclo de vida ● Registro de evolução do projeto Benefícios CI
  • 10. 10 ● Repositórios de código fonte - SVN, Mercurial, Git ● Sistemas de build continuo - Jenkins, Bamboo, Cruise Control ● Frameworks de teste - JUnit,Cucumber, CppUnit ● Repositórios de artefatos - Nexus, Artifactory, Archiva CI/CD ferramentas
  • 11. 11 “Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time. You’re doing continuous delivery when: ● Your software is deployable throughout its lifecycle ● Your team prioritizes keeping the software deployable over working on new features ● Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them ● You can perform push-button deployments of any version of the software to any environment on demand” – Martin Fowler Continuous Delivery
  • 12. 12 “You achieve continuous delivery by continuously integrating the software done by the development team, building executables, and running automated tests on those executables to detect problems. Furthermore you push the executables into increasingly production-like environments to ensure the software will work in production. To do this you use a Deployment Pipeline.” – Martin Fowler Continuous Delivery
  • 13. 13 Entrega contínua é alcançado através do deployment pipeline. O deployment pipeline é composto por três componentes: visibidade, feedback e deploy contínuo ● Visibilidade – Todos os aspectos do sistema de entrega incluindo building, deploying, testes, e release de versão são visiveís para todos os membros da equipe promovendo assim a colaboração ● Feedback – Team members tomam conhecimento dos problemas o mais rápido possível assim são capazes de corrigi-los mais rapidamente ● Deploy continuo – Através de um processo totalmente automatizado, você pode realizar o deploy e lançar qualquer versão de software para qualquer ambiente Deployment pipeline
  • 14. 14 ● 2005 - Hudson foi lançado por Kohsuke Kawaguchi da Sun Microsystems ● 2010 – Oracle comprou a Sun Microsystems ● Devido a uma disputa pela patente do nome, Hudson foi renomeado para Jenkins ● Oracle continuou o desenvolvimento do Hudson Jenkins - História
  • 15. 15 ● Jenkins é altamente configuravél ● O desenvolvimento de plugins adicionais prove ainda mais flexibilidade ● Combinando Jenkins com Ant, Gradle, ou outra ferramenta de automação de build, as possibilidades são ilimitadas ● Flexibilidade, maturidade, comunidade Por que Jenkins? Flexibilidade
  • 16. 16 ● Jenkins está sob a licença MIT ● Grande suporte da comunidade e documentação completa ● Facilidade para escrever plugins ● Algo errado com o jenkins? Você pode consertar! Por que Jenkins? Free/OSS
  • 17. 17 ● Gerar relatório de testes ● Integração com diferentes sistemas de controle de versão ● Realizar o Push para vários repositórios de artefatos ● Deploys diretamente para ambiente de produção ou teste ● Notificar os stakeholders do status do build ● …e muito mais O que o Jenkins pode fazer?
  • 18. 18 Quando configurar um projeto jenkins, você tem as seguintes opções: ● Associar servidor de controle de versão ● Triggering builds – Iniciar um job assim que outro job terminar, Periodico, consultar SCM por modificações ● Execução de shell scripts, bash scripts, Ant targets e Maven targets ● Arquivamento de artefatos ● Publicar resultados de testes JUnit and Javadocs ● Notificações por email como mencionado antes, plugins expandem as funcionalidades ainda mais Como o Jenkins funciona - Setup
  • 19. 19 ● Uma vez criado o projeto no jenkins, todos os builds futuros serão automáticos. - Building ● Jenkins executa o build em um executer - por default, Jenkins fornece um executer por core no servidor de build ● Jenkins também tem o conceito de servidores de build slave - Útil para o building em diferentes arquiteturas - Distribuição de carga Como o Jenkins funciona - Building
  • 20. 20 Jenkins vem com recursos básicos de relatórios ● Monitorando o status do build - Último success and failure - “Weather” – Build trend ● Estes podem ser bastante melhorados com o uso de plugins de pré-build - Cobertura de testes unitários - Tendência de resultado de teste - Findbugs, Checkstyle, PMD Como o Jenkins funciona - Relatórios
  • 22. 22 ● A página principal fornece um resumo dos projetos ● Quick view de: - O que está em building (“No builds in the queue”) - Status do Build Executor (Ambos “Idle”) - Status dos projetos Jenkins Main Page
  • 24. 24 ● Página de status do projeto fornece mais detalhes de um determinado projeto - O status dos últimos builds - Gráficos - Dependências Jenkins Project Status
  • 25. 25 O sistema de plugins do Jenkins permite uma ampla gama de recursos, incluindo (mas certamente não limitado a) ● SCM - Mercurial, Git, Subversion ● Teste - Selenium, Windmill, TestLink ● Notificações - IRC, Twitter, Jabber ● Relatórios - Doxygen, PMD, Findbugs ● Artifact repository - Artifactory, Archiva, Nexus ● Triggers - Jabber, Directory Watchers ● Integração Externa - GitHub, Bugzilla, JIRA ● E o mais importante – The CI Game. Um jogo onde os desenvolvedores competem entre si objetivando desenvolver o mais estável e bem testado código Melhorando o Jenkins
  • 26. 26
  • 27. 27 Há também soluções cloud-based que podem fornecer uma instância Jenkins ● - Cloudbees - http://www.cloudbees.com/ ● - bitnami - http://bitnami.com/stack/jenkins Jenkins na nuvem
  • 28. 28 Jenkins tem dois tipos de release ● Weekly release - Recursos e bug fixes semanais ● Long-Term Support (LTS) release - Atualizações de 3 meses em 3 meses - Usa uma versão “stable but old” - Mudanças são limitadas a bug fixes importantes Releases Jenkins
  • 29. 29 ● Para um time agíl, Jenkins prove a base para uma solução CI/CD ● Jenkins suporta os princípios ageís provendo entrega continua de software ● A extensibilidade do Jenkins permite adaptação para diferentes ambiente pré-existentes Jenkins e o Agile
  • 30. 30 ● Como uma parte integral de um solução CI/CD, Jenkins não é de forma alguma o único componente ● Para um solução CI/CD funcionar, um repositório comum de código fonte precisa existir ● Uma base de dados de artefatos precisa existir, para as entregas poderem ser efetuadas em iterações passadas ● O último passo em um processo CI é o deploy dos componentes do build ● … e nada disso importa se os desenvolvedores não usam o sistema; processos precisam garantir que o sistema seja usado como pretendido Jenkins, CI/CD e Agile
  • 31. 31 ● Continuous integration é uma necessidade em projetos complexos devido aos benefícios que prove considerando a detecção prévia de problemas ● Uma boa solução CI/CD deve ser flexivel o bastante para acoplar nos ambientes pré-existentes e prover todos os recursos que o time espera ● Jenkins, pode ser parte integral de um solução de CI/CD devido ao seu conjunto de recursos e a extensibilidade que o sistemas de plugins prove Conclusão
  • 32. 32 ● Continuous Integration – Martin Fowler ● - http://www.martinfowler.com/articles/continuousIntegration.html ● Continuous Delivery – Martin Fowler ● - https://martinfowler.com/bliki/ContinuousDelivery.html ● Hudson ● - http://hudson-ci.org/ ● Jenkins ● - https://jenkins.io/ ● What is Continuous Integration ● - https://www.thoughtworks.com/continuous-integration ● Duval Paul (2012). "Continuous Delivery: Patterns and Anti-Patterns in Software Lifecycle" (PDF). Refcardz. Retrieved October 9, 2015. Referências