Primeiras aulas do curso Gitlab CI e Docker: Pipeline de entrega contínua

Gitlab CI e Docker: Pipeline de entrega contínua

Conhecendo gitlab CI:CD - Introdução

Sou o João e vou te acompanhar nesse curso de Integração Contínua e Entrega Contínua com GitLab Nesse curso estudaremos tudo a respeito de uma Pipeline, como ela funciona e quais são as suas etapas.

Ao final, teremos uma Pipeline por completo e vamos buildar um projeto. Executaremos os testes unitários, e quando o projeto passar no teste, realizaremos o deploy no ambiente externo.

Na sequência, notificaremos todos os envolvidos, seja porque tudo correu bem ou porque algo deu errado.

Dentro da Pipeline, abordaremos o que são os stages, os jobs, e quais serviços podemos subir dentro de um job. Veremos também variáveis de ambiente, possíveis de definir em momento de execução.

Aprenderemos o que é um runner dentro do GitLab, quem são os executores e como criamos nosso próprio executor. Além disso, vamos saber como executar uma notificação dentro da Pipeline, ou seja, quando queremos que esses scripts sejam executados, como notificações quando ocorrem acertos ou falhas.

Aguardo você no próximo vídeo.

Conhecendo gitlab CI:CD - O que é um pipeline?

Temos um desafio pela frente. Estamos trabalhando na equipe interna de desenvolvimento de software do Bytebank, e percebemos que temos sempre os mesmos problemas em todos os projetos que desenvolvemos.

São problemas de features que colocamos em ambiente de produção, e ao chegar na produção, quebram. Ou aquela famosa frase "Na minha máquina funciona", porque o desenvolvedor testa na própria máquina, mas quando coloca na produção, não funciona.

Temos alguns gargalos entre o desenvolvimento e o deploy dessa aplicação no ambiente externo, de homologação, com alguma demora. E devido a pressão para as entregas, com a cobrança dos clientes, acabamos queimando algumas etapas do desenvolvimento. Por exemplo, desenvolvemos, não rodamos o teste unitário e publicamos isso em produção.

Por todas essas razões estamos recebendo uma forte cobrança da gerência e precisamos melhorar nosso processo. Para isso, vamos implementar a Integração Contínua e Entrega Contínua.

Não pularemos mais essas etapas, garantindo que todas elas sejam respeitadas. e nossa intenção é que tenhamos o maior gargalo o possível, ou seja, não depender de nenhuma outra área para realizar um teste unitário ou publicar no ambiente de homologação.

A partir do momento que desenvolvermos, fizermos o commit no versionador (no caso, usamos o Git) e dermos o push, automaticamente vamos startar uma Pipeline que vai testar nossa aplicação. Se ela for testada com sucesso, vamos promovê-la para um ambiente externo.

Uma Pipeline dentro da Integração Contínua basicamente é onde todos os processos acontecem. Vamos pensar numa linha em que temos as marcações, que chamaremos de jobs. Esses jobs serão os passos que queremos que a Pipeline execute.

No Bytebank nós desenvolvemos, rodamos o teste unitário. Se a aplicação passar nos testes, ela vai para o ambiente de homologação. Passando pela homologação, vai para a produção. Colocaremos esses passos na Pipeline e a partir do momento que versionarmos, ela será startada e vai rodar um teste unitário. Passando no teste, o próximo passo será realizar o deploy.

Para o curso, usaremos a ferramenta chamada GitLab. Procurando no Google por "GitLab", podemos acessar o site gitlab.com e utilizaremos ele para versionar nosso código e usar a Integração Contínua. Se ainda não tiver uma conta, será necessário criá-la no site.

Usaremos a versão "community edition", gratuita, mas conseguiremos versionar nossos projetos e eles ficarão privados. Caso queira uma conta Premium, será possível fazer o upgrade posteriormente, mas a versão free já atende nossas necessidades,

Vamos logar na conta e criar um projeto novo dentro do GitLab. Quando entrarmos, será mostrada a área de projetos para quem já possui uma conta e projetos. Se esse é o primeiro acesso, haverá o botão "New Project" do lado direito da tela. Geraremos um projeto do zero chamado "Bytebank".

Deixaremos ele projeto, para mais ninguém acessar, e clicaremos em "Create project". Se quisermos trazer um projeto de um outro repositório, vamos conseguir com os comandos mostrados conforme descemos a barra de rolagem na página.

