O GitLab CI/CD é uma das diversas ferramentas que usamos aqui na Cubos para acelerar nosso desenvolvimento e entregas. Aqui você irá conhecer um pouco mais sobre o GitLab, CI/CD e o GitLab CI/CD.

GitLab

GitLab é uma plataforma de DevOps de código aberto que oferece soluções para todo o fluxo de desenvolvimento e implantação, como repositórios Git (para versionamento de código), Wikis (para gestão de conhecimento e documentação), quadros de tarefas (similar ao Jira), monitoramento e implantação.

É possível hospedar uma versão própria do GitLab na sua empresa, dentro da sua infraestrutura utilizando a versão self-hosted, ou utilizar o SaaS GitLab.com.

Continuous Integration e Continuous Deployment (CI/CD)

Fluxo de desenvolvimento com CI/CD / Imagem: Gitlab Docs

Ao enviar código novo para um repositório Git é esperado que seja um código de qualidade e seguindo as boas práticas definidas pelo time. A etapa de Continuous Integration (integração contínua) entra para executar essas verificações automaticamente.

O que será executado nessa etapa depende da sua aplicação e linguagem. Para uma simples aplicação em JavaScript, por exemplo, nessa etapa seriam executadas as verificações do ESLint e a execução de Testes Unitários e de Integração.

Por fim, após garantir que o código está seguindo os padrões de qualidade, a etapa de Continuous Deployment (implantação contínua) cuida da implantação automatizada do código: empacotar o código e colocar em execução em um servidor.

GitLab CI/CD

Para facilitar esse processo, o GitLab CI/CD surge como ferramenta integrada ao GitLab onde é possível descrever todos os passos de integração e implantação contínua em um arquivo dentro do repositório. Este arquivo é o .gitlab-ci.yml.

Trata-se de um arquivo no formato YAML onde são definidos estágios e tarefas para execução das etapas necessárias da integração e implantação contínua.

A primeira parte a se pensar são os estágios (stages) das tarefas (jobs). Os estágios são grupos de tarefas e são executados sequencialmente. São grupos de ações que precisam ser executadas para executar as verificações de código e por fim, a implantação.

Como exemplo de um site React, podemos definir um estágio de checagem do código, um para o build e outro para o deploy. Os estágios são definidos no bloco stages do arquivo .gitlab-ci.yml:

stages:
  - check
  - build
  - deploy

Definidos os estágios, a próxima etapa é definir as tarefas para cada um. Ainda seguindo o mesmo exemplo, no estágio de checagem de código podemos executar o ESLint e os testes. Cada tarefa possui seu próprio bloco no arquivo YAML, também é necessário definir quais comandos serão executados (bloco script). Por exemplo:

ESLint:
  stage: check
  script:
    - npm run eslint

Test:
  stage: check
  script:
    - npm test

Assim, para cada commit feito no repositório, o GitLab CI/CD iniciará uma Pipeline, onde serão executados os estágios e tarefas definidos no .gitlab-ci.yml.

Execução da Pipeline com estágios e tarefas exemplificados acima

O arquivo de definição ainda conta com outros diversos recursos mais avançados e a sua especificação completa pode ser encontrada aqui.

Quer fazer um projeto com o GitLab? Conheça Cubos DevOps