SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Jenkins
João Carlos Ottobboni
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.
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
Introdução
Antes da CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
Exemplo de CI
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.
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.
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.
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.
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.
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.
Ferramentas Concorrentes
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
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.
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
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...
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.
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.
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.
CruiseControl.rb
● Open Source;
● Desenvolvido pela ThoughtWorks;
● Foi feito especialmente para se integrar com o Git;
● Foi criado para trabalhar com projetos Ruby.
CruiseControl
● Open Source;
● Tem varios Plugins;
● Integração com Eclipse e envio de e-mails;
● A parte boa dele é o dashboard;
Gráfico de Popularidade
Gráfico de Popularidade
Gráfico de Popularidade
Workflow com CI
Usando Jenkins em um projeto RoR
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.
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.
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;
}
}
Quem usa Jenkins
Referências
http://zeroturnaround.com
http://jenkins-ci.org
http://rubyonrails.org
http://nginx.org
https://github.com/presidentbeef/brakeman

Mais conteúdo relacionado

Mais procurados

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
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsFelipe Santos
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & VueHerbert Henrique
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
Testes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoTestes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoLetticia Nicoli
 
Introdução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsIntrodução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsGuillaume Falourd
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função saveAulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função saveJorge Pires
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoThiago Ferreira
 
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
 
Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Nelson Glauber Leal
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Letticia Nicoli
 
Hands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeHands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeRafael Pestano
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
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
 
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
 

Mais procurados (20)

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
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com Jenkins
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Testes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoTestes com xUnit + Coding Dojo
Testes com xUnit + Coding Dojo
 
Introdução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsIntrodução ao Github actions - TDC Connections
Introdução ao Github actions - TDC Connections
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função saveAulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
Aulas 6: usando o Jest para fazer mocks to Mongoose, testando a função save
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
 
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
 
Gradle
GradleGradle
Gradle
 
Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
Git alem do basico
Git alem do basicoGit alem do basico
Git alem do basico
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
 
Hands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeHands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forge
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
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
 

Destaque

Testes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - SikuliTestes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - SikuliVanilton Pinheiro
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Vanilton Pinheiro
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaIgo Coelho
 
Integração Contínua - Maré de Agilidade
Integração Contínua - Maré de AgilidadeIntegração Contínua - Maré de Agilidade
Integração Contínua - Maré de AgilidadeVictor Hugo Germano
 
Integração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, GumpIntegração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, GumpDenis L Presciliano
 
Integracao Continua em projetos .NET
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NETLuthiano Vasconcelos
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega ContínuaMarlon Bernardes
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyJoão Carlos Ottobboni
 
SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? Geeks Anonymes
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínuaguesta433a8
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubePatroklos Papapetrou (Pat)
 

Destaque (20)

Testes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - SikuliTestes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - Sikuli
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
 
comex_4
comex_4comex_4
comex_4
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Ruby on rails porque usar rails?!
Ruby on rails   porque usar rails?!Ruby on rails   porque usar rails?!
Ruby on rails porque usar rails?!
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Integração Contínua - Maré de Agilidade
Integração Contínua - Maré de AgilidadeIntegração Contínua - Maré de Agilidade
Integração Contínua - Maré de Agilidade
 
Integração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, GumpIntegração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, Gump
 
TDC2008 Integração Contínua
TDC2008 Integração ContínuaTDC2008 Integração Contínua
TDC2008 Integração Contínua
 
Integracao Continua em projetos .NET
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NET
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega Contínua
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e Strategy
 
SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ?
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Computação Ubíqua e Pervasiva
Computação Ubíqua e PervasivaComputação Ubíqua e Pervasiva
Computação Ubíqua e Pervasiva
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQube
 
Mineração no brasil
Mineração no brasilMineração no brasil
Mineração no brasil
 
A época do ouro no brasil
A época do ouro no brasilA época do ouro no brasil
A época do ouro no brasil
 

Semelhante a Guia completo sobre Jenkins para Integração Contínua

Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
 
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
 
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...Renato Groffe
 
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
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
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
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralPatrick Monteiro
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Marcel Cattaneo
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 

Semelhante a Guia completo sobre Jenkins para Integração Contínua (20)

Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
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
 
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...
 
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
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Jenkins workshop
Jenkins workshopJenkins workshop
Jenkins workshop
 
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
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
Csharp
CsharpCsharp
Csharp
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão Geral
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 

Guia completo sobre Jenkins para Integração Contínua

  • 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. 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
  • 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. 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. 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. 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. 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. 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.
  • 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. 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. 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. 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. 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. 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. 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. CruiseControl.rb ● Open Source; ● Desenvolvido pela ThoughtWorks; ● Foi feito especialmente para se integrar com o Git; ● Foi criado para trabalhar com projetos Ruby.
  • 33. CruiseControl ● Open Source; ● Tem varios Plugins; ● Integração com Eclipse e envio de e-mails; ● A parte boa dele é o dashboard;
  • 38. Usando Jenkins em um projeto RoR
  • 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. 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. 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; } }