jsonmasking icon indicating copy to clipboard operation
jsonmasking copied to clipboard

Diferença e definição de CI & CD - Digital Innovation One

Open Cassiane-Melissa opened this issue 4 years ago • 3 comments

Olá, estou fazendo o curso que você deu aula, e pode parecer estupido, mas eu não entendi muito bem para o que ser CI/CD, não entendi se é só um nome para várias tarefas ou se é uma etapa da construção de um software, por exemplo.

Cassiane-Melissa avatar May 03 '20 22:05 Cassiane-Melissa

Olá, estou fazendo o curso que você deu aula, e pode parecer estupido, mas eu não entendi muito bem para o que ser CI/CD, não entendi se é só um nome para várias tarefas ou se é uma etapa da construção de um software, por exemplo.

Olá. Também estou fazendo o curso então não me julgue se estiver errado mas vou tentar te responder pela minha compreensão do conteúdo. Ambos são metodologias de release (lançamento) do software. Quando você vai lançar uma nova versão do seu software, todo cuidado é pouco para que você não lance uma versão com falhas. Esses processos, CI e CD, são processos para garantir o mínimo de qualidade em um release. Para manter essa qualidade o release passa por uma série de processos, por exemplo os processos de testes, onde, se algo falhar o release não será aceito. Por fim, a única diferença entre os dois é que no CI existe uma pessoa que, ao final de todo o processo, decide qual o momento para lançar essa release. Já no CD após os processos serem executados com sucesso a release é lançada de imediato.

pexotos avatar Jun 14 '20 16:06 pexotos

Exatamente! Não tem como ser mais clara a explicação. Abraço

tchfer avatar Jul 13 '20 03:07 tchfer

Precisamos entender as definições para CI e CD, que podemos definir com a trigger (gatilho) de início, automação e resultado final;

CI = Continuous Integration

  • Gatilho: uma mudança no código (commit no github por exemplo);
  • Automação: Build, execução de testes unitários, processos de qualidade e análise de código / linter.. etc
  • Resultado: Um artefato prontinho para a distribuição. (O fim do CI, quando executado com sucesso, é ter o artefato disponível.

CD = Continuous Delivery

  • Gatilho: um novo artefato (pode ter algumas condições como, artefatos geradores pelo CI na branch develop);
  • Aprovação: Requer aprovação de alguem antes de uma ou mais etapas;
  • Automação: Etapas como deploy em um ou mais ambientes, execução de teste de integração, notificações, etc;
  • Resultado: Deploy feito, release distribuida.

CD = Continuous Deployment

  • Gatilho: um novo artefato (pode ter algumas condições como, artefatos geradores pelo CI na branch develop);
  • Aprovação: Não request aprovações, o processo acontece automaticamente;
  • Automação: Etapas como deploy em um ou mais ambientes, execução de teste de integração, notificações, etc;
  • Resultado: Deploy feito, release distribuida.

Repare que CI ta ligado com a validação e construção do artefato, enquanto o CD está ligado com a distribuição da release. Dentro do CD, podemos dividir entre Continuous Delivery e Continuous Deployment. A diferença está somente que um requer uma intervenção (aprovação) humana.

Essa imagem, também presente no curso, ajuda a entender um pouco também!

image

Espero que tenha ajudado e obrigado também pela contribuição na explicação @pexotos

Abs

ThiagoBarradas avatar Jul 29 '20 17:07 ThiagoBarradas