DEV Community

Cover image for Uma introdução ao GitLab CI/CD
LeonardoMarques
LeonardoMarques

Posted on

Uma introdução ao GitLab CI/CD

Conceitos básicos sobre CI/CD

Integração Contínua
Resumidamente, é uma prática de desenvolvimento de software em que os desenvolvedores, de forma regular e confiável, juntam suas alterações de código em um repositório central. Depois disso, builds e testes são executados.

Este processo pode ser muito trabalhoso se feito de forma manual. Por isso, hoje utilizamos diversas ferramentas para automatizar esse processo, sendo o Gitlab uma delas. Dessa forma, é possível criarmos scripts que vão “buildar” e “testar” nossa aplicação automaticamente sempre que um desenvolvedor fizer um “push” no repositório que especificarmos.

Entrega Contínua

Segundo a documentação do Gitlab, é um passo além da integração contínua. Onde sua aplicação não é somente “buildada” e testada, mas também “deployada” continuamente. Mas você ainda realiza o deploy manualmente.

Implantação Contínua

Segundo documentação do Gitlab, é outro passo além da Integração Contínua onde o deploy ocorre de forma automática sem intervenção humana.

Por fim, Segundo Lucas Gertel:

Juntas, essas práticas conectadas costumam ser chamadas de “𝗖𝗜/𝗖𝗗 𝗣𝗶𝗽𝗲𝗹𝗶𝗻𝗲”. Eles geralmente são mantidos usando a abordagem DevOps ou SRE. Existem vários benefícios de ter pipelines de CI/CD, como melhor colaboração e qualidade de código, bem como sistemas mais ágeis e confiáveis.

Agora vamos entender na prática como construir um simples pipeline com Gitlab.

Gitlab

O que é o Gitlab?
Segundo meu entendimento: é uma plataforma com ferramentas e soluções de DevSecOps que busca ajudar as empresas a entregar software de maneira mais rápida através da automatização de processos.
Para mais informações, sugiro visitar o site oficial: https://about.gitlab.com/

Conceitos de CI/CD no Gitlab

pipeline: É um fluxo de etapas chamadas de stages que executam um ou mais jobs. A ideia é que quando realizamos um ‘push’ para alguma branch mapeada, esse pipeline vai ser disparado pelo Gitlab e vai realizar todas as etapas necessárias para entregar essas alterações no ambiente em questão, tudo de forma automática.
stage: é uma agregação lógica de jobs. Exemplos de stages: build, test.
job: É um dos elementos fundamentais do pipeline. Sua principal função é executar scripts que contém comandos de Linux, Node, Maven, depende do objetivo do job.

Construindo um pipeline com Gitlab

Para começar, precisamos criar um arquivo específico na raiz do seu repositório, chamado: .gitlab-ci.yml

O Gitlab reconhece esse arquivo e executa automaticamente qualquer pipeline configurado nele assim que uma ação específica acontece, como por exemplo um merge na branch master.

É neste arquivo que vamos descrever todo nosso pipeline e diferentes estratégias para diferentes branches, dependendo do seu contexto. É complicado mostrar um exemplo real, pois o pipeline é construído de forma particular ao seu código, projeto, estratégias, etc… então vou mostrar um exemplo simples da Digital Ocean (veja referências).

Arquivo .gitlab-ci.yml:

image: node:latest

stages:
  - build
  - test

cache:
  paths:
    - node_modules/

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/

test_with_lab:
  stage: test
  script: npm test
Enter fullscreen mode Exit fullscreen mode

Neste simples pipeline temos:

  • A definição global de uma image do tipo “node:latest” que será usado por todos os jobs que não especificarem uma imagem.
  • Dois estágios, sendo eles “build” e “test”
  • Realizaremos cache do diretório node_modules, porque pode ser necessário em outro job
  • Temos o job install_dependencies que vai executar no stage de build. Seu script possui um único comando “npm install” que gera o artefato node_modules
  • Temos um segundo job test_with_lab que vai executar no stage de “test” cujo script possui apenas o comando “npm test”
  • Como neste exemplo não foi especificado onde esses jobs vão executar, por exemplo “only: master”, então basta realizar um commit de teste e o pipeline começa a executar conforme imagem abaixo: Exemplo de pipeline executando no Gitlab

Conclusão

Chegamos ao final deste overview de Gitlab, a ideia realmente não era aprofundar, mas introduzir conceitos de CI/CD, exemplificar com o Gitlab e mostrar as vantagens de utilizar essas práticas que hoje já são bem difundidas e utilizadas no mercado.
Espero ter contribuído e qualquer dúvida, crítica ou sugestão, fiquem a vontade para deixar nos comentários.

Referências

https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd
https://www.linkedin.com/feed/update/urn:li:activity:7026552798615941120/
https://docs.gitlab.com/ee/ci/introduction/
https://www.digitalocean.com/community/tutorials/como-configurar-pipelines-de-integracao-continua-com-o-gitlab-ci-no-ubuntu-16-04-pt

Oldest comments (0)