Comparativo de Ferramentas

Propaganda
Comparativo de Ferramentas de Integração Contínua e de Build
(Maven x Gradle)
É possível contar com várias opções de ferramentas de integração à
disposição. Para descobrir a mais adequada é necessário conhecer o projeto e
seus requisitos. Em busca de colher informações relevantes para a decisão de
qual ferramenta usar foi montado o seguinte comparativo utilizando do quadro
de servidores de IC (Integração Contínua) mais populares de 2013 segundo a
comunidade Rebellabs.
Jenkins (“comunidade”)
É a principal ferramenta de integração contínua de código
aberto atualmente, onde ocupa a primeira posição no
DevOps ferramentas na seção de integração, por ser de
código aberto e modular (embora a sua funcionalidade de
base line seja muito limitada, existem mais de 1.000 plug-ins
que estendem os recursos de Jenkins e fornecem
integrações adicionais).
Jenkins é uma ferramenta baseada em Java e todas as
extensões e plug-ins também são desenvolvidos em Java. Dada a plataforma
Java Runtime, o Jenkins pode ser instalado em qualquer sistema operacional
em que o Java é executado.
Hudson (“empresa”)
Tem uma certa historia que envolve o Jenkins com essa
ferramenta, uma vez que o projeto do Jenkins foi uma divisão
do Hudson após uma disputa com a Oracle em questões
relacionadas a marca registrada e outros fatores. É possível
reparar varias similaridades entre os dois, desde funcionalidades a aparência,
mas, em teoria, uma questão relevante se faz ao Hudson ter o suporte da
Oracle.
CruiseControl
É o servidor de integração contínua mais maduro fora do escopo
recente, e provavelmente, uma das soluções de integração
contínua mais antigas. O seu lançamento foi a mais ou menos
15 anos atrás. O CruiseControl foi originalmente desenvolvido
como um quadro para controlar builds, testes e ciclos de vida de
desenvolvimento de software.
CruiseControl é baseado em Java, Há também implementações em .NET e
rubi.
Bamboo
O bamboo é um servidor de IC (Integração Contínua) da
Atlassian. É livre para projetos de código aberto, mas as
organizações comerciais são cobradas com base no
número de agentes de build necessários. Também faz uso
de vários plug-ins para personalizar o seu uso, suas
funcionalidade são muito próximas das ferramentas anteriores, mas como é um
produto Atlassian, a integração do JIRA e Clover, a cobertura de código pela
ferramenta se torna fácil com bambu.
Team City
Baseado em Java e da JetBrains. Foi lançado em 2 de Outubro
de 2006. TeamCity é um software comercial sob licença
proprietária. Tem disponível uma licença Freemium para até 20
configurações de compilação e 3 licenças de construção agente
livre está disponível. Projetos de código aberto podem solicitar uma licença
livre.
Travis CI
Ferramenta de código aberto para todos os projetos
hospedados no GitHub(projetos de código aberto).
Desde que está hospedado, ele não depende de
qualquer plataforma. Ele é configurado usando arquivos travis.yml que contêm
as informações. Ele suporta uma variedade de diferentes linguagens e a
configuração de compilação para cada um deles é bem documentada. Travis
usa as máquinas virtuais para construir aplicações. Se você tem um repositório
privado ou você precisa executar mais de uma tarefa ao mesmo tempo,
existem vários planos de assinaturas mensais.
Comparações
Tabela Comparativa elaborada com os dados encontrados na Wikipédia que
leva em consideração a plataforma onde é executada, sua licença de
distribuição e utilização, quais são os Builders suportados, os meios de notificar
o desenvolvedor e as ferramentas de integração e IDEs
Ferramenta
Plataforma
Jenkins –
Hudson
Web
container
Bamboo
Web
container
CruiseControl
Multi
Plataforma
TeamCity
Travis CI
Web
container
Hospedado
Licença
Builders
MSBuild, Nant, Ant,
Maven 2, Kundo, Cmake,
Open
Gant, Gradle, Grails,
Source
Phing, Rake, Ruby, SCons,
(CC/MIT)
Python, shell script,
command-line
MSBuild, Nant, Visual
Studio, Ant, Maven,
Proprietário Custom script, commandline tool, Bash, Xcode,
Phing, Grunt
BSD-style
NAnt, Rake, Xcode, Phing,
Apache Ant, Maven
Notificação
Ferramentas de
Integração e IDEs
Android, Email,
Google Calendar, IRC,
XMPP, RSS, Twitter,
Slack, Catlight,
CCMenu, CCTray
Eclipse, IntelliJ IDEA,
NetBeans, Bugzilla, Google
Code, Jira, Bitbucket,
Redmine, FindBugs,
Checkstyle, PMD e Mantis,
Trac, HP ALM
XMPP, Google Talk,
Email, RSS, Remote
API, HipChat
IntelliJ IDEA, Eclipse,
Visual Studio, FishEye, Jira,
Clover, Bitbucket, GitHub
Email, CCTray
Eclipse
MSBuild, NAnt, Visual
Studio, Ant, Maven 2-3,
Email, XMPP, RSS,
Proprietário
Gradle, IntelliJ IDEA, Rake, IDE, SysTray
FxCop, command-line
Open
Source
(MIT)
Ant, Maven, Gradle, C,
C++, Clojure, Elixir, Erlang,
Go, Groovy, Haskell, Java,
Node.js, Perl, PHP, Python,
Ruby, Rust, Scala,
Smalltalk
Eclipse, Visual Studio,
IntelliJ IDEA, RubyMine,
PyCharm, PhpStorm,
WebStorm Jetbrains
Youtrack, Jira, Bugzilla,
FishEye, FindBugs, PMD,
dotCover, Ncover
Email, Campfire, HipC
hat, IRC, Slack,
GitHub, Heroku
Catlight, CCMenu,
CCTray
A partir do estudo em Comparison between Continuous Integration tools, por
DENIS POLKHOVSKIY(2016), é possível obter um quadro de decisão para
algumas ferramentas de integração continua, onde são comparadas a partir
dos resultados obtidos em avaliações de critérios.
A tabela foi adaptada selecionando as ferramentas aqui citadas anteriormente.
* indica que a funcionalidade é limitada nesse critério
Ferramentas de automação de Build
Podendo ser agregadas ao servidor de integração contínua às ferramentas de
automação de build são usadas para automatizar o processo de compilação,
através da automatização de tarefas e execução dos testes unitários e de
aceitação.
São exemplos de ferramentas o Gradle e Maven
Maven
Ferramenta utilizada principalmente para projetos Java, também pode ser
usado para construir e gerenciar projetos escritos em C #, o Ruby, Scala, e
outras línguas. Um arquivo XML descreve o projeto de software que está sendo
construído, suas dependências em outros módulos externos e componentes, a
ordem de construção, diretórios e plug-ins necessários.
Gradle
O Gradle combina partes boas do Ant e Maven, ambas ferramentas de
automação de build. Ele tem poder e flexibilidade do Ant e com ciclo de vida do
Maven juntamente com facilidade de uso.
Lançada em 2012 e ganhou muita atenção em um curto período de tempo.
Exemplo disso é o Google adotar o Gradle como a ferramenta de construção
padrão para o sistema operacional Android.
O Gradle não usa XML. Em vez disso, ele tinha seu próprio Domain-Specific
Language - DSL baseada em Groovy (uma das linguagens JVM - Java Virtual
Machine)
Maven x Gradle
Um estudo comparativo disponível no Rebellabs que provem relatórios técnicos
gratuitos á comunidade de desenvolvedores realizou a comparação entre o
Gradle, Ant +Ivy e Maven, levando em consideração vários aspectos para
métricas relacionadas ao suporte para IDEs, servidores de aplicações (APP),
servidores de Integração Contínua e por fim uma tabela com classificações de
1(muito ruim) a 5(muito bom). Os dados relacionados ao Ant + Ivy foram
descartados pelo interesse na comparação exclusiva do Maven com o Gradle.
Referências
DEVELOPER PRODUCTIVITY REPORT 2013 – HOW ENGINEERING TOOLS
& PRACTICES IMPACT SOFTWARE QUALITY & DELIVERY, Jevgeni
Kabanov (2013). Disponível em:<https://zeroturnaround.com/rebellabs/
developer-productivity-report-2013-how-engineering-tools-practices-impactsoftware-quality-delivery/11/ >. Acesso em 21 de outubro de 2016.
TOP 8 CONTINUOUS INTEGRATION TOOLS, Vladimir Pecanac (2016).
Dispoinível em: <https://dzone.com/articles/top-8-continuous-integration-tools>.
Acesso em 21 de outubro de 2016.
COMPARISON OF CONTINUOUS INTEGRATION SOFTWARE. Disponível
em:<https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_softw
are/ >. Acesso em 24 de outubro de 2016.
JENKINS. Disponível em: <https://wiki.jenkins-ci.org/display/JENKINS/
Meet+Jenkins >. Acesso em 24 de outubro de 2016.
THE ULTIMATE JAVA BUILD TOOL COMPARISON: GRADLE, MAVEN, ANT
+ IVY, Oliver White (2014). Disponível em: https://zeroturnaround.com/
rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-mavengradle-and-ant-ivy/ . Acesso em 21 de outubro de 2016.
HUDSON. Disponível em: <http://wiki.eclipse.org/Hudson-ci/Meet_Hudson >.
Acesso em 24 de outubro de 2016.
CRUISECONTROL. Disponível em: <http://cruisecontrol.sourceforge.net/ >.
Acesso em 25 de outubro de 2016.
BAMBOO. Disponível em: <https://confluence.atlassian.com/bamboo/
understanding-the-bamboo-ci-server-289277285.html >. Acesso em 25 de
outubro de 2016.
TRAVIS-CI. Disponível em: <https://www.infoq.com/news/2013/02/travis-ci/ >.
Acesso em 25 de outubro de 2016.
JETBRAINS. Disponível em: <https://www.jetbrains.com/teamcity/features/
continuous_integration.html >. Acesso em 25 de outubro de 2016.
GRADLE. Disponível em: <https://gradle.org/whygradle-build-automation/ >.
Acesso em 26 de outubro de 2016.
MAVEN. Disponível em: <https://maven.apache.org/index.html >. Acesso em
26 de outubro de 2016.
Download