Ferramentas de integração contínua
As ferramentas que automatizam mudanças de código em projetos de software.
Max Rehkopf
Autor colaborador
A integração contínua (CI) é a prática recomendada ágil e de DevOps que permite que múltiplos desenvolvedores contribuam e colaborem em uma base de código compartilhada e em ritmo rápido. Sem a integração contínua, a colaboração do desenvolvedor é um processo manual tedioso de coordenação de merges e atualizações de código.
Pilares da Integração contínua
A integração contínua é desenvolvida com base nas práticas recomendadas de desenvolvimento de software Ágil e de DevOps, incluindo testes automatizados, controle de versão, automação de build e implementações automatizadas. Cada um desses pilares de integração contínua tem o próprio ecossistema de ferramentas e filosofias. Fornecedores de ferramentas de desenvolvimento de software começaram a oferecer integração contínua total como serviço, o que reúne estes pilares em um pacote holístico. Para entender melhor as ofertas empacotadas, a gente vai revisar a base
Gerenciamento da Versão de Controle da Fonte
É bem provável que o mais importante pilar da base da integração contínua, seja o gerenciamento da versão de controle da fonte. O qual é usado para comunicar e resolver conflitos de edição entre vários desenvolvedores trabalhando na mesma base de código. O gerenciamento da versão de controle da fonte vem em diversas ferramentas, sendo as mais populares o Git e o Subversion. Produtos de IC como serviço se concentram 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.
Ver solução
Crie e opere softwares com o Open DevOps
Produto discutido
Colabore, teste e implemente o código
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
1. Bitbucket Pipelines
Resumo: O Bitbucket Pipelines é uma ferramenta de CI integrada ao Bitbucket, um sistema de controle de versão em nuvem oferecido pela Atlassian. O Bitbucket Pipelines é uma próxima etapa fácil para habilitar a CI se o projeto já estiver no Bitbucket. O Bitbucket Pipelines é gerenciado como código, então você pode fazer o commit das definições de pipeline e lançamento de builds com facilidade. O Bitbucket Pipelines também oferece CD. O que significa que projetos criados com o Bitbucket Pipelines também podem ser implementados na infraestrutura de produção
Recursos:
- Fácil instalação e configuração
- Experiência unificada do Bitbucket
- Nuvem oferecida por terceiros
2. Jenkins
Resumo: Jenkins é uma ferramenta de CI veterana com um registro de rastreamento comprovado. Ele tem código aberto e é conduzido por atualizações da comunidade. O Jenkins é voltado para uma instalação na premissa. O Jenkins é uma ótima opção para quando a empresa precisar de suporte na premissa para lidar com clientes sigilosos como dados de conformidade HIPAA.
Recursos:
- Na premissa
- Open Source
- Ecossistema robusto de plug-ins/complementos
Site: https://jenkins.io/
3. AWS CodePipeline
Resumo: O Amazon Web Services é uma das provedoras de infraestrutura de nuvem mais dominantes no mercado. A empresa oferece ferramentas e serviços para todas as maneiras de tarefas de infraestrutura e desenvolvimento de código. O CodePipeline é a oferta de ferramenta de CI. O CodePipeline pode fazer interface direto com outras ferramentas existentes do AWS para proporcionar uma experiência perfeita do AWS.
Recursos:
- Nuvem completa
- Integração com o Amazon Web Services
- Suporte a plug-ins personalizados
- Controle robusto de acesso
Site: https://aws.amazon.com/codepipeline/
4. CircleCI
Resumo: O CircleCI é a ferramenta de CI que combina com o Github com facilidade, uma das ferramentas de hospedagem em nuvem de sistema de controle de versão mais populares. O CircleCI é uma das ferramentas de CI mais flexíveis, visto que é compatível com uma matriz de sistemas de controle de versão, sistemas de contêineres e mecanismos de entrega. O CircleCI pode ser hospedado na premissa ou usado por meio de uma oferta de nuvem.
Recursos:
- Acionadores de notificação de eventos de CI
- Otimização de desempenho para builds rápidos
- Depuração fácil por meio de SSH e builds locais
- Análises para medir o desempenho do build
Site: https://circleci.com/
5. Azure Pipelines
Resumo: O Azure é a plataforma de infraestrutura de nuvem da Microsoft, o equivalente na Microsoft ao Amazon Web Services. Como o AWS CodePipeline mencionado acima, o Azure oferece uma ferramenta de CI que se integra por completo ao pacote de ferramentas de hospedagem do Azure.
Recursos:
- Integração com a plataforma Azure
- Suporte à plataforma Windows
- Suporte a contêiner
- Integração com o GitHub
Site: https://azure.microsoft.com
6. GitLab
Resumo: O GitLab é uma ferramenta nova de CI que oferece uma experiência completa de DevOps. O GitLab foi criado com intenção de melhorar a experiência global do GitHub. O GitLab oferece uma experiência do usuário moderna com suporte a contêiner.
Recursos:
- Hospedagem na premissa ou na nuvem
- Teses de segurança contínuos
- Experiência do usuário fácil de aprender
Site: https://about.gitlab.com
7. Atlassian Bamboo
Resumo: Outra oferta de CI da Atlassian. Considerando que o Bitbucket Pipelines é uma opção de hospedagem na nuvem, o Bamboo oferece uma alternativa de auto-hospedagem.
Recursos:
- Melhor integração com o pacote de produtos da Atlassian
- Extenso marketplace de complementos e plug-ins
- Suporte a contêineres com agentes do Docker
- API de acionadores para funcionalidade IFTTT
Site: 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 CI mencionadas acima, como o Jenkins, podem ser instaladas na premissa. Ou seja, a equipe é responsável por configurar e gerenciar o sistema de CI na própria infraestrutura. 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 na premissa pode ser um requisito. Além disso, instâncias na premissa podem oferecer opções mais aprofundadas de personalização e configuração.
Instalar na premissa pode ser trabalho extra que não vai de acordo com as necessidades principais da empresa. As opções em nuvem terceirizam o gerenciamento da ferramenta de CI para um fornecedor externo. A empresa de hospedagem em nuvem lida com a disponibilidade, suporte e escala da ferramenta de CI, permitindo que a equipe se concentre nas necessidades principais da empresa. Talvez seja um grande benefício para equipes com orçamento limitado ou empresas menores que precisam se concentrar bastante nas metas de adequação do mercado de produtos.
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. A conteinerização é habilitada por ferramentas como o Docker e o Kubernetes. Ferramentas modernas de CI vão oferecer suporte para contêineres de integração no processo de CI/CD. Os contêineres resolvem o problema de "funciona na minha máquina". Garantindo que o código de aplicativo seja empacotado em uma captura de tela congelada das dependências de nível do sistema. Assim, você tem garantias de que quando o código da equipe for executado na ferramenta de CI, ele vai ser uma cópia do ambiente local. Essa ação elimina toda uma classe de itens de solução 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 moderna de CI é um requisito essencial para habilitar uma equipe de engenharia de alto desempenho. As equipes de engenharia podem otimizar a comunicação e velocidades de entrega usando uma ferramenta de CI. O mercado tem muitas ofertas de ferramentas de CI populares. Os principais conceitos a considerar quando for escolher uma ferramenta de CI são suporte do sistema de controle de versão, hospedagem na nuvem vs. na premissa, pipelines de implementação e integrações com aplicativos externos.
Leia os guias
Existem alguns guias e tutoriais que vão mais a fundo neste assunto e que podem ajudar você a começar implementar essas práticas.
Compartilhe este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.