Skip to content

Instantly share code, notes, and snippets.

@gbzarelli
Last active November 19, 2024 16:20
Show Gist options
  • Save gbzarelli/9458d23f10deccf7442aaef7211f1713 to your computer and use it in GitHub Desktop.
Save gbzarelli/9458d23f10deccf7442aaef7211f1713 to your computer and use it in GitHub Desktop.
GitLab - Como instalar o GitLab e configurar um Runner para CI/CD #helpdev-blog

(artigo recuperado do helpdev.com.br - criado em 08/2019)

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.yml em 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)

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 tokeninformado 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.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment