Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Cassiane-Melissa opened this issue May 3, 2020 · 3 comments
Open

Comments

@Cassiane-Melissa
Copy link

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.

@pexotos
Copy link

pexotos commented Jun 14, 2020

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.

@tchfer
Copy link

tchfer commented Jul 13, 2020

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

@ThiagoBarradas
Copy link
Owner

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 ThiagoBarradas changed the title Digital inovation One Diferença e definição de CI & CD - Digital Innovation One Jul 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants