2. Spoilers
O que é continuous Integration?
Conceitos utilizados no GitLab CI/CD
Exemplo
Conclusão
3. Sobre Mim
Élysson Mendes Rezende aka ElyssonMR
#SoftPlayer
Doteiro (pelo menos eu tento)
Aspirante em arquitetura de Software
4. Introdução
Ajuda na melhoria da qualidade do código
Manutenabilidade do sistema
Encontrar problemas com antecedência
Problemas para validação e deploy do sistema
5. O que é Continuous Integration
Tradução: Integração contínua
Metodologia de desenvolvimento em que cada entrega de trabalho é
integrada continuamente com o todo
Usada para identificar com antecedência problemas no código,
incompatibilidades e/ou impacto em partes não alteradas
Previne que cada feature incorporada “não atrapalhe o todo”
6. O que é Continuous Integration
Detecta falhas rapidamente
Abre portas para entregas em produção automatizadas
Não necessita de alguém para manualmente executar os testes, validar o
código e/ou gerar os artefatos necessários
Possibilita entregas de valor mais ágeis (inclusive é recomendado pelo Scrum)
7. O que é Continuous Delivery
Tradução: Entrega contínua
Habilidade de fazer com que todas as modificações entrem em produção ou
nas mãos dos usuários
Times de alto desempenho sempre fazem entregas frequentes
O custo é baixo porque não teremos que delegar o delivery para alguém
8. GitLab CI/CD
Ferramenta de Continuous Integrations incorporada ao GitLab
Permite diversas personalizações no processo
Fortemente integrado com o ecossistema do GitLab (pages, Docker Registry e
etc)
Multiplataforma e multi linguagem o/
12. GitLab CI/CD - Conceitos -> Stages
São os estágios do “pipeline”
Permitem criar uma ordem de execução dentro do “pipeline”
Os Jobs dentro de cada stage são executados em paralelo
Os Jobs do próximo stage não executam antes que os jobs do stage anterior
finalizem
Para saber mais: GitLab Stages
14. GitLab CI/CD - Conceitos -> Jobs
São as tarefas que serão executadas em cada estágio
Pode ser definido um número ilimitado de jobs por arquivo de configuração
Os Jobs são escolhidos pelos Runners para serem executados
É importante que cada Job seja executado sem depender e/ou interferir outro
(lembrando que cada Stage executa seus jobs em paralelo)
Para saber mais: GitLab Jobs
15. GitLab CI/CD - Conceitos -> Jobs
As palavras reservadas não podem ser utilizadas como nome dos Jobs
Examplo:
16. GitLab CI/CD - Conceitos -> Variáveis
São como variáveis de ambiente nos Runners
Podem ser definidas dentro dos arquivos de configuração (global ou local)
Podem ser privadas (neste caso são definidas no projeto ou no grupo)
Algumas variáveis são setadas pelo Runner quando o job é executado.
Exemplo: $CI_COMMIT_TAG
Para saber mais: GitLab Variables
18. GitLab CI/CD - Conceitos -> Runners
São máquina virtuais isoladas que executam os Jobs definidos nos Stages
Podem ser configurados no Windows, Linux e Mac
Os Runners podem ser específicos (executam uma tarefa por vez) ou
compartilhados (podem executar múltiplas tarefas)
É recomendado que não sejam instalados na mesma máquina que o GitLab
19. GitLab CI/CD - Conceitos -> Runners
Podemos registrar diversos Runners, no Kubernetes eles podem ser auto
escaláveis
Podemos adicionar tags nos Runners, por exemplo, um Runner com uma
versão paga de algum software (ex: Structure101)
21. Na Prática
Projeto: Products API
Vamos fazer um pequeno incremento em um projeto, depois iremos executar
o pipeline de CI/CD e analisar o que esta sendo executado. Ao final iremos
verificar a nova versão no Docker hub e também verificar que os testes
unitários vão gerar um HTML que será disponibilizado no Pages do GitLab
22. Conclusões
Cada vez mais precisamos fazer entregas frequentes
Quando um problema é detectado mais a frente em um processo ele acaba
custando mais caro para ser corrigido
Quanto mais passos automatizados melhor, muitos erros vão para produção
devido a serem executados por humanos
23. Para saber mais ;)
https://docs.gitlab.com/ce/ci/yaml/README.html
https://docs.gitlab.com/ce/ci/runners/README.html
http://missaodevops.com.br/docs/gitlabci_home.html
https://www.scrum.org/resources/use-scrum-continuous-delivery-build-right-
thing
https://continuousdelivery.com/