SlideShare a Scribd company logo
1 of 29
Download to read offline
Integração
e Entrega
Contínua
com... Aécio Pires
2
Sobre mim...
http://aeciopires.com
●
Analista de suporte
●
Mestrando em Tecnologia da Informação – IFPB
● Autor nos livros:
A cultura
Palestra: A relação entre o ágil e o DevOps
Marcell Castelo Branco https://www.youtube.com/watch?v=XrRrc37lUzk
Palestra: O poder da abstração: desafios técnicos e culturais do “Ops” para o DevOps
Daniel Requena https://t.co/soyugYTeC3
3
4
DesenvolvimentoDesenvolvimento OperaçãoOperação
Metologias Ágeis Disponibilidade
Integração Contínua Persistência de dados (storage)
Correção de bugs Segurança
Ambiente para testes Backup
Versionamento de código Configurações específicas
Sprints Logs
Processos de desenvolvimento Monitoramento
Geração de código Alertas
Merges Métricas
Coleta de requisitos Escalabilidade
Reuniões e mais reuniões Rollback
Documentação Orquestração
Suporte ao usuário Deploy de aplicações
Rollback Documentação
Deploy de aplicações Suporte ao usuário
Responsabilidade Complementares
Um pouco de HistóriaUm pouco de História
5
6
●
Euquipe por quase 7 anos
●
Ótimo relacionamento com o time de desenvolvimento
●
No início era um sistema monolítico...
●
Integração do código (merge de branches) manual
●
Dores de implantação e gerenciamento de vários
monolíticos em produção...
●
Migração dos Monolíticos para os microsserviços
– Migração do SVN para o Git
– Spring Cloud Config https://spring.io/projects/spring-cloud-config
– Jhipster Framework https://www.jhipster.tech
– Orquestração, monitoramento, conteinerização e CI/CD
com: Puppet, Zabbix, Docker, Jenkins
Experiências de um Sysadmin DevOps numa
empresa de desenvolvimento de software
A relação entre as etapas...
7
ContinuosContinuos
DeliveryDelivery
ContinuosContinuos
IntegrationIntegration
ContinuosContinuos
DeployDeploy
Fonte: https://goo.gl/1Y9NJu
Processo
O que o Jenkins pretende modificar
8
Fonte: https://goo.gl/1Y9NJu
O que é ?
9
É uma ferramenta de Integração Contínua
de código fonte aberto e desenvolvido em
Java.
Pode ser usado para realizar a Integração
Contínua em projetos de diversos
tamanhos e com linguagens e tecnologias
variadas, tais como: .NET, Ruby, Groovy,
Grails, PHP, Python, Java e muito mais.
Características
10
●
Disponível nas versões Release (semanal) e LTS (a cada 12
semanas);
●
Licença MIT e código aberto https://github.com/jenkinsci/jenkins;
●
Mais de 1600 plugins https://plugins.jenkins.io
●
Vários temas disponíveis http://afonsof.com/jenkins-material-theme
●
Documentação: https://jenkins.io/doc
●
Fácil instalação em várias plataformas https://jenkins.io/download
●
Mantido pela Cloudbees https://www.cloudbees.com e pela
comunidade de desenvolvedores.
História
11
●
O Jenkins era conhecido pelo nome de Hudson.
●
Foi desenvolvido como um hobby por Kohsuke
Kawaguchi em 2004, quando trabalhava na Sun.
●
Quando a Oracle comprou a Sun em 2009, acabou
herdando a base de código do Hudson.
●
No início de 2011, as tensões entre a Oracle e a
comunidade de desenvolvedores aumentaram e houve
uma ruptura.
●
O projeto foi dividido em dois: o Jenkins, administrado
pela maioria dos desenvolvedores iniciais, e o próprio
Hudson, que permaneceu sob o controle do Oracle.
Blue Ocean
12
●
Plugin que adiciona dashboards e recursos
visuais deixando a visualização, edição e
execução do pipeline mais intuitiva e elegante.
https://jenkins.io/projects/blueocean
●
Documentação:
https://jenkins.io/doc/book/blueocean
Blue Ocean
13
Pipeline no Jenkins
14
●
É uma sequência de tarefas automatizadas que podem ser divididas
em etapas e representa uma parte do processo de compilação,
teste, verificação da qualidade do código e entrega do software.
●
Plugin criado em 2017 que permite criar e executar o pipeline como
código.
●
Todos os aspectos do processo são visualizados graficamente
●
Usa uma sintaxe declarativa simples e compreensível (Jenkinsfile).
●
Documentação:
https://jenkins.io/doc/book/pipeline
https://jenkins.io/doc/book/pipeline/syntax
https://jenkins.io/doc/book/pipeline/jenkinsfile
https://jenkins.io/doc/pipeline/steps
https://jenkins.io/doc/book/pipeline/docker
https://tinyurl.com/y8kgqwl8
Exemplo de Pipeline no Jenkins
15
pipeline {
agent any
stages {
stage('Primeiro stage') {
steps {
echo 'Step 1. Hello
Universe'
}
}
stage('Segundo Stage') {
steps {
echo 'Step 1. Hello World'
echo 'Step 2. Hello Brazil'
}
}
}
}
Pipeline no Jenkins
16
Um caso de uso
Ferramentas usadas no pipeline
17
Sobre o Gogs …
18
“É um sistema web capaz de gerenciar inúmeros repositórios
git para fazer o controle de versão do código fonte de
softwares, semelhante ao GitHub, Gitlab e Bitbucket, mas que
mais simples e leve.“
●
No pipeline, o Gogs é usado para armazenar uma cópia de
todos os códigos usados fontes da aplicação, dockerfiles e
jenkinsfile.
●
O Gogs também envia notificações ao Jenkins sempre que
houver um push, geração de tag ou solicitação de merge
numa determinada branch.
●
A partir dessas notificações, o Jenkins inicia a execução de
uma série de jobs para implementar a integração contínua.
●
Mais informações em: https://gogs.io
Sobre e
19
●
O Apache Maven https://maven.apache.org é
importante para compilar uma aplicação Java,
gerenciando uma série de dependências de pacotes.
●
No pipeline, o Maven é gerado para gerar o pacote da
aplicação Java a ser encapsulado numa imagem Docker.
●
O Sonatype Nexus
https://www.sonatype.com/nexus-repository-oss é um
dos muitos repositórios de pacotes de software, que
serve para armazenar organizadamente cada arquivo
gerado para cada versão da aplicação.
●
No pipeline, o Nexus é usado para armazenar uma cópia
de todos os artefatos gerados com o uso do Apache
Maven.
Sobre o ...
20
●
O SonarQube https://www.sonarqube.org é
sistema de código fonte aberto usado para fazer
a análise contínua da qualidade do código fonte
de uma aplicação. Tem suporte a Java, PHP,
Python, Ruby, C e muitas outras linguagens de
programação.
●
No pipeline, o SonarQube é integrado ao maven
para analisar a qualidade do código fonte e a
cobertura de testes unitários de uma aplicação
web desenvolvida em Java.
Sobre o ...
21
“Platarforma de software que provê o gerenciamento de
conteineres, que encapsulam as dependências
necessárias para executar uma aplicação.”
●
Mais informações em:
http://docker.com
http://blog.aeciopires.com/primeiros-passos-com-docker
●
No pipeline, o Docker é usado para gerar as imagens
Docker, contendo a aplicação web, arquivos de
configuração, script de inicialização e dependências de
software.
●
Além disso, o DockerHub ou Docker Registry pode ser
usado para armazenar as imagens Docker a serem
executadas como conteineres nos ambientes de teste,
homologação e produção.
Sobre o ...
22
“É uma ferramenta que gerencia a infraestrutura como
código provisionando um ambiente completo para
que uma aplicação funcione, seja numa nuvem pública,
privada ou outro serviço externo.”
●
Código fonte aberto:
https://github.com/hashicorp/terraform
●
Suporte a Windows, Linux, MacOS, Solaris, FreeBSD,
OpenBSD.
●
Disponível nas versões Open Source e Enterprise
●
Mais informações em: https://www.terraform.io/docs
A aplicação web
23
●
Desenvolvida em Java, usando SpringBoot e Thymeleaf
●
Um CRUD (Create, Read, Update, Delete)
●
Um formulário simples que recebe e exibe informações do
usuário
●
Desenvolvida por Janaína Militão
https://github.com/janainamilitao/applivro-jenkins
Ciclo da execução do Pipeline
Interações entre aplicações e VMs
24
Jenkins
Master
Node
Slave Prod
Interações entre as VMs
Algumas imagens...
25
Algumas imagens...
26
Algumas imagens...
27
Referências
29
●
Suzie Prince - The Product Managers’ Guide to Continuous Delivery and DevOps
https://goo.gl/1Y9NJu
Obrigado!
30

