Ferramentas de integração contínua

Max Rehkopf Max Rehkopf

A Integração contínua (IC) permite que múltiplos desenvolvedores contribuam e colaborem em uma base de código compartilhado em um ritmo rápido. Esta prática é essencial para equipes de alta velocidade em funções de software de alto risco. Sem a integração contínua, a colaboração do desenvolvedor é um processo manual tedioso de coordenar mesclas e atualizações de código.

Pilares da Integração contínua

A IC é construída sobre as melhores práticas de outros softwares incluindo teste automatizado, controle de versão, automação build e implementações automatizadas. Cada um destes pilares de integração contínua tem seu próprio ecossistema de ferramentas e filosofias. Fornecedores de ferramentas de desenvolvimento de software começaram a oferecer IC total como um serviço, o que reúne estes pilares em um pacote holístico. Para entender melhor as ofertas empacotadas, vamos revisar a base

Gerenciamento da Versão de Controle da Fonte

Provavelmente o mais importante pilar da base da Integração Contínua, o Gerenciamento da Versão de Controle da Fonte é usado para comunicar e resolver conflitos de edição entre múltiplos desenvolvedores trabalhando na mesma base de código. Gerenciamento da Versão de Controle da Fonte vem em uma variedade de ferramentas, sendo as mais populares Git e Subversion. Produtos de IC como um serviço centram-se em torno do sistema de controle de versão.

Teste Automatizado

Os mais sérios projetos de software incluem uma base de código adicional, que não é explicitamente responsável pelos recursos e produto do negócio. Esta base de código secundária é uma suíte de teste e age como um conjunto de declarações que garantem que a base de código primária está trabalhando corretamente sem bugs. Durante o desenvolvimento, estes testes são rodados por desenvolvedores para validar que este novo código não causou nenhuma regressão em recursos existentes. Estes casos de teste podem ser rodados também por ferramentas estranhas para automatizar este processo de validação. Produtos de serviço de IC irão rodar automaticamente os casos de teste para um projeto em eventos especificados pelo usuário. Geralmente, quando um desenvolvedor coloca o código usando o sistema de controle de versão, um evento irá disparar a execução automática de toda a suíte de teste.

Automação Build

"Builds" são os artefatos criados para fazer um instantâneo da versão de lançamento atual de um projeto de software. Builds são distribuídos para os usuários finais através de várias redes. Existe geralmente um conjunto de etapas com script que um projeto irá fazer para criar um artefato build. Ferramentas de IC ajudam a simplificar este processo de build com o uso de gatilhos automáticos do sistema de controle de versão. Um gatilho de exemplo seria quando um código novo é mesclado na ramificação de produção da base de código, carregar o build em um servidor remoto para que os usuários baixem.

Implementações automatizadas

Quando os builds estão prontos para serem distribuídos, eles passam por um processo de implementação. Dependendo do projeto, a implementação pode ter uma variedade de resultados. Por exemplo, projetos da web são implementados para servidores da web publicamente acessíveis. Durante esta implementação, o artefato que foi gerado na fase de build é copiado nos servidores da web. O processo de implementação para dispositivos móveis e desktop varia e pode envolver o carregamento para um 'repositório' para que os usuários possam baixar o app.

Comparação de ferramentas de Integração contínua

Bitbucket Pipelines

Resumo: Bitbucket Pipelines é uma ferramenta de IC diretamente integrada no Bitbucket, um sistema de controle de versão em nuvem oferecido pela Atlassian. Bitbucket Pipelines é uma próxima etapa fácil para habilitar IC se o seu projeto já está no Bitbucket.  Bitbucket Pipelines é gerenciado como código, então você pode confirmar facilmente definições de pipeline e lançamento dos builds. Bitbucket Pipelines, também oferece implementação contínua. Isto significa que projetos criados com Bitbucket Pipelines também podem ser implementados na infraestrutura de produção

 

 Recursos:

  • Fácil instalação e configuração
  • Experiência Bitbucket unificada
  • Nuvem por terceiros

 

Website: https://bitbucket.org/product/features/pipelines 

Jenkins

Resumo: Jenkins é uma ferramenta de IC veterana com um registro de rastreamento comprovado. Ele tem código aberto e é conduzido por atualizações da comunidade. Jenkins é destinado primariamente para uma instalação no local. Jenkins é uma ótima opção quando sua organização precisa de suporte no local para lidar com clientes sigilosos como dados de conformidade HIPAA.

 

 Recursos:

  • No local
  • Código aberto
  • Complemento robusto /ecossistema de plugin

 

Website: https://jenkins.io/

AWS CodePipeline

Resumo: Amazon Web Services é uma das mais dominantes provedoras de infraestrutura de rede no mercado. Eles oferecem ferramentas e serviços para todas as maneiras de tarefas de infraestrutura e desenvolvimento de código. CodePipeline é sua oferta de Ferramenta de IC. CodePipeline pode fazer interface diretamente com outras ferramentas existentes da AWS para fornecer uma experiência de AWS perfeita.

 

 Recursos:

  • Totalmente na nuvem
  • Integrada com Amazon Web Services
  • Suporte a plugin personalizado
  • Controle de acesso robusto

 

Website: https://aws.amazon.com/codepipeline/

 

CircleCI

