Hudson permite a realizacao de sofisticados senarios de integracao continua, e essa palestra ira abordar como tudo isso pode ser integrado no seu projeto e na sua empresa, inclusive mostrando como tornar os desenvolvedores mais produtivos com processos profissionais mas muito divertidos!
Integração contínua com Hudson - Configuração, Extensão e Diversão!
1. Campus Party Brasil’2010
#cpartybr
Integração contínua com Hudson -
Configuração, Extensão e
Diversão!
Fabiane Bizinella Nardon
fabiane@tridedalo.com.br
JavaTools Community Leader
2. Objetivo
Mostrar como você pode implantar
integração contínua usando o Hudson e
como customizá-lo para atender as suas
necessidades
3. Agenda
G
Integração contínua e Hudson E
E
Instalação e configuração
K
Usando plugins
L
Como criar novos plugins
E
Integrando o Hudson com o ambiente V
E
Conectando com dispositivos externos L
4. Integração Contínua
Repositório de
Código
Cópia
Cópia
Modificação
Modificação
4 horas depois… 40 dias depois…
5. Integração Contínua
Repositório de
Código
Cópia
Cópia
Modificação
Modificação
“Integration Hell”
4 horas depois… 40 dias depois…
6. Integração Contínua
Repositório de
Código Build
Automatizada
Cópia
Cópia
Modificação
Modificação
• Todos commitam todo dia
• Todo commit deve ser “buildável” Artefatos
7. Hudson
Ferramenta Open Source (Licença MIT) para automatização de
builds
Permite tanto fazer construções de projetos quanto monitorar
jobs executados externamente (via cron, por exemplo)
Possui fácil instalação e configuração, além de integração com
diversas ferramentas como Maven, Jira, etc
Possui diversos plugins criados por desenvolvedores e novos
plugins podem ser facilmente criados
Possui boa documentação e diversos exemplos
https://hudson.dev.java.net/
8. Instalando o Hudson
Forma rápida:
1. Faça download do war do Hudson
2. Executar java -jar hudson.war (executa com o Winstone)
Forma menos rápida:
1. Faça download do war do Hudson
2. Instale no seu container (JBoss, Tomcat, etc).
3. A instalação é feita como a instalação de uma aplicação web
normal, seguindo as diferenças para cada container
9. Configurando o Hudson
1. Crie uma variável HUDSON_HOME
Por default o home é ~/.hudson, mas é altamente aconselhável
setar o HUDSON_HOME para um diretório controlado. É deste
diretório que você precisa fazer backups para restaurar o seu
Hudson
Diretórios importantes:
plugins: contém os plugins instalados
jobs: contém a configuração e artefatos de cada job do
hudson
jobs/<JOB>/workspace: é onde o Hudson coloca o código
fonte recuperado para o job
job/<JOB>/builds: resultado das builds
10. Configurando o Hudson
2. Habilite a segurança
O Hudson suporta diversos tipos de segurança: um banco de
dados próprio, LDAP, etc. Escolha a melhor opção para você,
mas escolha uma!
11. Configurando o Hudson
3. Configure as suas ferramentas externas
O Hudson pode ser integrado com Subversion, CVS,
Maven, Ant…
Configure também o envio de emails
13. Plugins
O Hudson possui uma série de plugins que podem ser
instalados, aumentando a sua funcionalidade
14. Criando Plugins
Para criar plugins para o Hudson, é recomendado que você use
o Maven:
1. Configure o seu settings.xml conforme as instruções
no site do Hudson
2. Execute mvn hpi:create
3. Crie uma classe que seja subclasse da classe do ponto de
extensão que você precisa (Veja pontos de extensão disponíveis
em http://wiki.hudson-ci.org/display/HUDSON/Extension+points
)
4. Empacote executando mvn package
5. Instale
15. Integrando o Hudson com o ambiente
O Hudson pode ser uma excelente ferramenta para aumentar a
produtividade e tornar o ambiente de trabalho mais divertido
Exemplos:
- O Hudson envia emails para todos que
participaram de uma build quando a build quebra: maior
participação da equipe na solução
- Você pode implantar um Continuous Integration
Game
- Tente instalar dispositivos de Extreme Feedback
16. Extreme Feedback
decompressor this picture. ᆰ and
QuickTimeᆰ and a decompressor a
QuickTime
are needed to see needed to see this picture.
are
QuickTimeᆰ and a
decompressor
are needed to see this picture.
QuickTimeᆰ and a
decompressor
are needed to see this picture.
17. Integrando com dispositivos externos
A melhor forma de integrar o Hudson com um dispositivo
externo é através de suas saídas RSS
Simplesmente leia o arquivo RSS de tempo em tempo e gere a
saída necessária
18. Integrando com Sun Spots
Sun Spot se comunica com a base e lê o RSS do Hudson
Se alguma build falhou, mostra os leds em vermelho
Se todas as builds estão ok, mostra os leds em azul
A programação é feita em JavaME