O documento descreve o Jenkins, uma ferramenta de integração contínua open source. Ele discute o histórico do Jenkins e suas características, como construção automatizada, testes, notificações e plugins. Também compara o Jenkins a outras ferramentas como Hudson, TeamCity, Bamboo e fornece instruções sobre como instalar e configurar o Jenkins em um projeto Ruby on Rails.
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;
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.