Resumo: CircleCI é a Ferramenta de IC que faz par facilmente com Github, uma das mais populares ferramentas de hospedagem em nuvem de sistema de controle de versão. CircleCi é uma das mais flexíveis Ferramentas de IC, visto que suporta uma matriz de sistemas de controle de versão, sistemas de contêiner e mecanismos de entrega. CircleCi pode ser hospedada no local ou usada através de uma oferta de nuvem.

 

 Recursos:

  • Gatilhos de notificação de eventos de IC
  • Desempenho otimizado para builds rápidos
  • Depuração fácil através de SSH e builds locais
  • Análise para medir desempenho do build

 

Website: https://circleci.com/

 

Azure Pipelines

Resumo: Azure é a plataforma de infraestrutura de rede da Microsoft, o equivalente na Microsoft ao Amazon Web Services. Como o acima mencionado AWS CodePipeline, a Azure oferece uma Ferramenta de IC que se integra totalmente na suíte Azure de ferramentas de hospedagem.

 

 Recursos:

  • Integração com plataforma Azure
  • Suporte à plataforma Windows
  • Suporte a contêiner
  • Integração com Github

 

Website: https://azure.microsoft.com

 

Gitlab

Resumo: Gitlab é uma nova Ferramenta de IC que oferece uma experiência total em DevOps. A Gitlab foi criada com intenção de melhorar a experiência global do Github. Gitlab oferece uma UX (experiência do usuário) moderna com suporte a contêiner.

 

 Recursos:

  • Hospedagem no local ou em nuvem
  • Teste de segurança contínuo
  • UX fácil de aprender

 

Website: https://about.gitlab.com

 

Atlassian Bamboo

Resumo: Outra oferta de IC da Atlassian. Enquanto o Bitbucket Pipelines é puramente uma opção hospedada em nuvem, Bamboo oferece uma alternativa auto-hospedada.

 

 Recursos:

  • Melhor integração com suíte de produtos Atlassian
  • Um extenso mercado de complementos e plugins
  • Suporte a contêiner com agentes Docker
  • Gatilho API para funcionalidade IFTTT

 

Website: https://www.atlassian.com/software/bamboo

 

 

Qual a melhor ferramenta de IC para sua empresa?

Ao escolher uma ferramenta de IC para sua equipe, existem alguns fatores importantes para tomada de decisão a considerar.

Suporte ao Sistema de Controle de Versão

O pilar central de um sistema de Integração Contínua/Implementação Contínua é o suporte e integração do Sistema de Controle de Versão (VCS) subjacente. Os VCS’s mais populares são Git, Subversion, Mercurial e Perforce. Ferramentas de IC na nuvem podem oferecer suporte para alguns ou todos estes VCS’s. É fundamental escolher uma ferramenta de IC que oferece suporte para o VCS do seu projeto.

No local x Na nuvem

Algumas das Ferramentas de IC mencionadas acima, como a Jenkins, podem ser instaladas no local. Isto significa que sua equipe é responsável por configurar e gerenciar o sistema de IC em sua própria infraestrutura. Isto pode ser benéfico por razões de privacidade e segurança. Por exemplo, se você tem preocupação com privacidade de dados do cliente para atender padrões de conformidade, instalar no local pode ser um requisito. Além disso, instâncias no local podem oferecer opções mais aprofundadas de personalização e configuração.

Instalar no local pode ser trabalho extra que não está em linha com suas necessidades de negócios principais. As opções em nuvem terceirizam o gerenciamento da Ferramenta de IC para um fornecedor externo. A empresa de hospedagem em nuvem lida então com tempo de funcionamento, suporte e dimensionamento da Ferramenta de IC, permitindo que sua equipe se concentre nas necessidades de negócios principais. Este pode ser um grande benefício para equipes com orçamento limitado ou empresas menores que precisam concentrar-se agressivamente nas metas de adequação do mercado do produto.

Suporte a contêiner

Conteinerização é uma tendência de Desenvolvimento moderno de software. A conteinerização permite a distribuição de uma cópia imutável, repetível e isolada de um aplicativo. Ela é habilitada por ferramentas como Docker e Kubernetes. Ferramentas modernas de IC irão oferecer suporte para contêineres de integração no processo de IC/Implementação Contínua. Os contêineres resolvem o problema de "funciona no meu computador". Garantindo que este código de aplicativo é empacotado em um instantâneo congelado das dependências de nível do sistema. Isto fornece garantias de que quando o código de sua equipe é executado na Ferramenta de IC, ele é uma cópia do ambiente local. Isto elimina toda uma classe de problemas de paridade de ambiente que surgem sem os contêineres.

Integrações de plugins e terceiros

As ferramentas de IC se tornam ainda mais úteis quando integradas com o resto de sua pilha de tecnologia. Análises sobre eficiência e desempenho da equipe de engenharia podem ser coletadas de ferramentas de IC. Aplicativos de planejamento de sprint podem ser conectados a ferramentas de IC para atualizar automaticamente o status do sprint quando o código foi entregue. Estas integrações podem ser usadas para orientar KPIs e roteiros de equipes de engenharia.

Comece a usar a IC

Uma ferramenta de IC moderna é um requisito crítico para habilitar uma equipe de engenharia de alto desempenho. Equipes de engenharia podem otimizar sua comunicação e velocidades de entrega usando uma ferramenta de IC. O mercado tem muitas ofertas de ferramentas de IC populares. Os conceitos pilares para considerar quando escolher uma ferramenta de IC são suporte do sistema de controle de versão, hospedagem na nuvem no local x nuvem, pipelines de implementação e integrações de aplicativo externas.