Bom, a algum tempo eu resolvi começar a usar o Maven 2, e também com o crescimento da equipe, comecei a sentir a necessidade de algum sistema de integração continua.
Pela falta de tempo habitual, não pude testar todos os sistemas disponiveis no mercado, segue a lista dos que eu consegui testar:
O Continuum entrou na lista por que é o sistema de integração continua default do Maven 2.
O Cruise Control por que eu lembrei do nome dele na hora.
e o Team City por que tem uma integração muito boa com o IntelliJ IDEA, que eu acabei de começar a usar depois de ganhar uma licensa personal. (yeap, to adorando o brinquedo novo, depois que eu voltar da lua de mel, escrevo um review), e ja que com a licensa do IDEA vem também uma licensa do TeamCity, resovi experimentar.
Os seguintes itens foram Avaliados em cada um deles:
Instalação:
Aqui houve um empate técnico, a instalação de todos eles é praticamente igual …
Todos tem um bundle para simplesmente download que ja vem com um application server embutido, e também um .war para deploy em um application server ja existente.
No caso do Team City, caso seja feito download do War, é necessário instalar manualmente um agente depois, mas na instalação padrão o Agente ja vem junto e configurado.
Mas a instalação de todos é muito fácil.
Sem muitos comentários por aqui.
Cruise Control= 1
Continuum= 1
Team City= 1
Facilidade de Uso:
Bom, aqui com certeza não houve empate técnico …
O Cruise Control tem um problema grave de falta de interface de administração, é necessário configurar ele via um arquivo XML, achei isto terrivel.
tudo bem, existe uma interface para configuração SWING para ele, mas mesmo esta interface é muito pouco intuitiva.
Já o continuum tem uma interface de administração muito boa, a unica coisa que não gostei, é que preciso primeiro cadastrar um projeto, para depois poder editar ele para informar o usuário e senha do controle de versões.
O Team City a interface é bastante intuitiva, os projetos são cadastrados em um passo a passo, no final do cadastro esta tudo funcionando, achei excelente!
Cruise Control= 1
Continuum= 2
Team City= 3
Suporte a sistemas de build:
Aqui a briga é feia, quer dizer, nem tanto pra falar a verdade …
Continuum: Maven 2, Maven 1, Ant e Shell Script
Cruise Control: Ant, NAnt, Maven 1, Maven 2, Shell Script
Team City: Ant, NAnt, Maven 1, Maven 2, IntelliJ IDEA project, Visual Stusio 2005 solution, MSBuild
Neste caso como eu uso o Maven 2 e as vezes um ANT, todos resolvem o meu problema, então mais um ponto para cada um
Cruise Control= 2
Continuum= 3
Team City= 4
Suporte a Sistemas de controle de versão:
Aqui a briga também é bonita, e também todos atendem as minhas necessidades (Subversion e as vezes CVS)
Continuum: Clearcase, CVS, Local, Perforce, Starteam, Subvesion, Visual Source Safe
Cruise Control: AccuRev, AlienBrain, ClearCase, CVS, Perforce, PVCS, StarTeam, Subversion, Visual Source Safe
Team City: CVS, Perforce, Subversion
Novamente como no item anterior todos atendem as minhas necessidades, então mais um ponto para cada um.
Cruise Control= 3
Continuum= 4
Team City= 5
Integração com IDEs:
Bom, todos eles podem ser monitorados a partir de qualquer IDE, o unico com um grande diferencial na integração é o Team City, que apenas quando integrado com o IntelliJ IDEA tem um recurso maravilhoso chamado Remote Run, que é quando o Team City vai compilar todo o código fonte para verificar como esta a situação, e tem também o Late Checkin, que é quando o commit é feito para o Team City, e este vai commitar no controle de versões apenas se o build estiver OK e todos os testes passarem.
Adorei estas duas features novas
Cruise Control= 3
Continuum= 4
Team City= 6
Builds Distribuidos:
Aqui é mais um ponto, que eu realmente não preciso por enquanto, mas só achei esta feature no Team City.
Ele tem o conceito de Agentes de BUILD, ou seja, o Team City é intalado em uma maquina, mas os builds são executados em outras maquinas, e você pode adicionar quantos agentes quiser, por exemplo um só para compilar código .NET e outro só para compilar código Java.
(tah, isto aqui ta começando a parecer propaganda do Team City, vou cuidar mais …)
Neste item o Team City não vai ganhar mais um ponto por que eu não vou usar isto tão cedo, mas vamos combinar que é um baita recurso, principalmente para grandes empresas.
Controle de Acesso:
No Cruise Control não encontrei recursos de controle de acesso.
No Continuum tem controle de acesso simples mas suficiente para o que eu preciso (usuários administradores e usuários comuns)
No Team City praticamente o mesmo controle de acesso do Continuum mas com pouca coisa a mais.
Aqui só o Cruise Control não ganha pontos.
Cruise Control= 3
Continuum= 5
Team City= 7
Notificações:
Novamente um empate técnico, todos eles avidam por e-mail, Instane Messenger (normalmente Jabber, mas o Cruise Control e o Continuum avisam por MSN também), e também atravéz da integração com a IDE.
O Team City e o Continuum eu encontrei até um tray bar notifier para windows.
Cruise Control= 4
Continuum= 6
Team City= 8
Parecer Final:
Vou acabar ficando com o Continuum, ja que tanto ele como o Team City atendem as minhas necessidades, e pelo menos por enquanto eu não necessito das features adicionais to team city, mas para equipes muito grandes com builds muito demorados, o sistema de Agentes do Team City pode ser uma diferença que vale a pena ser considerada.
E vou continuar usando o Team City para brincar na minha maquina, o Late Commit é uma feature maravilhosa, pena que a empresa ainda não tem caixa pra colocar o Team City para todos os usuários …
Contribuições:
Escolhi qual vai ser o sistema de Integração continua que eu vou usar, mas isto pode ser alterado, como eu disse não tive tempo de testar muitos, então por favor, comentem as suas experiências com estes ou outros sistemas de Integração Continua, e aceito sugestões.
PS.: eu sei que não é apenas utilizando um sistema que se pode dizer que esta fazendo “Integração Continua”, vou fazer uma palestra sobre isto no SEPAI (Semana Paraense de Informatica) no dia 26/10, depois posto os slides por aqui e também escrevo algum post sobre o assunto, se tiverem material sobre isto ou algum link sobre o assunto agradeço qualquer dica para melhorar a palestra
Um dos que havia gostado bastante era o beetlejuice… que era prático para instalar e configurar o projeto. Sistema de administração bonito e resolve o problema… meu problema era: integração contínua, isto é, não integrar de 5 em 5 horas, não integrar duas vezes por dia. O que precisava era que a cada término de commit, o sistema fosse verificado, e ele me deu isso (assim como outros que você mencionou)
[Tradutor]
não cheguei a testar este, mas dei uma olhada no site agora e ele parece bem legal
)
mas se fosse par pagar por algum eu ainda ficaria com o Team City, achei espetaculares as duas funcionaldiades que ele apresenta, que não encontrei em nenhum outro, o Late Commit e o Server Run, alem dos builds distribuidos que para empresas grandes com muitos projetos valem a pena também (acho que to ficando chato, mas eu realmente gostei destes dois brinquedinhos novos
[Tradutor]
não testei o buildix ainda, até por que não tinha uma maquina só pra rodar isto …
mas a um tempo atraz eu testei o TRAC e não gostei muito dele, e o Cruise Control também não me agradou muito, a interface dele é muito pouco intuitiva, então por este motivo, acabei desconsiderando o buildix, ja que ele é baseado no cruise control e no TRAC …
mas para quem gosta destas duas ferramentas, o Buildix é muito bom
[Tradutor]
[...] Melhores do mês Sistemas de Integração Continua * * * * * 2 votosSpring-Annotation 1.0 quase saindo do forno! a versão 1.0 sai dia 23/10/2006 * * * * * 2 votosNão seguir as proprias regras sempre da porcaria (problemas de aplicação travando) * * * * * 1 votosOpenSSO – Solução para gerenciamento de identidades open source * * * * * 1 votosTo Maven or not To Maven 2.0 * * * * * 1 votosEclipse 3.2 + Callisto + JSF * * * * * 1 votosO estilo VooDoo de consultrias * * * * * 1 votosIntelliJ IDEA – é to testando o brinquedo novo * * * * * 1 votosRemovendo todos os comentários de mais de 1000 .java de uma só vez … * * * * * 1 votosestou me apaixonando pelo java.util.concurrent * * * * * 1 votos [...]
[Tradutor]
[...] Sistemas de Integração Continua [...]
[Tradutor]
[...] tem impacto direto na integração continua, pois os integradores continuos usam estes xmls para fazer seu trabalho, isso será um problema que terei, mas espero achar um que [...]
[Tradutor]