GitLab – Como instalar o GitLab e configurar um Runner para CI/CD

Esse post vou abordar como realizar a instalação e configurações basicas do GitLab - CE, também como criar os executores de CI/CD para seu ambiente e mostrarei um caso prático de execução de uma pipeline. Não entrarei em detalhes sobre todas as coisas, pois a intenção é de uma documentação simples dos processos de instalação dessa ferramenta incrível;

É necessário para a execução do processo como um todo um ambiente linux com o Docker e docker-compose préviamente instalado, não vou abordar como realizar esses procedimentos nesse tutorial.

A instalação do Gitlab - CE é relativamente simples quando utilizamos o Docker, a seguir segue o compose já com algumas configurações de mapeamento de volumes e configuração de endereços, note que o IP representado no arquivo é da maquina local que estou realizando a configuração, caso tenha um domínio próprio basta subistituir, caso não tenha insira seu IP local.

Arquivo docker-compose.yml:

version: '3'
services:
    web:
      image: 'gitlab/gitlab-ce:latest'
      container_name: gitlab
      restart: always
      hostname: '172.16.231.130'
      environment:
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://172.16.231.130:8089'
      ports:
        - '8089:8089'
      volumes:
        - '/opt/gitlab/config:/etc/gitlab'
        - '/opt/gitlab/logs:/var/log/gitlab'
        - '/opt/gitlab/data:/var/opt/gitlab'

Insira o arquivo docker-compose.ymlem uma pasta de sua preferência e execute o seguinte comando para iniciar a instalação:

gitlab@helpdev:/opt/gitlab$ docker-compose up -d

Nesse momento ele vai baixar a imagem e iniciar o serviço no docker, você pode verificar o status da inicialização pelo seguinte comando:

gitlab@helpdev:~$ docker ps -a

Quando a coluna STATUS estiver com o valor (health: starting) ele está sendo iniciado ainda, quando ele terminar de subir o serviço ele ficará com o STATUS: (helth: helthy)

docker ps -a

Agora que o serviço está rodando podemos acessar o endereço no navegador: http://172.16.231.130:8089 (no caso lembre-se de substituir pelo seu IP). A primeira tela que acessaremos é da troca de senha, faça-o

Para acessarmos seu painel utilize o usuário: root com a senha que você acabou de gerar;

A primeira parte desse post está concluida, como disse não vou entrar em detalhes, então, não vou mostrar como realizar o procedimento de criação de projetos, usuários ou demais configurações desse genêro dentro da plataforma.

Agora vou mostrar como criar os executores de CI/CD da plataforma, para continuarmos no mesmo padrão os executores serão criados como containers Docker. Os runners podem ser configurados, por projeto, por grupo de projetos, ou compartilhados para todos, nesse momento vou mostrar como criar um e associa-lo para todos, porém o conceito é o mesmo, em cada projeto ou grupo, temos as mesmas configurações, basta realizarmos as mesmas operações dentro do escopo desejado.

Primeiramente vamos logar com o usuário admin (ou root) do sistema e acessar a seguinte pagina: http://172.16.231.130:8089/admin/runners

Nessa pagina é exibido os runners configurados a URL e o registration token necessário para configurar um.
Voltamos ao terminal e instalaremos o runner em dois passos, o primeiro geraremos o volume de configuração baseado no token:

gitlab@helpdev:~$ docker run --rm -t -i \
-v /opt/gitlab/runners/shared/config:/etc/gitlab-runner \
gitlab/gitlab-runner register

Ao executar o comando ele vai pedir diversas informações:

1 – Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

Insira a `URL` informada pela página

2 – Please enter the gitlab-ci token for this runner:

Insira o `registration token`informado pela página

3 – Please enter the gitlab-ci tags for this runner (comma separated):

Entre com as `tags` separadas por vírgula, essas `tags` são úteis na configuração dos `pipelines`, aonde posso informar a `tag` de qual `runner` será executado o processo.

4 – Please enter the executor: docker-ssh, parallels, shell, virtualbox, kubernetes, custom, docker, docker-ssh+machine, ssh, docker+machine:

Informe `docker` porém caso queira outro executor, veja mais detalhes em: `https://docs.gitlab.com/runner/executors/README.html`

5 – Please enter the default Docker image (e.g. ruby:2.6):

Informe a base da sua imagem `docker`, caso não tenha um especifico recomendo informar: `alpine:latest`

Agora com o volume criado, vamos executar a criação do container associado ao mesmo volume:

gitlab@helpdev:~$ docker run -d --name gitlab-runner-shared --restart always \
-v /opt/gitlab/runners/shared/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest

Agora que o runner-shared está criado, ele vai aparecer na página do GitLab da seguinte maneira:

Note que ele está com uma situação de locked pois como não criamos à um projeto específico ele não está associado a nenhum projeto, como a intenção desse post é mostrar de uma forma geral, vamos desbloquea-lo para qualquer projeto e retirar a necessidade de ter uma tag associada na pipeline para ele executar.

Clique no icone de editar, e na tela de configuração do runner desmarque a opção Lock to current projects e marque a opção Run untagged jobs

A segunda parte desse post está concluida, já temos o GitLab com um runner configurado e funcionando para executar as pipelines de CI/CD. Suponhamos que tenhamos um projeto em Java, iremos criar um script para acompanhar a execução de um build e test a cada commit.

O arquivo .gitlab-ci.yml deve ser armazenado na raiz do projeto:

image: maven:latest

cache:
  paths:
    - .m2/repository/
    - target/

build:
  stage: build
  script:
    - mvn compile

test:
  stage: test
  script:
    - mvn test

Essa pipeline é executada em dois estágios, build e test, normalmente temos o deploy para contemplar a função de Continuous delivery (CD) porém não vou abordar esse passo nesse post (Mais sobre esse assunto em: https://docs.gitlab.com/ee/ci/examples/artifactory_and_gitlab/index.html)

A cada commit realizado será criada uma pipeline no GitLab para a verificação do commit; Podemos acessar o projeto e visualizar a pipeline gerada e acompanhar seus jobs individualmente.

pipelines

Importante informar que caso um dos estagios falhe, o outro não é executado, apresentando erro:

Agora já temos todo um ambiente pronto para desenvolvimento com qualidade, agora basta adequarmos a nossa necessidade, todos esses procedimentos foram realizados para mostrar de uma forma bem simples o processo de instalação e configuração, porém o GitLab te da uma documentação muito mais completa e detalhada de tudo isso, recomendo visualizar e estuda-la.

Segue alguns links úteis:

https://docs.gitlab.com/runner/install/docker.html
https://docs.gitlab.com/runner/register/index.html
https://docs.gitlab.com/runner/executors/README.html
https://docs.gitlab.com/ee/ci/examples/artifactory_and_gitlab/index.html

Help DEV – Analista desenvolvedor Java / Android https://helpdev.com.br/zarelli

GitLab – Como instalar o GitLab e configurar um Runner para CI/CD

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Rolar para o topo