More Related Content

What's hot

Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
Gilmar Pupo
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
Miguel Galves
 

What's hot (20)

Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do Java
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
 
Jenkins
JenkinsJenkins
Jenkins
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
 
Integração do Zabbix com Grafana
Integração do Zabbix com GrafanaIntegração do Zabbix com Grafana
Integração do Zabbix com Grafana
 
Python e frameworks web
Python e frameworks webPython e frameworks web
Python e frameworks web
 
Testes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoTestes com xUnit + Coding Dojo
Testes com xUnit + Coding Dojo
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Do Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no AzureDo Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no Azure
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
 
Impacto dos frameworks PHP
Impacto dos frameworks PHPImpacto dos frameworks PHP
Impacto dos frameworks PHP
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e Azure
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
 

Similar to Integração contínua com Jenkins

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
tdc-globalcode
 

Similar to Integração contínua com Jenkins (20)

Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
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
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
 
Padrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresPadrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhores
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIs
 
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
 
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 

More from Aécio Pires

Artigo: Aplicando recomendações de segurança na instalação do Zabbix
Artigo: Aplicando recomendações de segurança na instalação do ZabbixArtigo: Aplicando recomendações de segurança na instalação do Zabbix
Artigo: Aplicando recomendações de segurança na instalação do Zabbix
Aécio Pires
 
Gerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaGerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramenta
Aécio Pires
 

More from Aécio Pires (20)

Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as code
 
Zabbix BR 2020
Zabbix BR 2020Zabbix BR 2020
Zabbix BR 2020
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStack
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Management Zabbix with Terraform
Management Zabbix with TerraformManagement Zabbix with Terraform
Management Zabbix with Terraform
 
Monitoring Cast 1: Puppet & Zabbix
Monitoring Cast 1: Puppet & ZabbixMonitoring Cast 1: Puppet & Zabbix
Monitoring Cast 1: Puppet & Zabbix
 
Gerenciamento e automatização de configuração de uma infraestrutura com Puppet
Gerenciamento e automatização de configuração de uma infraestrutura com PuppetGerenciamento e automatização de configuração de uma infraestrutura com Puppet
Gerenciamento e automatização de configuração de uma infraestrutura com Puppet
 
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IZabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
 
Lançamento do livro "De A a Zabbix" no IFPB
Lançamento do livro "De A a Zabbix" no IFPBLançamento do livro "De A a Zabbix" no IFPB
Lançamento do livro "De A a Zabbix" no IFPB
 
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
 
Artigo: Aplicando recomendações de segurança na instalação do Zabbix
Artigo: Aplicando recomendações de segurança na instalação do ZabbixArtigo: Aplicando recomendações de segurança na instalação do Zabbix
Artigo: Aplicando recomendações de segurança na instalação do Zabbix
 
Zabbix 2.0: o que ele pode monitorar na sua rede?
Zabbix 2.0: o que ele pode monitorar na sua rede?Zabbix 2.0: o que ele pode monitorar na sua rede?
Zabbix 2.0: o que ele pode monitorar na sua rede?
 
Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramenta
 
Zabbix e caso de uso na SER-PB
Zabbix e caso de uso na SER-PBZabbix e caso de uso na SER-PB
Zabbix e caso de uso na SER-PB
 
Gerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaGerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramenta
 
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
 
SNMP/Zabbix - Vulnerabilidades e Contramedidas 2
SNMP/Zabbix - Vulnerabilidades e Contramedidas 2SNMP/Zabbix - Vulnerabilidades e Contramedidas 2
SNMP/Zabbix - Vulnerabilidades e Contramedidas 2
 
SNMP/Zabbix - Vulnerabilidades e Contramedidas 1
SNMP/Zabbix - Vulnerabilidades e Contramedidas 1SNMP/Zabbix - Vulnerabilidades e Contramedidas 1
SNMP/Zabbix - Vulnerabilidades e Contramedidas 1
 
TCOS e Educação: Um estudo de caso.
TCOS e Educação: Um estudo de caso.TCOS e Educação: Um estudo de caso.
TCOS e Educação: Um estudo de caso.
 

Recently uploaded

Recently uploaded (9)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Integração contínua com Jenkins

  • 2. 2 Sobre mim... http://aeciopires.com ● Analista de suporte ● Mestrando em Tecnologia da Informação – IFPB ● Autor nos livros:
  • 3. A cultura Palestra: A relação entre o ágil e o DevOps Marcell Castelo Branco https://www.youtube.com/watch?v=XrRrc37lUzk Palestra: O poder da abstração: desafios técnicos e culturais do “Ops” para o DevOps Daniel Requena https://t.co/soyugYTeC3 3
  • 4. 4 DesenvolvimentoDesenvolvimento OperaçãoOperação Metologias Ágeis Disponibilidade Integração Contínua Persistência de dados (storage) Correção de bugs Segurança Ambiente para testes Backup Versionamento de código Configurações específicas Sprints Logs Processos de desenvolvimento Monitoramento Geração de código Alertas Merges Métricas Coleta de requisitos Escalabilidade Reuniões e mais reuniões Rollback Documentação Orquestração Suporte ao usuário Deploy de aplicações Rollback Documentação Deploy de aplicações Suporte ao usuário Responsabilidade Complementares
  • 5. Um pouco de HistóriaUm pouco de História 5
  • 6. 6 ● Euquipe por quase 7 anos ● Ótimo relacionamento com o time de desenvolvimento ● No início era um sistema monolítico... ● Integração do código (merge de branches) manual ● Dores de implantação e gerenciamento de vários monolíticos em produção... ● Migração dos Monolíticos para os microsserviços – Migração do SVN para o Git – Spring Cloud Config https://spring.io/projects/spring-cloud-config – Jhipster Framework https://www.jhipster.tech – Orquestração, monitoramento, conteinerização e CI/CD com: Puppet, Zabbix, Docker, Jenkins Experiências de um Sysadmin DevOps numa empresa de desenvolvimento de software
  • 7. A relação entre as etapas... 7 ContinuosContinuos DeliveryDelivery ContinuosContinuos IntegrationIntegration ContinuosContinuos DeployDeploy Fonte: https://goo.gl/1Y9NJu
  • 8. Processo O que o Jenkins pretende modificar 8 Fonte: https://goo.gl/1Y9NJu
  • 9. O que é ? 9 É uma ferramenta de Integração Contínua de código fonte aberto e desenvolvido em Java. Pode ser usado para realizar a Integração Contínua em projetos de diversos tamanhos e com linguagens e tecnologias variadas, tais como: .NET, Ruby, Groovy, Grails, PHP, Python, Java e muito mais.
  • 10. Características 10 ● Disponível nas versões Release (semanal) e LTS (a cada 12 semanas); ● Licença MIT e código aberto https://github.com/jenkinsci/jenkins; ● Mais de 1600 plugins https://plugins.jenkins.io ● Vários temas disponíveis http://afonsof.com/jenkins-material-theme ● Documentação: https://jenkins.io/doc ● Fácil instalação em várias plataformas https://jenkins.io/download ● Mantido pela Cloudbees https://www.cloudbees.com e pela comunidade de desenvolvedores.
  • 11. História 11 ● O Jenkins era conhecido pelo nome de Hudson. ● Foi desenvolvido como um hobby por Kohsuke Kawaguchi em 2004, quando trabalhava na Sun. ● Quando a Oracle comprou a Sun em 2009, acabou herdando a base de código do Hudson. ● No início de 2011, as tensões entre a Oracle e a comunidade de desenvolvedores aumentaram e houve uma ruptura. ● O projeto foi dividido em dois: o Jenkins, administrado pela maioria dos desenvolvedores iniciais, e o próprio Hudson, que permaneceu sob o controle do Oracle.
  • 12. Blue Ocean 12 ● Plugin que adiciona dashboards e recursos visuais deixando a visualização, edição e execução do pipeline mais intuitiva e elegante. https://jenkins.io/projects/blueocean ● Documentação: https://jenkins.io/doc/book/blueocean
  • 14. Pipeline no Jenkins 14 ● É uma sequência de tarefas automatizadas que podem ser divididas em etapas e representa uma parte do processo de compilação, teste, verificação da qualidade do código e entrega do software. ● Plugin criado em 2017 que permite criar e executar o pipeline como código. ● Todos os aspectos do processo são visualizados graficamente ● Usa uma sintaxe declarativa simples e compreensível (Jenkinsfile). ● Documentação: https://jenkins.io/doc/book/pipeline https://jenkins.io/doc/book/pipeline/syntax https://jenkins.io/doc/book/pipeline/jenkinsfile https://jenkins.io/doc/pipeline/steps https://jenkins.io/doc/book/pipeline/docker https://tinyurl.com/y8kgqwl8
  • 15. Exemplo de Pipeline no Jenkins 15 pipeline { agent any stages { stage('Primeiro stage') { steps { echo 'Step 1. Hello Universe' } } stage('Segundo Stage') { steps { echo 'Step 1. Hello World' echo 'Step 2. Hello Brazil' } } } }
  • 17. Um caso de uso Ferramentas usadas no pipeline 17
  • 18. Sobre o Gogs … 18 “É um sistema web capaz de gerenciar inúmeros repositórios git para fazer o controle de versão do código fonte de softwares, semelhante ao GitHub, Gitlab e Bitbucket, mas que mais simples e leve.“ ● No pipeline, o Gogs é usado para armazenar uma cópia de todos os códigos usados fontes da aplicação, dockerfiles e jenkinsfile. ● O Gogs também envia notificações ao Jenkins sempre que houver um push, geração de tag ou solicitação de merge numa determinada branch. ● A partir dessas notificações, o Jenkins inicia a execução de uma série de jobs para implementar a integração contínua. ● Mais informações em: https://gogs.io
  • 19. Sobre e 19 ● O Apache Maven https://maven.apache.org é importante para compilar uma aplicação Java, gerenciando uma série de dependências de pacotes. ● No pipeline, o Maven é gerado para gerar o pacote da aplicação Java a ser encapsulado numa imagem Docker. ● O Sonatype Nexus https://www.sonatype.com/nexus-repository-oss é um dos muitos repositórios de pacotes de software, que serve para armazenar organizadamente cada arquivo gerado para cada versão da aplicação. ● No pipeline, o Nexus é usado para armazenar uma cópia de todos os artefatos gerados com o uso do Apache Maven.
  • 20. Sobre o ... 20 ● O SonarQube https://www.sonarqube.org é sistema de código fonte aberto usado para fazer a análise contínua da qualidade do código fonte de uma aplicação. Tem suporte a Java, PHP, Python, Ruby, C e muitas outras linguagens de programação. ● No pipeline, o SonarQube é integrado ao maven para analisar a qualidade do código fonte e a cobertura de testes unitários de uma aplicação web desenvolvida em Java.
  • 21. Sobre o ... 21 “Platarforma de software que provê o gerenciamento de conteineres, que encapsulam as dependências necessárias para executar uma aplicação.” ● Mais informações em: http://docker.com http://blog.aeciopires.com/primeiros-passos-com-docker ● No pipeline, o Docker é usado para gerar as imagens Docker, contendo a aplicação web, arquivos de configuração, script de inicialização e dependências de software. ● Além disso, o DockerHub ou Docker Registry pode ser usado para armazenar as imagens Docker a serem executadas como conteineres nos ambientes de teste, homologação e produção.
  • 22. Sobre o ... 22 “É uma ferramenta que gerencia a infraestrutura como código provisionando um ambiente completo para que uma aplicação funcione, seja numa nuvem pública, privada ou outro serviço externo.” ● Código fonte aberto: https://github.com/hashicorp/terraform ● Suporte a Windows, Linux, MacOS, Solaris, FreeBSD, OpenBSD. ● Disponível nas versões Open Source e Enterprise ● Mais informações em: https://www.terraform.io/docs
  • 23. A aplicação web 23 ● Desenvolvida em Java, usando SpringBoot e Thymeleaf ● Um CRUD (Create, Read, Update, Delete) ● Um formulário simples que recebe e exibe informações do usuário ● Desenvolvida por Janaína Militão https://github.com/janainamilitao/applivro-jenkins
  • 24. Ciclo da execução do Pipeline Interações entre aplicações e VMs 24 Jenkins Master Node Slave Prod Interações entre as VMs
  • 28. Referências 29 ● Suzie Prince - The Product Managers’ Guide to Continuous Delivery and DevOps https://goo.gl/1Y9NJu