Ao longo dos anos a área da programação e testes de software tem vindo a evoluir com a premissa de se construir melhor e mais fiável software, assim como disponibilizar atualizações de uma forma mais rápida. É aqui que entra o Continuous Integration (CI) e Continuous Delivery (CD).
CI/CD: Uma mais rápida entrega do software e não só…
Quando se fala em Continuous Integration (CI) e Continuous Delivery (CD) estamos a falar num conjunto de processos de suporte ao desenvolvimento de software. Mas mais que uma metodologia, falamos de uma abordagem que introduz a automação e monitorização, em diferentes estágios, do ciclo de desenvolvimento de um software. O objetivo é melhorar o processo de desenvolvimento de software, tornando-o mais seguro para suportar entregas e atualizações mais rápidas (mais ágeis), minimizando a possibilidade de erros durante todo o processo.
O processo começa com o desenvolvimento de uma nova funcionalidade ou até mesmo da resolução de um bug.
A Integração Contínua (CI) é o processo de automatizar e integrar alterações e atualizações de código (branch ou trunk), dos membros da equipa, ao código principal (main), durante o desenvolvimento de software. Desta forma, os programadores podem solicitar uma branch para trabalhar numa cópia completa do código, sem interferência no código principal main e de outros programadores. Uma das vantagens deste modelo, é a identificação mais antecipada de erros no código.
Neste processo, as ferramentas de automatização confirmam que o código-fonte do software é válido e não apresenta erros antes de ser integrado no código principal (o que ajuda a detetar bugs e acelerar novos lançamentos). Ferramentas como o GitHub (Java, PHP, etc.) ou TFVC (.Net, etc.) são fundamentais para garantir o processo de integração, versioning e histórico das alterações.
A Entrega Contínua (CD) é a capacidade de colocar um novo software em produção várias vezes por dia, automatizando a entrega de apps para ambientes de infraestrutura. O CD faz parte do DevOps (uma cultura que promove a colaboração entre todas as funções envolvidas no desenvolvimento e na manutenção de software), o que ajuda a reduzir o ciclo de vida de desenvolvimento de um software. Ferramentas como o Test Manager (Microsoft), Selenium e Cucumber são utilizadas na automação dos testes. Este processo ajuda a garantir que as correções e melhorias chegam aos utilizadores mais rapidamente.
Depois ainda existe Continuous Deployment, que é um processo, sem intervenção humana, que realiza todas as validações anteriores para disponibilizar a nova alteração, em produção, de forma automática.
O objetivo desses estágios no desenvolvimento de software é a possibilidade de realizar facilmente pequenas alterações no código (de forma contínua), ao mesmo tempo que se cria, testa e entrega o software com maior rapidez, eficiência e segurança