Como Usar o GitLab para Execução Simultânea de Trabalhos (Parte 1)

Vamos falar sobre GitLab.

O plataforma baseada na web para DevOps, GitLab, oferece um conjunto completo de ferramentas para o desenvolvimento de software, controle de versão, integração contínua, entrega (CI/CD) e comunicação. Baseado no Git, o bem conhecido sistema de controle de versão distribuído, fornece uma solução de gerenciamento de repositório centralizado.

O GitLab permite que equipes gerenciem eficientemente seus projetos de desenvolvimento de software, rastreiem mudanças e comuniquem sobre código. Ele oferece ferramentas para gerenciamento de projetos, bem como capacidades como repositórios de código, rastreamento de problemas, revisões de código, integração contínua e implantação.

Principais Características do GitLab

  1. O sistema de controle de versão do GitLab, que utiliza o Git como base, permite que desenvolvedores rastreiem mudanças de forma eficiente, criem branches e gerenciem merges.
  2. O GitLab oferece um sistema de gerenciamento de repositório centralizado que permite aos programadores armazenar, organizar e gerenciar eficazmente sua base de código.
  3. Rastreamento de Problemas: Usando o sistema integrado de rastreamento de problemas do GitLab, equipes podem criar e rastrear problemas, atribuí-los a membros da equipe e monitorar seu progresso.
  4. O GitLab fornece uma poderosa pipeline CI/CD que automatiza os processos de compilação, teste e implantação. Permite que equipes mesclem mudanças de código instantaneamente, realizem testes automatizados e implantem aplicativos.
  5. Ferramentas de colaboração, como revisões de código, comentários e conversas embutidas, facilitam a cooperação entre os membros da equipe e a contribuição de ideias sobre mudanças no código.
  6. O GitLab oferece ferramentas de gerenciamento de projetos, como marcos, quadros, Kanban e quadros ágeis, permitindo que as equipes planejem e acompanhem com sucesso o progresso de seus projetos.
  7. Segurança e Controle de Acesso: Para garantir a integridade do código e proteger contra possíveis preocupações de segurança, o GitLab oferece várias capacidades de segurança, como controle de acesso baseado em função, aprovações de solicitação de mesclagem e gerenciamento de vulnerabilidades.

Figura 1 Arquitetura de Pipeline CICD do GitLab

O GitLab está disponível em várias edições, desde uma edição gratuita comunitária até uma versão premium com mais funcionalidades e opções de suporte. Pode ser utilizado como serviço baseado em nuvem através do GitLab.com ou hospedado localmente.

Integração Contínua e Entrega Contínua (CI/CD) do GitLab

O GitLab CI/CD é uma plataforma de integração contínua e entrega contínua robusta oferecida pelo GitLab, uma ferramenta de gerenciamento de repositório Git baseada na web. As equipes podem automatizar todos os passos do ciclo de vida do desenvolvimento de software com o GitLab CI/CD, desde o commit de código até a implantação, usando um conjunto de pipelines.

Uma visão geral do processo CI/CD do GitLab é fornecida abaixo:

  • Configuração do GitLab: Antes de começar, você deve ter um repositório GitLab configurado e pronto. Você pode configurar sua própria instância autohospedada do GitLab ou usar a versão hospedada na nuvem.
  • .gitlab-ci.yml: O cérebro por trás do GitLab CI/CD está incluído no arquivo .gitlab-ci.yml. Este arquivo, que descreve o pipeline CI/CD, pode ser encontrado na raiz do repositório do seu projeto. É composto por várias etapas, tarefas e instruções que definem como seu código deve ser criado, examinado e lançado. A linguagem usada para escrever é YAML.
  • Pipelines: No GitLab CI/CD, um pipeline é uma coleção de estágios e trabalhos que especificam as ações a serem tomadas para um determinado ramo ou tag no seu repositório. Você pode automatizar os processos de teste e implantação, fazendo com que cada pipeline inicie quando um novo commit ou merge request ocorre.
  • Trabalhos e Estágios: Os estágios refletem as etapas do pipeline, incluindo build, teste e deploy. Você especifica um ou mais trabalhos—unidades individuais de trabalho—dentro de cada nível. Os trabalhos podem operar em runners separados (como máquinas virtuais, contêineres ou pods do Kubernetes), de forma concorrente ou sequencial.
  • Runners: O GitLab CI/CD usa runners para executar as tarefas listadas em seu pipeline. O GitLab oferece runners compartilhados e runners personalizados que você pode configurar em sua própria infraestrutura. Suas compilações e testes sempre serão executados porque os GitLab Runners monitoram novos trabalhos e os executam em ambientes seguros e isolados.
  • Artefatos e Relatórios de Trabalho: O GitLab CI/CD permite que você salve artefatos produzidos dentro do pipeline, como resultados de cobertura de código, relatórios de teste ou binários criados. Você pode baixar esses artefatos e usá-los para implantação ou investigação adicional.
  • Integrações e Implantação: O GitLab CI/CD oferece inúmeras integrações para implantar seu código em vários ambientes, incluindo clusters Kubernetes, infraestrutura em nuvem como Azure, AWS ou Google Cloud, ou até mesmo servidores personalizados. Temos a opção de criar seus próprios scripts de implantação ou usar modelos de implantação predefinidos do GitLab.
  • Monitoramento e Feedback: O GitLab CI/CD fornece acesso a informações sobre o status e o desenvolvimento de seus pipelines através da interface do usuário do GitLab. Podemos verificar logs, acompanhar como cada tarefa está sendo executada e receber notificações quando uma execução de pipeline é bem-sucedida ou falha.

O GitLab CI/CD inclui uma variedade de funcionalidades, como cache, variáveis de ambiente, gerenciamento de segredos e muito mais, permitindo que você personalize e melhore seus fluxos de trabalho CI/CD de acordo com suas necessidades.

No geral, o GitLab CI/CD simplifica o processo de criação, teste e implantação de software, permitindo que equipes desenvolvam aplicativos de alta qualidade de forma mais rápida e eficiente.

GitLab CI: Processamento Paralelo

Para um desenvolvedor, poucas coisas são mais irritantes do que ter que esperar muito tempo para que tudo termine após enviar um novo código. Este manual demonstra passo a passo como o processamento paralelo pode reduzir significativamente os tempos de implantação.

A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.


Figura 2 Execução Simultânea de Tarefas no GitLab

Executar a automação de implantação paralela com o GitLab CI/CD é bastante simples, mas existem alguns parâmetros de configuração que você precisa estar ciente. Neste tutorial, abordaremos todos os passos para configurar a execução paralela para acelerar as implantações e como comunicar os resultados à equipe de SRE. Então, vamos começar!

Figura 3 GitLab – Implantações Paralelas com Regiões

Fluxo de Trabalho de Implantações Paralelas do GitLab

Para melhorar os tempos de execução, devemos executar várias tarefas de implantação simultaneamente. Em cada instância de tarefa de implantação, devemos então executar determinadas instruções, como criar várias seções de um site, integrar servidores web e fazer atualizações de configuração.

Temos mais de XX tarefas nos pipelines que utilizamos para construir e implantar nosso aplicativo GitLab. Nem todas essas posições são iguais. Algumas são operações rápidas que levam apenas alguns segundos para serem concluídas, enquanto outras são processos longos que devem ser cuidadosamente otimizados. As alterações feitas por membros da equipe e contribuintes da comunidade maior são representadas por cada um desses pipelines. Para garantir que a atualização funcione como pretendido e seja integrada ao restante do produto, todos os contribuintes do aplicativo/projeto devem aguardar a conclusão dos pipelines. Para manter a produtividade de nossas equipes alta, queremos que nossos pipelines sejam concluídos o mais rapidamente possível.

Como resultado, estamos constantemente monitorando o comprimento de nossos pipelines. Por exemplo, séries bem-sucedidas de pipelines levaram aproximadamente 53,8 minutos para serem concluídas na versão anterior.

Supondo que executamos aproximadamente 100 a 200 pipelines por dia, queremos investigar se podemos otimizar nosso processo para alterar a maneira como os trabalhos de longa duração são executados.

Figura 4 GitLab – Execução Sequencial de Trabalhos

Nesta parte, você explorou a execução sequencial de trabalhos. No segundo parte desta série, você aprenderá como solucionamos trabalhos de gargalo executando-os em paralelo.

Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo