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.