Além do versionador do GitLab, vamos ao menu na lateral esquerda da tela e utilizaremos a opção "CI/CD" e estudaremos o que é uma Pipeline, o que são os Jobs e como colocamos isso nos "Schedules", ou uma agenda para rodar num momento escolhido.

No próximo vídeo veremos como criar a Pipeline dentro de um projeto.

Conhecendo gitlab CI:CD - Hello World com um pipeline

Agora que temos nosso projeto criado, ainda em branco, vamos iniciar nossa Pipeline.

Dentro do GitLab, o arquivo que representa a configuração da Pipeline é o "gitlab-ci". Clicaremos em "New file" e criaremos um novo arquivo que ficará oculto dentro do nosso projeto. Ele se chamará ".gitlab-ci.yml". Dentro dele haverá todos os jobs, serviços que a Pipeline executará.

Dentro desse arquivo criaremos nosso primeiro serviço, job. Abaixo dele, colocaremos um script:. Nosso job poderá ter tantos scripts quanto quisermos. Abaixo de script: colocaremos um traço -. Na sequência colocaremos nosso script, - echo "hello world", ou seja, o job não fará mais do que um "hello world".

job:
    script:
    - echo "hello world"

Já temos o conteúdo do script, colocaremos um comentário e faremos o commit e o push dentro do repositório. Como já falamos anteriormente, a Pipeline é startada sempre que fazemos um commit e um push dentro do repositório do projeto.

Então, em "Commit message", escreveremos "iniciando com gitlab-ci" e clicaremos em "Commit changes".Então criamos nosso arquivo, commitamos e demos o push. Aparecerá para nós um ícone de lua que significa que nossa Pipeline foi startada.

Se voltarmos ao menu "CI/CD" que fica na lateral e clicarmos nesse menu, já teremos uma Pipeline, então automaticamente clicando nessa opção, caímos no sub-menu "Pipelines". O ícone mostrará a mensagem "running", indicando que a Pipeline está sendo executada.

Clicando sobre "running" teremos a situação da nossa Pipeline, que atualmente tem um job. Clicando dentro dele, conseguimos saber o que ele está fazendo, e se trata do nosso "hello world". Ao final, veremos uma mensagem de sucesso, então tudo ocorreu corretamente na Pipeline.

Se voltarmos no menu "CI/CD" e clicarmos novamente, o status do job será "passed", passou. Portanto, dentro da Pipeline, se todos os processos forem executados com sucesso, o status do job será a mensagem "passed" em verde.

Colocaremos ainda dentro da Pipeline o build do nosso projeto e os testes unitários. Caso os testes unitários passem, vamos promover isso para o ambiente. O interessante do funcionamento da Pipeline será garantir que todos os passos sejam respeitados.

job:
     script:
    - echo "hello world"

Outro detalhe é que o arquivo que configuramos a Pipeline tem uma indentação par. Vamos quebrar a indentação do job propositalmente e comentar como "quebrando indentacao". Vamos commitar e dar um push, voltar ao menu "CI/CD" e veremos que agora o status aparecerá como "failed" porque nosso arquivo estará inválido.

Então, teremos que tomar cuidado com a indentação do arquivo, que deve ser sempre par, com dois espaços. Teremos sempre o job, e para adicionar os filhos dele abaixo, precisaremos colocar dois espaços na frente.

Mas há outra maneira de testar esse arquivo antes de commitar e dar o push, até para evitar que a Pipeline quebre. Vamos copiar o conteúdo do arquivo que acabamos de criar, ir para o menu "CI/CD" e clicar no botão "CI LInt" no canto direito da tela.

Abriremos uma página para checar o conteúdo de "gitlab-ci". Então, antes de commitar, vamos validar para saber se tudo funcionará corretamente. Colaremos o conteúdo com a indentação incorreta neste campo e clicaremos em "Validate". Receberemos a resposta de que o arquivo não é válido, pois erramos a sintaxe.

Vamos arrumar a indentação, deixando as linhas com espaços pares e validaremos novamente, e assim teremos o resultado de que a sintaxe está correta e ele executará um job com o nome de job. O que esse job fará, será echo "hello world".

Sobre o curso Gitlab CI e Docker: Pipeline de entrega contínua

O curso Gitlab CI e Docker: Pipeline de entrega contínua possui 151 minutos de vídeos, em um total de 40 atividades. Gostou? Conheça nossos outros cursos de Builds em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Builds acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas