A Wikipedia fornece resumos muito bons da maioria desses termos. Aqui está a minha opinião sobre eles:
A automação de compilação está automatizando como o software é compilado, em vez de invocar manualmente o compilador. Isso seria realizado através de ferramentas como, por exemplo, Make ou Ant .
A automação de implantação está levando o software construído e implantando ou instalando-o em um sistema de teste ou produção.
Integração contínua significa que um processo automatizado construa seu software continuamente enquanto os desenvolvedores fazem check-in do código e executam testes de unidade para garantir que o código ainda funcione. Por exemplo, a cada 15 a 30 minutos que um servidor pode acordar, verifique o VCS para novos check-ins, atualize e construa o projeto se alguma alteração foi feita. Além de executar as etapas de compilação, esta também é uma ótima oportunidade para executar testes de unidade automatizados e verificações de qualidade de código .
A entrega contínua é uma combinação de todos os conceitos anteriores, nos quais a criação do software também é implementada em um sistema de teste, opcionalmente com testes realizados e relatórios gerados.
No mínimo, você precisa ter automação de compilação, ou seja, um script de compilação de algum tipo. Isso permite que você clique em um botão ou emita um comando para criar seu projeto. O benefício disso é reduzir os erros das etapas de execução manual. Ambientes de construção complexos podem envolver a geração de código (pense em DAOs de configurações, código de interface como JAXB ), compilação de código, empacotamento, personalização de metadados etc. Com muitas coisas para fazer, você precisa de uma lista de verificação: por que não fazer a lista de verificação ser seu script de construção e use uma ferramenta para executá-lo? Reduz erros e fornece consistência.
O próximo passo é o CI: é realmente bom ter, mas não é estritamente necessário. Ajuda a identificar problemas de construção desde o início. Se você tiver vários desenvolvedores fazendo check-in de código ao longo do dia e talvez não sincronizando seus próprios espaços de trabalho constantemente, existe o risco de que suas alterações interfiram entre si. Refiro-me especificamente a erros de código estático, não a conflitos de controle de versão. Um servidor de criação de IC reduzirá esse risco.
Finalmente, temos as etapas de implantação. A idéia aqui é economizar tempo e reduzir erros ao implantar software manualmente. Assim como a automação de compilação, existem centenas de maneiras de estragar uma implantação de software. Pessoalmente, fiquei até tarde no escritório para corrigir problemas de implantação manual em muitas ocasiões, quando precisamos de um sistema funcional para os clientes que chegarem amanhã no local. A automação de vários sistemas apresenta mais riscos: em vez de um sistema possivelmente travar ou apresentar erros estranhos, agora temos váriossistemas que podem dar errado. No entanto, esse risco é muito menor do que alguém perdendo uma etapa de uma lista de verificação ou emitindo o comando errado e estragando uma implantação. Se tiver sorte, você pode simplesmente restaurar um backup do banco de dados e reiniciar, se tiver azar, um erro poderá causar o funcionamento incorreto do sistema. É um defeito de software? O técnico não definiu uma configuração corretamente? Isso leva tempo para diagnosticar, tempo que você pode não ter e tempo que não precisa ser gasto se você automatizar o processo.