(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